Ack from me. Best regards, Zoran
-----Original Message----- From: Anders Bjornerstedt [mailto:[email protected]] Sent: den 22 september 2014 16:53 To: [email protected] Cc: [email protected] Subject: [devel] [PATCH 1 of 1] imm: In immnd_evt_proc_ccb_compl_rsp skip to end if PBE-OI is detached [#1096] 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 ------------------------------------------------------------------------------ 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
