Выборы лидера с куратором и смотрителем зоопарка

Я запускаю 3 экземпляра ZooKeeper, и конфигурация такова:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper1
clientPort=2181
maxClientCnxns=1000
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

Я использую код примера выбора лидера, приведенный здесь: https://git-wip-us.apache.org/repos/asf?p=curator.git;a=tree;f=curator-examples/src/main/java/leader;h=73b547eadb98995c0ccbd06a5b76d0741ffef263;hb=HEAD

Код отлично работает с TestingServer, но когда я меняю строку подключения на: "127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183", я получаю исключения:

[main-SendThread(127.0.0.1:2183)] INFO org.apache.zookeeper.ClientCnxn - Opening socket connection to server 127.0.0.1/127.0.0.1:2183. Will not attempt to authenticate using SASL (unknown error)
[main-SendThread(127.0.0.1:2183)] INFO org.apache.zookeeper.ClientCnxn - Socket connection established, initiating session, client: /127.0.0.1:56111, server: 127.0.0.1/127.0.0.1:2183
[main-SendThread(127.0.0.1:2183)] INFO org.apache.zookeeper.ClientCnxn - Session establishment complete on server 127.0.0.1/127.0.0.1:2183, sessionid = 0x3521552283c0000, negotiated timeout = 40000
[main-EventThread] INFO org.apache.curator.framework.state.ConnectionStateManager - State change: CONNECTED
[main-SendThread(127.0.0.1:2183)] INFO org.apache.zookeeper.ClientCnxn - Unable to read additional data from server sessionid 0x3521552283c0000, likely server has closed socket, closing socket connection and attempting reconnect
[main-EventThread] INFO org.apache.curator.framework.imps.EnsembleTracker - New config event received: null
[main-EventThread] ERROR org.apache.curator.framework.imps.CuratorFrameworkImpl - Background exception was not retry-able or retry gave up
java.lang.NullPointerException
    at java.io.ByteArrayInputStream.<init>(ByteArrayInputStream.java:106)
    at org.apache.curator.framework.imps.EnsembleTracker.processConfigData(EnsembleTracker.java:163)
    at org.apache.curator.framework.imps.EnsembleTracker.access$200(EnsembleTracker.java:48)
    at org.apache.curator.framework.imps.EnsembleTracker$2.processResult(EnsembleTracker.java:134)
    at org.apache.curator.framework.imps.CuratorFrameworkImpl.sendToBackgroundCallback(CuratorFrameworkImpl.java:829)
    at org.apache.curator.framework.imps.CuratorFrameworkImpl.processBackgroundOperation(CuratorFrameworkImpl.java:611)
    at org.apache.curator.framework.imps.WatcherRemovalFacade.processBackgroundOperation(WatcherRemovalFacade.java:151)
    at org.apache.curator.framework.imps.GetConfigBuilderImpl$2.processResult(GetConfigBuilderImpl.java:210)
    at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:619)
    at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:528)
[main-EventThread] INFO org.apache.curator.framework.state.ConnectionStateManager - State change: SUSPENDED

В чем может быть проблема?


person Kunal P.Bharati    schedule 06.01.2016    source источник
comment
Я использовал Curator Framework версии 3.0.0. У меня работает с версией 2.9.1. Непонятно в чем дело..   -  person Kunal P.Bharati    schedule 06.01.2016
comment
Если хотите, опубликуйте это как ошибку на странице issues.apache.org/jira/browse/CURATOR. - похоже, это новая проблема с 3.0.0   -  person Randgalt    schedule 06.01.2016
comment
@Randgalt, спасибо. Выполнено здесь: issues.apache.org/jira/browse/CURATOR-285   -  person Kunal P.Bharati    schedule 08.01.2016


Ответы (2)


Я сталкиваюсь с той же проблемой. Я думаю, что это может быть связано с Zookeeper 3.5.1 ClientCnxn. Хоть я и возвращаюсь обратно к куратору 2.6.0, все равно вижу ту же трассировку стека. Тип события GET_CONFIG отправляется без данных события.

Моя трассировка стека выглядит так:

org.apache.curator.framework.imps.CuratorFrameworkImpl: Background exception was not retry-able or retry gave up
! java.lang.NullPointerException: null
! at java.io.ByteArrayInputStream.(ByteArrayInputStream.java:106)
! at org.apache.curator.framework.imps.EnsembleTracker.processConfigData(EnsembleTracker.java:163)
! at org.apache.curator.framework.imps.EnsembleTracker.access$200(EnsembleTracker.java:48)
! at org.apache.curator.framework.imps.EnsembleTracker$2.processResult(EnsembleTracker.java:134)
! at org.apache.curator.framework.imps.CuratorFrameworkImpl.sendToBackgroundCallback(CuratorFrameworkImpl.java:829)
! at org.apache.curator.framework.imps.CuratorFrameworkImpl.processBackgroundOperation(CuratorFrameworkImpl.java:611)
! at org.apache.curator.framework.imps.WatcherRemovalFacade.processBackgroundOperation(WatcherRemovalFacade.java:151)
! at org.apache.curator.framework.imps.GetConfigBuilderImpl$2.processResult(GetConfigBuilderImpl.java:210)
! at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:619)
! at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:528)
person Guest    schedule 06.01.2016

Если использовать Zookeeper 3.5.1, то кураторские рецепты 3.2.1+ исправят эту проблему.

person Edward Lee    schedule 03.08.2017