Hi, I found ratis recently, and was exploring using it, but I can't figure out how to add a new peer to a group for some simple cases. Notably, the code typically hangs on RaftServer.setConfiguration(). If instead, I use the async version thusly:
start node1 with peers node1 start node2 with peers node2 node1.setConfigurationAsync(node1, node2) node2.setConfigurationAsync(node1, node2) I end up with two leaders. Is there a way can I force a new term/revote? While messing around with the Counter example, I tried to do the same setup, but instead I got constant exceptions about "n1@group-ABB3109A44C1 is not in [RUNNING]: current state is STARTING" and yet if I query server.getLifeCycleState() it returns "RUNNING". If I change the setup to be: start node1 with peers node1 start node2 with peers node1, node2 node1.setConfigurationAsync(node1, node2) It works! However, when I attempted: start node1 with peers node1 start node2 with peers node2, nodeDNE node1.setConfigurationAsync(node1, node2) node2.setConfigurationAsync(node1, node2) The configuration changes never make it in, and instead I get a constant cycle of trying to connect to nodeDNE and re-voting, which appears to block further configuration changes. It appears if I include too few nodes, I have too many leaders, and if I have too many nodes, I get an unrecoverable configuration. I assume I must be missing something, but am unsure what. Or, Is there a way can I force a new term and associated revote? Or, Is there a way to recover from a re-voting loop blocking reconfiguration of a node? Thanks, Patrick
