3838use OC \Hooks \BasicEmitter ;
3939use OC \IntegrityCheck \Checker ;
4040use OC_App ;
41+ use OCP \BackgroundJob \IJobList ;
4142use OCP \IConfig ;
4243use OCP \ILogger ;
4344use OCP \Util ;
@@ -66,6 +67,9 @@ class Updater extends BasicEmitter {
6667 /** @var Installer */
6768 private $ installer ;
6869
70+ /** @var IJobList */
71+ private $ jobList ;
72+
6973 private $ logLevelNames = [
7074 0 => 'Debug ' ,
7175 1 => 'Info ' ,
@@ -74,20 +78,16 @@ class Updater extends BasicEmitter {
7478 4 => 'Fatal ' ,
7579 ];
7680
77- /**
78- * @param IConfig $config
79- * @param Checker $checker
80- * @param ILogger $log
81- * @param Installer $installer
82- */
8381 public function __construct (IConfig $ config ,
8482 Checker $ checker ,
85- ILogger $ log = null ,
86- Installer $ installer ) {
83+ ILogger $ log ,
84+ Installer $ installer ,
85+ IJobList $ jobList ) {
8786 $ this ->log = $ log ;
8887 $ this ->config = $ config ;
8988 $ this ->checker = $ checker ;
9089 $ this ->installer = $ installer ;
90+ $ this ->jobList = $ jobList ;
9191 }
9292
9393 /**
@@ -111,6 +111,8 @@ public function upgrade() {
111111 $ this ->emit ('\OC\Updater ' , 'maintenanceEnabled ' );
112112 }
113113
114+ $ this ->waitForCronToFinish ();
115+
114116 $ installedVersion = $ this ->config ->getSystemValue ('version ' , '0.0.0 ' );
115117 $ currentVersion = implode ('. ' , \OCP \Util::getVersion ());
116118 $ this ->log ->debug ('starting upgrade from ' . $ installedVersion . ' to ' . $ currentVersion , array ('app ' => 'core ' ));
@@ -604,6 +606,12 @@ private function logAllEvents() {
604606 });
605607
606608 }
609+ private function waitForCronToFinish () {
610+ while ($ this ->jobList ->isAnyJobRunning ()) {
611+ $ this ->emit ('\OC\Updater ' , 'waitForCronToFinish ' );
612+ sleep (5 );
613+ }
614+ }
607615
608616}
609617
0 commit comments