That is a bug. I will write a ticket on it. /AndersBj
-----Original Message----- From: Neelakanta Reddy [mailto:[email protected]] Sent: den 23 september 2014 09:30 To: Anders Björnerstedt Cc: [email protected] Subject: Re: [PATCH 1 of 1] imm: In immnd_evt_proc_ccb_compl_rsp skip to end if PBE-OI is detached [#1096] 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
