Improving code handling full rebuild of a cache map
Publish PHP Package / docker (push) Successful in 6s Details

This commit is contained in:
Pavel Shevaev 2025-04-18 12:32:58 +03:00
parent 83fa074f7d
commit 1b6bddd7ea
2 changed files with 19 additions and 12 deletions

View File

@ -261,6 +261,16 @@ class ConfigCacheFileMap
return $map;
}
function count() : int
{
return count($this->file2deps);
}
function exists(string $file) : bool
{
return isset($this->file2deps[$file]);
}
function getAffectedFiles(string $file) : array
{
if(!isset($this->file2deps[$file]))

View File

@ -151,7 +151,7 @@ class ConfigManager
$affected_files = $this->_getAffectedFiles($req, $added_files, $removed_files);
//NOTE: at this poine taking into account only config files
//NOTE: at this point taking into account only config files
$affected_files->filter(fn($file) => str_ends_with($file, '.conf.js'));
config_log("Affected files: {$affected_files->count()}");
@ -163,6 +163,7 @@ class ConfigManager
);
$update_result = self::_updateCache($update_params);
//let's clear internal cache once the update procedure is done
$this->cache->clear();
$this->_updateFileMap($req, $affected_files, $added_files, $removed_files);
@ -213,10 +214,9 @@ class ConfigManager
if($req->mode === ConfigUpdateMode::Force)
{
$added_files = $req->files->getAllFiles();
//let's rebuild the file map
$fs_cache_map->init($added_files);
config_log("File map init: ".count($added_files));
$fs_cache_map->init($req->files->getAllFiles());
config_log("File map init: ".$fs_cache_map->count());
}
else if($req->mode === ConfigUpdateMode::DetectChanged)
{
@ -249,10 +249,11 @@ class ConfigManager
$fs_cache_map->updateDepsForEntry($cache_entry);
}
if($affected_files->count() > 0 || $added_files || $removed_files)
if($req->mode == ConfigUpdateMode::Force ||
$affected_files->count() > 0 ||
$added_files ||
$removed_files)
{
//in case of Force map was already cleared and initialized
if($req->mode != ConfigUpdateMode::Force)
$fs_cache_map->update($added_files, $removed_files);
$this->_saveFileMap();
}
@ -296,10 +297,6 @@ class ConfigManager
foreach($affected_by_file as $dep)
$affected_files->addFile($dep, unique: true);
}
else
{
//TODO: in case config file was removed do we actually need to rebuild all configs?
}
}
}
else if($req->mode === ConfigUpdateMode::Patch)