You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geode.apache.org by Anilkumar Gingade <ag...@pivotal.io> on 2020/04/17 22:03:33 UTC

Checking for a member is still part of distributed system

Is there a better way to know if a member has left the distributed system,
than following:
I am checking using:
"partitionedRegion.getDistributionManager().isCurrentMember(requester));"

This returns true, even though the AdvisorListener on
ParitionedRegion already processed memberDeparted() event.

I want to know if a member has left after invoking the membershipListener.

-Anil.

Re: Checking for a member is still part of distributed system

Posted by Anilkumar Gingade <ag...@pivotal.io>.
Thanks Bruce.
Will take a look at "WaitForViewInstallation".

-Anil.






On Fri, Apr 17, 2020 at 3:44 PM Anilkumar Gingade <ag...@pivotal.io>
wrote:

> Thanks Kirk.
> This is for PR clear; I ended up registering/adding a new membership
> listener on DistributionManager (DM).
>
> I was trying to take advantage of MembershipListener on PR region-advisor.
> It turns out that this gets called even before the view is updated on DM.
>
> -Anil
>
> On Fri, Apr 17, 2020 at 3:36 PM Kirk Lund <kl...@apache.org> wrote:
>
>> Any requirements for this to be a User API vs internal API?
>>
>> For internal APIs, you can register a MembershipListener on
>> DistributionManager -- at least one flavor of which returns a
>> Set<InternalDistributedMember> of current members which you could check
>> before relying on callbacks.
>>
>> On Fri, Apr 17, 2020 at 3:03 PM Anilkumar Gingade <ag...@pivotal.io>
>> wrote:
>>
>> > Is there a better way to know if a member has left the distributed
>> system,
>> > than following:
>> > I am checking using:
>> >
>> "partitionedRegion.getDistributionManager().isCurrentMember(requester));"
>> >
>> > This returns true, even though the AdvisorListener on
>> > ParitionedRegion already processed memberDeparted() event.
>> >
>> > I want to know if a member has left after invoking the
>> membershipListener.
>> >
>> > -Anil.
>> >
>>
>

Re: Checking for a member is still part of distributed system

Posted by Anilkumar Gingade <ag...@pivotal.io>.
Thanks Kirk.
This is for PR clear; I ended up registering/adding a new membership
listener on DistributionManager (DM).

I was trying to take advantage of MembershipListener on PR region-advisor.
It turns out that this gets called even before the view is updated on DM.

-Anil

On Fri, Apr 17, 2020 at 3:36 PM Kirk Lund <kl...@apache.org> wrote:

> Any requirements for this to be a User API vs internal API?
>
> For internal APIs, you can register a MembershipListener on
> DistributionManager -- at least one flavor of which returns a
> Set<InternalDistributedMember> of current members which you could check
> before relying on callbacks.
>
> On Fri, Apr 17, 2020 at 3:03 PM Anilkumar Gingade <ag...@pivotal.io>
> wrote:
>
> > Is there a better way to know if a member has left the distributed
> system,
> > than following:
> > I am checking using:
> > "partitionedRegion.getDistributionManager().isCurrentMember(requester));"
> >
> > This returns true, even though the AdvisorListener on
> > ParitionedRegion already processed memberDeparted() event.
> >
> > I want to know if a member has left after invoking the
> membershipListener.
> >
> > -Anil.
> >
>

Re: Checking for a member is still part of distributed system

Posted by Kirk Lund <kl...@apache.org>.
Any requirements for this to be a User API vs internal API?

For internal APIs, you can register a MembershipListener on
DistributionManager -- at least one flavor of which returns a
Set<InternalDistributedMember> of current members which you could check
before relying on callbacks.

On Fri, Apr 17, 2020 at 3:03 PM Anilkumar Gingade <ag...@pivotal.io>
wrote:

> Is there a better way to know if a member has left the distributed system,
> than following:
> I am checking using:
> "partitionedRegion.getDistributionManager().isCurrentMember(requester));"
>
> This returns true, even though the AdvisorListener on
> ParitionedRegion already processed memberDeparted() event.
>
> I want to know if a member has left after invoking the membershipListener.
>
> -Anil.
>

Re: Checking for a member is still part of distributed system

Posted by Bruce Schuchardt <bs...@pivotal.io>.
AdvisorListener.memberDeparted() is invoked from paths other than membership view changes, such as when a Region is destroyed.   A member may still be in the cluster (membership view) after AdvisorListener.memberDeparted() has been invoked.

If isCurrentMember() returns true then the server is still a member.  It may be in the process of being removed but until a new view is installed it's a valid member.

Across the cluster there can also be a lag between one server knowing about a departure and another server knowing about it.  If you send a message during that interval that depends on the departure being known everywhere you can use the WaitForViewInstallation message.


On 4/17/20, 3:03 PM, "Anilkumar Gingade" <ag...@pivotal.io> wrote:

    Is there a better way to know if a member has left the distributed system,
    than following:
    I am checking using:
    "partitionedRegion.getDistributionManager().isCurrentMember(requester));"
    
    This returns true, even though the AdvisorListener on
    ParitionedRegion already processed memberDeparted() event.
    
    I want to know if a member has left after invoking the membershipListener.
    
    -Anil.