mirror of
https://github.com/xcat2/xcat-core.git
synced 2026-06-20 10:30:48 +00:00
f139904c3e
xcatd forks child processes to handle plugin requests. The child inherits NodeRange.pm's module-level caches (@allnodeset, %allgrphash, @grplist) with their timestamps from the parent. If the parent had populated these caches within the past 5 seconds, the child reuses stale data that does not reflect database changes committed by other requests that completed between cache population and the fork. This causes non-deterministic failures in group-definition regression tests (chdef_group, mkdef_group, rmdef_group) where lsdef -s runs noderange expansion inside the forked plugin process and hits the inherited stale cache that predates the mkdef -t group commit. Track the PID at cache-build time and treat any cache built by a different PID as expired, forcing a fresh database read in children.
xCAT is a toolkit for the deployment and administration of clusters. xCAT documentation is available at: http://xcat-docs.readthedocs.org/ xCAT is made available as open source software under the EPL license: http://www.opensource.org/licenses/eclipse-1.0.php