HomeClusterLabs Projects

Fix: libcrmcommon: wait for reply from appropriate controller commands

Description

Fix: libcrmcommon: wait for reply from appropriate controller commands

ipc_controld.c:reply_expected() wrongly omitted PCMK__CONTROLD_CMD_NODES (which
hasn't been a problem because crm_node uses a mainloop instead of sync dispatch
for that) and CRM_OP_RM_NODE_CACHE (which can be sent via
ipc_client.c:pcmk_ipc_purge_node()).

Because CRM_OP_RM_NODE_CACHE gets only an ack and no further replies, we now
have to be careful not to return true from the controller's dispatch()
function, otherwise crm_node -R would wait forever for more data. That means
we have to check for whether any replies are expected, which means we have to
increment expected replies *before* sending a request (in case it's sync).

Regression introduced in 2.0.5 by ae14fa4a

Fixes T681

Details

Provenance
kgaillotAuthored on Jul 17 2023, 3:52 PM
Parents
rPa0ff4697b3cd: Merge pull request #3170 from clumens/attrd-cts
Branches
Unknown
Tags
Unknown
Tasks
Restricted Maniphest Task