diff --git a/core/mutex.class.inc.php b/core/mutex.class.inc.php index 5b3ed69a1..aa3c3bae3 100644 --- a/core/mutex.class.inc.php +++ b/core/mutex.class.inc.php @@ -34,7 +34,7 @@ class iTopMutex protected $bLocked; // Whether or not this instance of the Mutex is locked static protected $aAcquiredLocks = array(); // Number of instances of the Mutex, having the lock, in this page - public function __construct($sName) + public function __construct($sName, $sDBHost = null, $sDBUser = null, $sDBPwd = null) { // Compute the name of a lock for mysql // Note: the name is server-wide!!! @@ -49,7 +49,10 @@ class iTopMutex // It is a MUST to create a dedicated session each time a lock is required, because // using GET_LOCK anytime on the same session will RELEASE the current and unique session lock (known issue) $oConfig = utils::GetConfig(); - $this->InitMySQLSession($oConfig->GetDBHost(), $oConfig->GetDBUser(), $oConfig->GetDBPwd()); + $sDBHost = is_null($sDBHost) ? $oConfig->GetDBHost() : $sDBHost; + $sDBUser = is_null($sDBUser) ? $oConfig->GetDBUser() : $sDBUser; + $sDBPwd = is_null($sDBPwd) ? $oConfig->GetDBPwd() : $sDBPwd; + $this->InitMySQLSession($sDBHost, $sDBUser, $sDBPwd); } public function __destruct() diff --git a/setup/wizardsteps.class.inc.php b/setup/wizardsteps.class.inc.php index ac28466d1..cde1b10a9 100644 --- a/setup/wizardsteps.class.inc.php +++ b/setup/wizardsteps.class.inc.php @@ -26,6 +26,7 @@ require_once(APPROOT.'setup/setuputils.class.inc.php'); require_once(APPROOT.'setup/parameters.class.inc.php'); require_once(APPROOT.'setup/applicationinstaller.class.inc.php'); require_once(APPROOT.'setup/parameters.class.inc.php'); +require_once(APPROOT.'core/mutex.class.inc.php'); /** * First step of the iTop Installation Wizard: Welcome screen @@ -605,7 +606,22 @@ EOF $('input[name=upgrade_type]').bind('click change', function() { WizardUpdateButtons(); }); EOF ); - } + + $oMutex = new iTopMutex( + 'cron.'.$this->oWizard->GetParameter('db_name', '').'_'.$this->oWizard->GetParameter('db_prefix', ''), + $this->oWizard->GetParameter('db_server', ''), + $this->oWizard->GetParameter('db_user', ''), + $this->oWizard->GetParameter('db_pwd', '') + ); + if ($oMutex->TryLock()) + { + $oMutex->Unlock(); + } + else + { + $oPage->p(" An iTop CRON process is being executed on the target database. It is highly recommended to stop any iTop CRON process prior to running the setup program."); + } + } } public function CanMoveForward() @@ -1791,7 +1807,7 @@ EOF $aInstallParams = $this->BuildConfig(); $sMode = $aInstallParams['mode']; - + $sPreinstallationPhase = ''; $sDestination = ITOP_APPLICATION.(($sMode == 'install') ? ' version '.ITOP_VERSION.' is about to be installed ' : ' is about to be upgraded ');