osaf/services/saf/immsv/immnd/immnd_evt.c |  18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)


Patch only for 4.3 and default(4.4).
NOT for 4.2 branch

The logic in immnd_fevs_local_checks() in immnd_evt.c is corrected
for CCB related messages to use immNotPbeWritable and not immNotWritable()
as the precheck. The former is unnecessarily strict since the intention
is to allow ongoing ccbs a period of grace to complete before sync starts,
but not allow new ccb-id's to be generated. The logic here also did not
recognize the special encoding of TRY_AGAIN needed towards the library for
CcbApply.

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
@@ -2777,11 +2777,21 @@ static SaAisErrorT immnd_fevs_local_chec
        case IMMND_EVT_A2ND_CCB_FINALIZE:
        case IMMND_EVT_A2ND_OI_CCB_AUG_INIT:
        case IMMND_EVT_A2ND_AUG_ADMO:
+               if(immModel_pbeNotWritable(cb)) {
+                       error = SA_AIS_ERR_TRY_AGAIN;
+               }
+               break;
+
        case IMMND_EVT_A2ND_CCB_APPLY:
-               if(immModel_immNotWritable(cb)) {
-                       LOG_WA("Ccb request type (%u) arrived during Sync", 
frwrd_evt.info.immnd.type);
-                       error = SA_AIS_ERR_TRY_AGAIN;
-                       /* Should in principle return ERR_LIBRARY here..*/
+               if(immModel_pbeNotWritable(cb)) {
+                       /* NO_RESOURCES is here imm internal proxy for 
TRY_AGAIN.
+                          The library code for saImmOmCcbApply will translate 
NO_RESOURCES
+                          to TRY_AGAIN towards the user. That library code 
(for ccbApply)
+                          treats TRY_AGAIN from IMMND as an indication of 
handle resurrect.
+                          So we need to take this detour to really communicate 
TRY_AGAIN 
+                          towards that particular library code. 
+                        */
+                       error = SA_AIS_ERR_NO_RESOURCES;
                }
                break;
 

------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead. 
Download for free and get started troubleshooting in minutes. 
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to