[
https://issues.apache.org/jira/browse/NIFI-3150?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15723595#comment-15723595
]
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_r90972151
--- Diff:
nifi-toolkit/nifi-toolkit-zookeeper-migrator/src/main/java/org/apache/nifi/toolkit/zkmigrator/ZooKeeperMigrator.java
---
@@ -284,8 +287,29 @@ 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);
+ }
+ if
(watchedEvent.getType().equals(Watcher.Event.EventType.None) &&
watchedEvent.getState().equals(Watcher.Event.KeeperState.SyncConnected)) {
+ connectionLatch.countDown();
+ }
});
+
+ final boolean connected;
+ try {
+ connected = connectionLatch.await(5, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new IOException(String.format("interrupted while waiting
for ZooKeeper connection to %s", zooKeeperEndpointConfig), e);
+ }
+
+ if (!connected) {
+ throw new IOException(String.format("unable to connect to %s,
state is %s", zooKeeperEndpointConfig, zooKeeper.getState()));
--- End diff --
I don't think it's necessary, since the migrator will exit if a connection
with ZK cannot be established, but I will add it for the sake of explicit
cleanup.
> 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)