If CCB apply (IMMND_EVT_A2ND_CCB_APPLY) gets TIMEOUT (e.g: PBE is hung during that time), here is what will be happening at IMMND and IMMA:
IMMND purges that synchronous request by doing following main jobs:
1) Attemp to abort CCB even the CCB state is in critical.
2) Remove client node from client dabase.
At IMMA, inside saImmOmCcbApply()
call, imma_proc_recover_ccb_result()
is invoked to get CCB result by sending IMMND_EVT_A2ND_RECOVER_CCB_OUTCOME
to the IMMND. After the CCB is commited, imma_proc_recover_ccb_result()
returns SA_AIS_OK to saImmOmCcbApply()
and then SA_AIS_OK to user.
Later on, when user performs any IMM call on that IMM OM handle such as saImmOmFinalize()
will result in BAD_HANDLE
as the client node has already removed in #2 above.
See syslog and imma trace from the attachment.
Diff:
Diff:
https://sourceforge.net/p/opensaf/mailman/message/36361509/
If user does recovery the handle in this case, then no functionality is impacted. But if there are choices about getting SA_AIS_OK or getting BAD_HANDLE in subsequence call,
user probably prefer to the former one if there is no consequence/issue at all.
So, change this ticket to enhancement instead.
commit ede5191f9caf41836a65acaffd648e7ac0b00590 (HEAD -> develop, origin/develop, ticket-2889)
Author: Vu Minh Nguyen vu.m.nguyen@dektech.com.au
Date: Fri Jul 27 09:37:28 2018 +0700