Actually no it was not.
Now I see the problem: the negation of impl->mDying.
/AndersBj
Anders Bjornerstedt wrote:
> Hi Neel,
>
> Ok.
> The nano-optimization was actually a correction to make the patch
> effective :-)
>
> /AndersBj
>
> Neelakanta Reddy wrote:
>
>> Hi Anders,
>>
>> Just realized, there is a problem in below patch.
>>
>> The problem with the floated patch is in
>> ImmModel::discardImplementer, the value passed for reallyDiscard is
>> false for immnd_proc_imma_discard_connection which is used at the time
>> of Oifinalize . Because of this info->mDying is set to true.
>>
>>
>> The patch should have been:
>>
>>
>> diff --git a/osaf/services/saf/immsv/immnd/ImmModel.cc
>> b/osaf/services/saf/immsv/immnd/ImmModel.cc
>> --- a/osaf/services/saf/immsv/immnd/ImmModel.cc
>> +++ b/osaf/services/saf/immsv/immnd/ImmModel.cc
>> @@ -1508,6 +1508,7 @@ immModel_implIsFree(IMMND_CB *cb, const
>> if(!impl) {return SA_AIS_OK;}
>>
>> if(impl->mId == 0) {return SA_AIS_OK;}
>> + if(impl->mDying) {return SA_AIS_ERR_TRY_AGAIN;}
>>
>> return SA_AIS_ERR_EXIST;
>> }
>>
>>
>> /Neel.
>>
>>
>> On Thursday 04 September 2014 05:37 PM, Anders Bjornerstedt wrote:
>>
>>> Ack from me with the nano-optimization suggested below
>>>
>>> [email protected] wrote:
>>>
>>>> osaf/services/saf/immsv/immnd/ImmModel.cc | 1 +
>>>> 1 files changed, 1 insertions(+), 0 deletions(-)
>>>>
>>>>
>>>> At the time of OIfinalizing of the OI handle, An FEVS message is
>>>> sent to clear the implementer. A FEVs message is sent from local
>>>> IMMND to active IMMD and active IMMD broadcast the message to all
>>>> IMMND. Before the broadcast FEVS message arrived from IMMD, the AMFD
>>>> tries to set the implementer again with the same name and ERR_EXISTS
>>>> is returned.
>>>>
>>>> if the implementer is not yet discarded and marked as not-dying
>>>> (this is because the implementer set is arrived before clearing it
>>>> in IMMNDs,) then TRY_AGAIN will be returned.
>>>>
>>>> diff --git a/osaf/services/saf/immsv/immnd/ImmModel.cc
>>>> b/osaf/services/saf/immsv/immnd/ImmModel.cc
>>>> --- a/osaf/services/saf/immsv/immnd/ImmModel.cc
>>>> +++ b/osaf/services/saf/immsv/immnd/ImmModel.cc
>>>> @@ -1508,6 +1508,7 @@ immModel_implIsFree(IMMND_CB *cb, const
>>>> if(!impl) {return SA_AIS_OK;}
>>>>
>>>> if(impl->mId == 0) {return SA_AIS_OK;}
>>>> + if(impl->mId && !impl->mDying) {return SA_AIS_ERR_TRY_AGAIN;
>>>>
>>> If impl->mId is zero then the previous if statement would have
>>> returned OK from the function.
>>> So this new if statement does not really need to check that impl->mId
>>> is not zero.
>>>
>>> /AndersBj
>>>
>>>> return SA_AIS_ERR_EXIST;
>>>> }
>>>>
>
>
> ------------------------------------------------------------------------------
> Slashdot TV.
> Video for Nerds. Stuff that matters.
> http://tv.slashdot.org/
> _______________________________________________
> Opensaf-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
>
------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds. Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel