2017-05-09 9 views
1

認証中にZookeeperに接続している(同じものが実行中である)AuthenticationProviderを作成し、このユーザーが正しいパスワードを与えていればノードをチェックインします。ZookeeperのAuthenticationProviderからZookeeperへの接続

は、基本的には、フローは次のようになめらかになります:

@Override 
public KeeperException.Code handleAuthentication(ServerCnxn cnxn, byte[] authData) { 
     final String usernameColonPassword = new String(authData); 
     String[] split = usernameColonPassword.split(":"); 
     final String username = split[0]; 
     final String password = split[1]; 

     byte[] binary = curator.getData().forPath(ATUH_NODE); // here error is thrown 
     // check is password is correct 
} 

問題は、すべての時間が私は学芸員がデータを取得するラインでKeeperErrorCode = ConnectionLossを取得していますということです。この行動の理由は何ですか?認証中に私はZookeeperにクライアントを許可している接続を許可されていませんか?フルスタックトレース以下

org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for XXX 
     at org.apache.zookeeper.KeeperException.create(KeeperException.java:99) 
     at org.apache.zookeeper.KeeperException.create(KeeperException.java:51) 
     at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045) 
     at org.apache.curator.framework.imps.ExistsBuilderImpl$2.call(ExistsBuilderImpl.java:172) 
     at org.apache.curator.framework.imps.ExistsBuilderImpl$2.call(ExistsBuilderImpl.java:161) 
     at org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:107) 
     at org.apache.curator.framework.imps.ExistsBuilderImpl.pathInForeground(ExistsBuilderImpl.java:157) 
     at org.apache.curator.framework.imps.ExistsBuilderImpl.forPath(ExistsBuilderImpl.java:148) 
     at org.apache.curator.framework.imps.ExistsBuilderImpl.forPath(ExistsBuilderImpl.java:36) 

答えて

0

私はそれは不可能でいたよう。この時点で、飼い主はある種のロック/セマフォーを持っていて、彼はこのスレッドから新しい接続を受け入れません。

関連する問題