[
https://issues.apache.org/jira/browse/NIFI-3150?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15723553#comment-15723553
]
ASF GitHub Bot commented on NIFI-3150:
--------------------------------------
Github user jtstorck commented on a diff in the pull request:
https://github.com/apache/nifi/pull/1301#discussion_r90969482
--- Diff:
nifi-toolkit/nifi-toolkit-zookeeper-migrator/src/main/java/org/apache/nifi/toolkit/zkmigrator/ZooKeeperMigrator.java
---
@@ -284,8 +286,40 @@ private Stat transmitNode(ZooKeeper zooKeeper,
DataStatAclNode node) {
}
private ZooKeeper getZooKeeper(ZooKeeperEndpointConfig
zooKeeperEndpointConfig, AuthMode authMode, byte[] authData) throws IOException
{
+ CountDownLatch connectionLatch = new CountDownLatch(1);
ZooKeeper zooKeeper = new
ZooKeeper(zooKeeperEndpointConfig.getConnectString(), 3000, watchedEvent -> {
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("ZooKeeper server state changed to {} in {}",
watchedEvent.getState(), zooKeeperEndpointConfig);
+ }
+ switch (watchedEvent.getType()) {
+ case None:
+ switch (watchedEvent.getState()) {
+ case SyncConnected:
+ connectionLatch.countDown();
+ break;
+ case Expired:
+ case AuthFailed:
+ case ConnectedReadOnly:
+ case SaslAuthenticated:
+ case Disconnected:
+ break;
+ }
+ }
});
+
+ final boolean connected;
+ try {
+ connected = connectionLatch.await(5, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new RuntimeException(String.format("interrupted while
waiting for ZooKeeper connection to %s", zooKeeperEndpointConfig), e);
--- End diff --
However, there are other areas in the code that throw RuntimeExceptions.
Could address those in another PR if necessary.
> ZooKeeper Migrator does not wait for connection before attempting to
> read/write to ZooKeeper
> --------------------------------------------------------------------------------------------
>
> Key: NIFI-3150
> URL: https://issues.apache.org/jira/browse/NIFI-3150
> Project: Apache NiFi
> Issue Type: Bug
> Components: Tools and Build
> Affects Versions: 1.1.0
> Reporter: Jeff Storck
> Assignee: Jeff Storck
>
> While running NiFi in a 3-node cluster, attempting to read or write ZK data
> to the ZK ensemble results in intermittent connection loss exceptions because
> the migrator is not waiting for the asynchronous connection method in ZK to
> report that the client has completely connected.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)