2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-09-25 09:14:05 +00:00
Daniel Hilst b2432c048d fix(xcat-core): the install monitor orders a node's requests in the children
The ordering between two requests for one node was a chain of pipes: each child
held the write end and the next child for that node read the previous one to end
of file. End of file there means the previous process is gone, not that its work
finished, so a child that died released the one behind it -- and released the
wrong one, because each child waits on its immediate predecessor rather than on
the request actually in flight. The fork-failure path closed the predecessor and
served the request in line without waiting at all.

The parent now owns the order. %installm_busy names the handler serving a node,
%installm_queue holds the connections accepted for that node meanwhile, and the
next one is forked when the handler ahead of it is reaped. A handler that dies
cannot release the one behind it, and the fork-failure path has nothing to fall
back over, because it is reached only when the node has no handler.

Three other changes the same design makes possible or necessary:

  - The answer to a destiny advance now follows the advance. Every other request
    is still answered before it runs, because its result does not change what
    the node does next. Holding one node costs no other node anything now, and
    it lets the node retry an advance whose handler died -- which the old order
    could not, because "done" was already on the wire.
  - The monitor drains its handlers before it exits. Without this a restart
    orphans them into the systemd service cgroup, where anything still running
    at TimeoutStopSec is killed after its answer was already sent.
  - SIGCHLD is caught, so a handler exiting interrupts accept and the parent
    comes back to look for a connection queued for that node.

The pid file path is a variable, so the test can point the lifted routine at a
scratch file instead of the one a restarting xcatd reads to tell the running
monitor to let go of the port.

xcatd_install_monitor_concurrency.t grew the cases for all of it. Four
mutations, each caught by one assertion: forking every connection at once turns
the ordering case red; answering a destiny advance before the plugin turns the
release case red; removing the drain turns the stand-down case red; and leaving
the emptied queue entry behind turns the leak case red. The full unit suite is
194 files, 5662 tests, green.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-09-17 10:46:58 -03:00
2024-05-07 16:43:07 +02:00
2018-11-28 10:28:17 +08:00
2021-04-05 09:34:37 -04:00
2018-02-09 01:03:46 -05:00
2024-04-20 02:18:05 +02:00
2026-04-17 03:14:04 -03:00

xCAT

xCAT is a toolkit for deployment and administration of clusters of all sizes.

The xCAT sunset was only a quick eclipse

Dear xCAT Community,

The xCAT sunset has changed course. VersatusHPC has been invited to join the xCAT Consortium, and future development will move toward direct upstream contributions coordinated with the Consortium and its existing member companies.

That matters most for Enterprise Linux 10 (EL10). EL10 support is coming to xCAT, restoring a future operating-system path for sites that still rely on xCAT. This is an important change from the previous sunset guidance, where the lack of an EL10 path was one of the strongest reasons to move away from xCAT.

The xCAT Consortium continues to recommend Confluent as the long-term successor to xCAT, and that remains the Consortium position. Users planning new cluster-management deployments should evaluate Confluent and its xCAT comparison documentation.

At the same time, xCAT is no longer sunsetted. The Consortium and participating companies will continue updating xCAT while there is community and user demand for it.

In summary:

  • xCAT development is continuing upstream through the Consortium and participating companies.
  • Enterprise Linux 10 support is coming.
  • Confluent remains the Consortium-recommended successor and migration path.
  • xCAT updates will continue while there is community and user demand.

We want to thank the xCAT Consortium and community for keeping this project moving. The sun went behind the moon for a moment, but xCAT is still here.

For more information on Confluent and how to get started, please visit the Confluent: Project Page, Documentation or Confluent vs xCAT comparison.

With thanks,

The xCAT Consortium

Documentation

xCAT Documentation is hosted on Read The Docs: https://xcat-docs.readthedocs.io

Status

xCAT Version Build Status
Latest (master branch) Documentation Status
Stable (latest release) Documentation Status

Looking for older versions?

Open Source License

xCAT is made available under the EPL license: https://opensource.org/licenses/eclipse-1.0.php

Developers

Want to help? Check out the developers guide!

S
Description
No description provided
Readme EPL-1.0 236 MiB
Languages
Perl 76.7%
Shell 11.9%
JavaScript 6%
Go Template 2.4%
Python 1.5%
Other 1.1%