HomeClusterLabs Projects

Refactor: libcib, based: Remove CIB transaction management from server

Description

Refactor: libcib, based: Remove CIB transaction management from server

This is the second of two commits that move most of the CIB transaction
logic in the client. The previous commit implements transaction
management (initialize, extend, discard) at the client side. This one
removes all transaction management from the server (pacemaker-based and
the CIB file emulated server).

The server side now consists only of committing the transaction.

Note that the transaction XML is added to the commit request as
F_CIB_CALLDATA.

This fixes a regression in the controller join sequence introduced by
5e3b3d1. As of that commit, there are multiple asynchronous calls when
building each transaction in do_dc_join_ack(). If multiple nodes were
joining in parallel, the DC may try to initiate a transaction for one
node while a transaction was already open for another node. However, the
DC's CIB client can have only one active transaction at a time.

Now, the transaction is created, sent to the CIB manager, and freed
synchronously. There is no opportunity for another node's join ack to
try to initiate a transaction in the meantime.

Also, 5e3b3d1 started using join_ack->msg as the node state update XML
by mistake. The correct node state update XML is join_ack->xml.

Fixes T690

Signed-off-by: Reid Wahl <nrwahl@protonmail.com>

Details

Provenance
nrwahl2Authored on Aug 1 2023, 1:33 PM
Parents
rPe83821a44bf3: Refactor: libcib, based: Implement transaction management in client
Branches
Unknown
Tags
Unknown
Tasks
Restricted Maniphest Task