The kit commands refuse RHEL 8 and later, but compared the release as a
string. "10.1" sorts before "8", so the kit commands ran on RHEL 10.
They now compare the major release as a number.
An extra file must go into its destination directory, which the import
creates with its missing parents. A file at the destination path, or at
a parent of it, must fail the import and stay as it was. A file name
with glob characters must stay literal. A failed backup of the previous
file must fail the import.
imgexport records an extra file with its destination directory. When
that directory did not exist, imgimport copied the file to the path of
the directory, so the file took the name of the directory. When a file
was at that path, imgimport replaced it.
imgimport now creates the destination directory and its missing
parents, as it does for an extra directory. A file at that path fails
the import and stays as it was. The copy runs without a shell, so a
file name with glob characters cannot match another file. A failed
backup of the previous file now fails the import.
A cached reader that saw an update before a rollback must see the
committed value after the rollback. This also holds when the rollback
goes through another table on the same handle, and after a table failed
to open on that handle.
rollback did not mark the caches of the rolled-back tables as stale. A
cached read after a write and before the rollback kept the rejected
value. Cached readers then got it for up to 5 seconds after the
rollback. MySQL and PostgreSQL share one handle among tables, so a
rollback through one table also undoes the changes of the others.
rollback now refreshes the cache of every table on its handle.
setAttribsWhere did not mark the cache of its table as stale, as the
other writes of xCAT::Table do. A cached reader, such as the one that
gives nodes their postscripts, got the previous values for up to 5
seconds after an update. setAttribsWhere now refreshes the cache after
an update.
When the configured database is MySQL, the litefile lookup of a
statelite import must quote the image column with backticks. An ALL
entry must still cover the same file of the image.
A kit command must hold the kit lock while it runs, and release it
after. It must refuse to run while another process holds the lock, also
in a process that ran a kit command before. A kit command that another
kit command runs must go on under the lock of that command.
kit.pm tested the bareword locked instead of $locked. The test was
always false, so a kit command never took the kit lock, and it ran also
while another process held the lock.
A kit command now takes the lock in one step, and fails while another
process holds it. The is_locked probe is gone, because its release
removed the lock file that another kit command could then hold. A kit
command that another kit command runs goes on under the lock of that
command.
imgimport looked up the litefile entries for all images with "image" =
'ALL'. MySQL takes a double-quoted name for a string, so the lookup
found nothing, and imgimport added entries that an ALL entry already
covered. The lookup now quotes the column the way the database needs.
When a table call died in the DB worker of xcatd, the worker sent its
error in an array. dbc_submit dies only for a scalar reference, so the
caller got the error text as the result of the call. A failed commit or
write then looked like a success to the caller.
The worker now sends the error as a scalar reference, and dbc_submit
dies with it, as the call dies without the DB worker.
Keep hardware and tuning settings in each machine. Use a common include for the repeated image and recommendation settings without changing their override semantics.
Preserve component labels, failure messages and exit policy at each caller. Give the runtime library its own package so discovery does not depend on the init package that already depends on discovery.
BitBake can return a rejected parse before its error event arrives.
Keep the log assertion open until the expected diagnostic arrives or
its deadline expires.
A local imgexport must write the bundle to a relative or absolute
destination, to a directory, and to a path with a space, and to the
current working directory without a destination. A destination in a
missing directory must be reported before a bundle is written. A remote
export must copy the bundle to its destination on the remote host and
remove its local copy.