У меня проблемы с выборами хозяев.Я использовал класс LeaderSelectorListenerAdapter.
Ситуация выглядит так:
Я запускаю 3 экземпляра, чтобы проверить это:
LeaderSelectorListenerAdapter listenerAdapter = new LeaderSelectorListenerAdapter() {
@Override
public void takeLeadership(CuratorFramework curatorFramework) throws Exception {
System.out.println("become Master");
while (true) {
System.out.println("lock master");
Thread.sleep(2000);
}
}
};
LeaderSelector selector = new LeaderSelector(client, path, listenerAdapter);
selector.autoRequeue();
selector.start();
Затем я останавливаюсьзоопарк, подождите немного и запустите зоопарка.Экземпляр получит событие SUSPENDED и событие RECONNECTED .Один из участников должен снова стать мастером.
В ходе моего тестирования я обнаружил, что остановка и запуск зоопарка на некоторое время разделены.Если разделенное время короткое, например, короче 1 секунды, никто не становится мастером, если время больше, кто-то становится мастером.
Как я могу решить эту проблему?Я хочу, чтобы всегда был мастер.