aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--actions/admin/site/unlock_upgrade.php19
-rw-r--r--engine/lib/upgrade.php51
-rw-r--r--upgrade.php35
3 files changed, 56 insertions, 49 deletions
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.