Re: [jgroups-users] problem with cluster merge after startup user error

Questions/problems related to using JGroups <[email protected]> Fri, 6 Apr 2018 08:05:56 -0400
Newsgroups gmane.comp.java.javagroups.general
Message-ID <mailman.53465.1523016388.926.javagroups-users@lists.sourceforge.net>
>
>
> This causes some problems for us because B doesn't perform non-coordinator
>> tasks that should have happened at startup, and it could be very confusing
>> to users to try to debug why they don't have an A/B cluster and suddenly
>> they do. Also sometimes B becomes the coordinator, which could affect
>> starting other nodes. (Either way, they both have incorrect copies of the
>> cluster state shared with STATE_TRANSFER.)
>>
>> Do you have a suggested way to change our setup so that, once A and B
>> start and don't find each other, they stay that way?
>>
>
> That's kind of a strange requirement and I'm not sure I understand... You
> could dynamically remove TCPPING and/or MERGE3 from the running node and
> thus disable merging. But don't you want the 2 nodes to eventually end up
> in the same cluster?
>

In the startup case only, I'd prefer that they didn't so that the user
knows something was set incorrectly. Part of our startup is that new nodes
start, join, see that they're not the coordinator and send some info to the
coordinator, who then updates some state info and tells everyone else to
run a jChannel.getState(). If someone starts the nodes both as coordinators
and then they merge, they both have their own cluster state, missing info
from the other. We have code that runs X seconds after any view change to
catch unexpected problems like this and fix the state, but it would turn
the cluster startup into a confusing, several minute process instead of a
few seconds. It's not the end of the world, but I'd prefer some way to just
tell them "you're not doing it right" and have them fix it and restart.

(Note, once everything does reach steady state, we will have overwritten
their initial_hosts data with the correct info, so it will "just work" on
subsequent cluster starts.)

I'm guessing that anything I do to prevent startup merges would prevent
future merges also from the above, and that would be bad. Is that right?
Plan B: is there a way during a view change that I can detect that it's a
merge? Then I could do our cluster state check right away instead of X
seconds later, at least saving some time. If I could also speed up how
often the discovery request happens that could help, unless it causes other
issues.

Thanks,
Bobby

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot

_______________________________________________
javagroups-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/javagroups-users