From dce60b43126dcaa38e6845ae45e09db87aa7e229 Mon Sep 17 00:00:00 2001 From: Sem Date: Tue, 17 Jul 2012 02:46:53 +0200 Subject: Refs #4643. Added unlock upgrade action. --- actions/admin/site/unlock_upgrade.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 actions/admin/site/unlock_upgrade.php (limited to 'actions') diff --git a/actions/admin/site/unlock_upgrade.php b/actions/admin/site/unlock_upgrade.php new file mode 100644 index 000000000..b73cf7033 --- /dev/null +++ b/actions/admin/site/unlock_upgrade.php @@ -0,0 +1,23 @@ +dbprefix}locked'")); + +// Invalidate query cache +if ($DB_QUERY_CACHE) { + $DB_QUERY_CACHE->clear(); + elgg_log("Query cache invalidated", 'NOTICE'); +} + +if ($is_locked) { + // @todo Move to ElggUpgradeManager::unlock() when #4682 fixed. + delete_data("drop table {$CONFIG->dbprefix}locked"); + error_log('Upgrade unlocks itself'); +} +system_message(elgg_echo('upgrade:unlock:success')); +forward(REFERER); \ No newline at end of file -- cgit v1.2.3 From ba0761b5a0fb7d5dd3c20179de0f49b1aa8e0a89 Mon Sep 17 00:00:00 2001 From: Sem Date: Wed, 5 Sep 2012 01:16:45 +0200 Subject: Moved upgrade lock/unlock functions to upgrade.php lib. --- actions/admin/site/unlock_upgrade.php | 19 +++---------- engine/lib/upgrade.php | 51 +++++++++++++++++++++++++++++++++++ upgrade.php | 35 ++---------------------- 3 files changed, 56 insertions(+), 49 deletions(-) (limited to 'actions') diff --git a/actions/admin/site/unlock_upgrade.php b/actions/admin/site/unlock_upgrade.php index b73cf7033..b625b1d26 100644 --- a/actions/admin/site/unlock_upgrade.php +++ b/actions/admin/site/unlock_upgrade.php @@ -3,21 +3,8 @@ * Unlocks the upgrade script */ -// @todo Move this in ElggUpgradeManager::isLocked() when #4682 fixed -global $CONFIG, $DB_QUERY_CACHE; - -$is_locked = count(get_data("show tables like '{$CONFIG->dbprefix}locked'")); - -// Invalidate query cache -if ($DB_QUERY_CACHE) { - $DB_QUERY_CACHE->clear(); - elgg_log("Query cache invalidated", 'NOTICE'); -} - -if ($is_locked) { - // @todo Move to ElggUpgradeManager::unlock() when #4682 fixed. - delete_data("drop table {$CONFIG->dbprefix}locked"); - error_log('Upgrade unlocks itself'); +if (_elgg_upgrade_is_locked()) { + _elgg_upgrade_unlock(); } system_message(elgg_echo('upgrade:unlock:success')); -forward(REFERER); \ No newline at end of file +forward(REFERER); diff --git a/engine/lib/upgrade.php b/engine/lib/upgrade.php index f0874a483..7f55c4cba 100644 --- a/engine/lib/upgrade.php +++ b/engine/lib/upgrade.php @@ -311,3 +311,54 @@ function elgg_upgrade_bootstrap_17_to_18() { return elgg_set_processed_upgrades($processed_upgrades); } + +/** + * Locks a mutual execution of upgrade + * + * @return bool + * @access private + */ +function _elgg_upgrade_lock() { + global $CONFIG; + + if (!_elgg_upgrade_is_locked()) { + // lock it + insert_data("create table {$CONFIG->dbprefix}locked (id INT)"); + error_log('Upgrade continue running'); + return true; + } + + error_log('Upgrade is locked'); + return false; +} + +/** + * Unlocks upgrade for new upgrade executions + * + * @access private + */ +function _elgg_upgrade_unlock() { + global $CONFIG; + delete_data("drop table {$CONFIG->dbprefix}locked"); + error_log('Upgrade unlocks itself'); +} + +/** + * Checks if upgrade is locked + * + * @return bool + * @access private + */ +function _elgg_upgrade_is_locked() { + global $CONFIG, $DB_QUERY_CACHE; + + $is_locked = count(get_data("show tables like '{$CONFIG->dbprefix}locked'")); + + // Invalidate query cache + if ($DB_QUERY_CACHE) { + $DB_QUERY_CACHE->clear(); + elgg_log("Query cache invalidated", 'NOTICE'); + } + + return $is_locked; +} diff --git a/upgrade.php b/upgrade.php index e1f3c6b9e..a58fcdc96 100644 --- a/upgrade.php +++ b/upgrade.php @@ -13,37 +13,6 @@ * @subpackage Upgrade */ -// @todo Move to ElggUpgradeManager::lock() when #4628 fixed. -function upgrade_lock() { - global $CONFIG, $DB_QUERY_CACHE; - - $is_locked = count(get_data("show tables like '{$CONFIG->dbprefix}locked'")); - - // Invalidate query cache - if ($DB_QUERY_CACHE) { - $DB_QUERY_CACHE->clear(); - elgg_log("Query cache invalidated", 'NOTICE'); - } - - if (!$is_locked) { - // lock it - insert_data("create table {$CONFIG->dbprefix}locked (id INT)"); - error_log('Upgrade continue running'); - return true; - } - - error_log('Upgrade is locked'); - return false; -} - -// @todo Move to ElggUpgradeManager::unlock() when #4682 fixed. -function upgrade_unlock() { - global $CONFIG; - delete_data("drop table {$CONFIG->dbprefix}locked"); - error_log('Upgrade unlocks itself'); -} - - // we want to know if an error occurs ini_set('display_errors', 1); @@ -53,7 +22,7 @@ require_once(dirname(__FILE__) . "/engine/start.php"); if (get_input('upgrade') == 'upgrade') { // prevent someone from running the upgrade script in parallel (see #4643) - if (!upgrade_lock()) { + if (!_elgg_upgrade_lock()) { forward(); } @@ -72,7 +41,7 @@ if (get_input('upgrade') == 'upgrade') { elgg_reset_system_cache(); // critical region has past - upgrade_unlock(); + _elgg_upgrade_unlock(); } else { // if upgrading from < 1.8.0, check for the core view 'welcome' and bail if it's found. -- cgit v1.2.3