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/.htaccess
!/data/index.php !/data/index.php
!/data/web.config !/data/web.config
!/data/.setup-rebuild-hkeys-never
# iTop extensions # iTop extensions
/extensions/** /extensions/**

View File

@@ -51,6 +51,14 @@ class DOMFormatException extends Exception
*/ */
class MFCompiler 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 */ /** @var \ModelFactory */
protected $oFactory; protected $oFactory;
@@ -96,7 +104,21 @@ class MFCompiler
{ {
return $this->aLog; 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 * Compile the data model into PHP files and data structures

View File

@@ -599,11 +599,16 @@ class RunTimeEnvironment
$this->log_ok("Database structure successfully updated."); $this->log_ok("Database structure successfully updated.");
// Check (and update only if it seems needed) the hierarchical keys // Check (and update only if it seems needed) the hierarchical keys
ob_start(); if (MFCompiler::SkipRebuildHKeys()) {
MetaModel::CheckHKeys(false /* bDiagnosticsOnly */, true /* bVerbose*/, true /* bForceUpdate */); // Since in 1.2-beta the detection was buggy, let's force the rebuilding of HKeys $this->log_ok("Hierchical keys are NOT rebuilt due to the presence of the \"data/.setup-rebuild-hkeys-never\" file");
$sFeedback = ob_get_clean(); } else {
$this->log_ok("Hierchical keys rebuilt: $sFeedback"); 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 // Check (and fix) data sync configuration
ob_start(); ob_start();
MetaModel::CheckDataSources(false /*$bDiagnostics*/, true/*$bVerbose*/); MetaModel::CheckDataSources(false /*$bDiagnostics*/, true/*$bVerbose*/);