NIFI-259: Distinguish between unable to communicate with ZK and 'bad version' when performing 'replace' method of ZooKeeperStateProvider
Signed-off-by: Aldrin Piri <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/35d2b921 Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/35d2b921 Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/35d2b921 Branch: refs/heads/master Commit: 35d2b921ea90eb42ff09b1d77bb70fef827eb22f Parents: a931e72 Author: Mark Payne <[email protected]> Authored: Mon Feb 1 16:12:01 2016 -0500 Committer: Aldrin Piri <[email protected]> Committed: Mon Feb 1 16:29:12 2016 -0500 ---------------------------------------------------------------------- .../state/providers/zookeeper/ZooKeeperStateProvider.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/35d2b921/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/state/providers/zookeeper/ZooKeeperStateProvider.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/state/providers/zookeeper/ZooKeeperStateProvider.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/state/providers/zookeeper/ZooKeeperStateProvider.java index 239b68a..27727a7 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/state/providers/zookeeper/ZooKeeperStateProvider.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/state/providers/zookeeper/ZooKeeperStateProvider.java @@ -439,7 +439,15 @@ public class ZooKeeperStateProvider extends AbstractStateProvider { setState(newValue, (int) oldValue.getVersion(), componentId); return true; } catch (final IOException ioe) { - return false; + final Throwable cause = ioe.getCause(); + if (cause != null && cause instanceof KeeperException) { + final KeeperException ke = (KeeperException) cause; + if (Code.BADVERSION == ke.code()) { + return false; + } + } + + throw ioe; } }
