Merge pull request #2835 from owncloud/move-maint-start
Move maintenance start to ajax call
This commit is contained in:
commit
27f7ef49e4
|
@ -5,11 +5,15 @@ require_once '../../lib/base.php';
|
||||||
|
|
||||||
if (OC::checkUpgrade(false)) {
|
if (OC::checkUpgrade(false)) {
|
||||||
\OC_DB::enableCaching(false);
|
\OC_DB::enableCaching(false);
|
||||||
|
OC_Config::setValue('maintenance', true);
|
||||||
|
$installedVersion = OC_Config::getValue('version', '0.0.0');
|
||||||
|
$currentVersion = implode('.', OC_Util::getVersion());
|
||||||
|
OC_Log::write('core', 'starting upgrade from ' . $installedVersion . ' to ' . $currentVersion, OC_Log::WARN);
|
||||||
$updateEventSource = new OC_EventSource();
|
$updateEventSource = new OC_EventSource();
|
||||||
$watcher = new UpdateWatcher($updateEventSource);
|
$watcher = new UpdateWatcher($updateEventSource);
|
||||||
OC_Hook::connect('update', 'success', $watcher, 'success');
|
OC_Hook::connect('update', 'success', $watcher, 'success');
|
||||||
OC_Hook::connect('update', 'error', $watcher, 'error');
|
OC_Hook::connect('update', 'error', $watcher, 'error');
|
||||||
OC_Hook::connect('update', 'error', $watcher, 'failure');
|
OC_Hook::connect('update', 'failure', $watcher, 'failure');
|
||||||
$watcher->success('Turned on maintenance mode');
|
$watcher->success('Turned on maintenance mode');
|
||||||
try {
|
try {
|
||||||
$result = OC_DB::updateDbFromStructure(OC::$SERVERROOT.'/db_structure.xml');
|
$result = OC_DB::updateDbFromStructure(OC::$SERVERROOT.'/db_structure.xml');
|
||||||
|
@ -99,6 +103,7 @@ class UpdateWatcher {
|
||||||
OC_Util::obEnd();
|
OC_Util::obEnd();
|
||||||
$this->eventSource->send('failure', $message);
|
$this->eventSource->send('failure', $message);
|
||||||
$this->eventSource->close();
|
$this->eventSource->close();
|
||||||
|
OC_Config::setValue('maintenance', false);
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -235,10 +235,7 @@ class OC {
|
||||||
$currentVersion = implode('.', OC_Util::getVersion());
|
$currentVersion = implode('.', OC_Util::getVersion());
|
||||||
if (version_compare($currentVersion, $installedVersion, '>')) {
|
if (version_compare($currentVersion, $installedVersion, '>')) {
|
||||||
if ($showTemplate && !OC_Config::getValue('maintenance', false)) {
|
if ($showTemplate && !OC_Config::getValue('maintenance', false)) {
|
||||||
OC_Config::setValue('maintenance', true);
|
OC_Config::setValue('theme', '');
|
||||||
OC_Log::write('core',
|
|
||||||
'starting upgrade from ' . $installedVersion . ' to ' . $currentVersion,
|
|
||||||
OC_Log::WARN);
|
|
||||||
$minimizerCSS = new OC_Minimizer_CSS();
|
$minimizerCSS = new OC_Minimizer_CSS();
|
||||||
$minimizerCSS->clearCache();
|
$minimizerCSS->clearCache();
|
||||||
$minimizerJS = new OC_Minimizer_JS();
|
$minimizerJS = new OC_Minimizer_JS();
|
||||||
|
|
|
@ -187,7 +187,7 @@ class OC_Config{
|
||||||
}
|
}
|
||||||
// Prevent others not to read the config
|
// Prevent others not to read the config
|
||||||
@chmod($filename, 0640);
|
@chmod($filename, 0640);
|
||||||
|
OC_Util::clearOpcodeCache();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,6 +50,9 @@ class OC_Connector_Sabre_MaintenancePlugin extends Sabre_DAV_ServerPlugin
|
||||||
if (OC_Config::getValue('maintenance', false)) {
|
if (OC_Config::getValue('maintenance', false)) {
|
||||||
throw new Sabre_DAV_Exception_ServiceUnavailable();
|
throw new Sabre_DAV_Exception_ServiceUnavailable();
|
||||||
}
|
}
|
||||||
|
if (OC::checkUpgrade(false)) {
|
||||||
|
throw new Sabre_DAV_Exception_ServiceUnavailable('Upgrade needed');
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
20
lib/util.php
20
lib/util.php
|
@ -832,6 +832,26 @@ class OC_Util {
|
||||||
return $theme;
|
return $theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear the opcode cache if one exists
|
||||||
|
* This is necessary for writing to the config file
|
||||||
|
* in case the opcode cache doesn't revalidate files
|
||||||
|
*/
|
||||||
|
public static function clearOpcodeCache() {
|
||||||
|
// APC
|
||||||
|
if (function_exists('apc_clear_cache')) {
|
||||||
|
apc_clear_cache();
|
||||||
|
}
|
||||||
|
// Zend Opcache
|
||||||
|
if (function_exists('accelerator_reset')) {
|
||||||
|
accelerator_reset();
|
||||||
|
}
|
||||||
|
// XCache
|
||||||
|
if (function_exists('xcache_clear_cache')) {
|
||||||
|
xcache_clear_cache(XC_TYPE_VAR, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Normalize a unicode string
|
* Normalize a unicode string
|
||||||
* @param string $value a not normalized string
|
* @param string $value a not normalized string
|
||||||
|
|
Loading…
Reference in New Issue