Hi AndersBj,
for the same case in immnd_evt_proc_ccb_apply IMMND is aborted.
if (oi_cl_node == NULL || oi_cl_node->mIsStale) {
LOG_WA("PBE went down");
/* TODO need to ABORT
ccb in CRITICAL. or set CRITICAL below*/
err =
SA_AIS_ERR_FAILED_OPERATION;
abort();
}
Regards,
Neel.
On Monday 22 September 2014 08:22 PM, Anders Bjornerstedt wrote:
> osaf/services/saf/immsv/immnd/immnd_evt.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
>
> The case is where a CCB has passed validation by all involved OIs. Normally
> the
> next step, if PBE is enabled, is to send the completed callbac to the PBE-OI.
> The PBE actually commits the ccb/sqlite-transaction in the completed callback.
>
> But in this case, the PBE has detached after the ccb has been built up, but
> before imm-ram can send the completed-callback to the PBE. In this case it is
> in princple ok for imm-ram to abort the CCB, since the PBE has not received
> any completed callback and can not have comitted this ccb to disk.
>
> But instead of complicating the ccb-state machine in ImmModel, just to
> optimize
> an error case, the solution has been to just drop the send of completed to PBE
> and let this error case merge with the case when the message was successfully
> sent to the PBE yet the PBE restarted before replying.
>
> The problem was that continued execution in this branch implied use of
> the client node, which was missing.
>
> The solution is to goto the end of the function.
>
> diff --git a/osaf/services/saf/immsv/immnd/immnd_evt.c
> b/osaf/services/saf/immsv/immnd/immnd_evt.c
> --- a/osaf/services/saf/immsv/immnd/immnd_evt.c
> +++ b/osaf/services/saf/immsv/immnd/immnd_evt.c
> @@ -3727,7 +3727,7 @@ static void immnd_evt_proc_ccb_compl_rsp
> if(pbeConn) {
> TRACE_5("PBE is LOCAL - send completed upcall
> for %u", evt->info.ccbUpcallRsp.ccbId);
> /* The PBE is connected at THIS node. Make the
> completed upcall.
> - If the PBE decides to commit it soes so
> immediately.
> + If the PBE decides to commit it does so
> immediately.
> It does not wait for the apply upcall.
> */
> SaImmOiHandleT implHandle =
> m_IMMSV_PACK_HANDLE(pbeConn, pbeNodeId);
> @@ -3745,6 +3745,7 @@ static void immnd_evt_proc_ccb_compl_rsp
> But actually we know here that we
> have not sent the completed call to
> the pbe. This means it should be
> easy to abort!
> */
> + goto done;
> }
>
> memset(&send_evt, '\0', sizeof(IMMSV_EVT));
------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel