From 1b6bddd7ea60b29440ce058d764c45aaf4ac928a Mon Sep 17 00:00:00 2001 From: Pavel Shevaev Date: Fri, 18 Apr 2025 12:32:58 +0300 Subject: [PATCH] Improving code handling full rebuild of a cache map --- cache.inc.php | 10 ++++++++++ config.inc.php | 21 +++++++++------------ 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/cache.inc.php b/cache.inc.php index b95ced1..defa2df 100644 --- a/cache.inc.php +++ b/cache.inc.php @@ -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])) diff --git a/config.inc.php b/config.inc.php index d030495..a97e12d 100644 --- a/config.inc.php +++ b/config.inc.php @@ -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,11 +249,12 @@ 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); + $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)