View Revisions: Issue #6103

Summary 0006103: Unregistration of client node at server node causes cleanup problems and registration problems when running with multiple queues
Revision 2023-11-20 18:19 by pmarzullo
Description Multiple push threads (using queues) attempt to clean up and reregister at the same time when unregistered at the target node.

The response of the client is as follows:
Each push thread gets notified that the client node is not registered anymore.
Each push thread then, at the same time, attempts to unregister/reregister the node with the server.

The multiple push threads that are told to initiate a registration need to be controlled so
that only one request at a time is made.
Revision 2023-11-08 16:40 by pmarzullo
Description Multiple problems when initial load from client to server is requested by server, and the
server cancels the initial load and unregisters the node at basically the same time.

By the way, the initial load from client to server uses multiple reload channels, each with
a different queue defined. So pushes from the client to the server occur at the same time
(based on the multiple queue definitions).

The response of the client is as follows:
Each push thread gets notified that the client node is not registered anymore.
Each push thread then, at the same time, attempts to register the node with the server.
Cleanup is executed, but there are outgoing batches from the initial load that do not
stay marked as ignored (or OK, I can't remember what status they are set to).
Processes are interrupted from across the system on the client side, but my expectation is
that the DataExtractor threads are not interrupted, and ends up attempting to process these
batches that are marked as RQ using a sym_extract_request record, but they do not exist
because they were cleaned up, so the DataExtractor gets stuck on moving ahead for the node.

So, two things need to be fixed here.
The multiple push threads that are told to initiate a registration need to be controlled so
that only one request at a time is made.

The other thing that needs to be done is to make sure to interrupt DataExtractor threads
so that they do not keep processing batches that should not be processed anymore because
of the unregistration that occurred.