From 71af6701d933c444d0de9cee1e614b46f4fb5f8d Mon Sep 17 00:00:00 2001 From: Satish Duggana Date: Sun, 20 Nov 2016 09:46:56 +0530 Subject: [PATCH] STORM-2205 Racecondition in getting nimbus summaries while ZK connections are reconnected. --- .../org/apache/storm/cluster/StormClusterStateImpl.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/storm-core/src/jvm/org/apache/storm/cluster/StormClusterStateImpl.java b/storm-core/src/jvm/org/apache/storm/cluster/StormClusterStateImpl.java index 972d7787e0d..2fbb6c2b0dc 100644 --- a/storm-core/src/jvm/org/apache/storm/cluster/StormClusterStateImpl.java +++ b/storm-core/src/jvm/org/apache/storm/cluster/StormClusterStateImpl.java @@ -199,8 +199,12 @@ public List nimbuses() { List nimbusIds = stateStorage.get_children(ClusterUtils.NIMBUSES_SUBTREE, false); for (String nimbusId : nimbusIds) { byte[] serialized = stateStorage.get_data(ClusterUtils.nimbusPath(nimbusId), false); - NimbusSummary nimbusSummary = ClusterUtils.maybeDeserialize(serialized, NimbusSummary.class); - nimbusSummaries.add(nimbusSummary); + // check for null which can exist because of a race condition in which nimbus nodes in zk may have been + // removed when connections are reconnected after getting children in the above line + if (serialized != null) { + NimbusSummary nimbusSummary = ClusterUtils.maybeDeserialize(serialized, NimbusSummary.class); + nimbusSummaries.add(nimbusSummary); + } } return nimbusSummaries; }