N°4020 - timeout on updating the hierarchical key during setup

This commit is contained in:
acognet
2021-06-21 16:34:40 +02:00
parent 0f5130611d
commit 1059befa39
3 changed files with 34 additions and 6 deletions

1
.gitignore vendored
View File

@@ -26,6 +26,7 @@ test/vendor/*
!/data/.htaccess
!/data/index.php
!/data/web.config
!/data/.setup-rebuild-hkeys-never
# iTop extensions
/extensions/**

View File

@@ -51,6 +51,14 @@ class DOMFormatException extends Exception
*/
class MFCompiler
{
/**
* Path to the "calculate hKeys" file
* If this file is present, then we don't recalculate hkeys
*
* @var string
*/
public const REBUILD_HKEYS_NEVER= APPROOT.'data/.setup-rebuild-hkeys-never';
/** @var \ModelFactory */
protected $oFactory;
@@ -97,6 +105,20 @@ class MFCompiler
return $this->aLog;
}
/**
* @return bool possible return values :
* * if flag is present true, false otherwise
*
* @uses \file_exists()
* @uses REBUILD_HKEYS_NEVER
*
* @since 2.7.5
*/
public static function SkipRebuildHKeys(): bool
{
return (file_exists(static::REBUILD_HKEYS_NEVER));
}
/**
* Compile the data model into PHP files and data structures

View File

@@ -599,10 +599,15 @@ class RunTimeEnvironment
$this->log_ok("Database structure successfully updated.");
// Check (and update only if it seems needed) the hierarchical keys
if (MFCompiler::SkipRebuildHKeys()) {
$this->log_ok("Hierchical keys are NOT rebuilt due to the presence of the \"data/.setup-rebuild-hkeys-never\" file");
} else {
ob_start();
$this->log_ok("Start of rebuilt of hierchical keys. If you have problems with this step, you can skip it by creating a \".setup-rebuild-hkeys-never\" file in data");
MetaModel::CheckHKeys(false /* bDiagnosticsOnly */, true /* bVerbose*/, true /* bForceUpdate */); // Since in 1.2-beta the detection was buggy, let's force the rebuilding of HKeys
$sFeedback = ob_get_clean();
$this->log_ok("Hierchical keys rebuilt: $sFeedback");
}
// Check (and fix) data sync configuration
ob_start();