Github user srdo commented on a diff in the pull request: https://github.com/apache/storm/pull/2686#discussion_r191043819 --- Diff: storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java --- @@ -828,12 +831,54 @@ private static boolean isTopologyActive(IStormClusterState state, String topoNam } } + private static void rotateTopologyCleanupMap(long deletionDelay) { + if (Time.currentTimeMillis() - topologyCleanupRotationTime > deletionDelay) { + topologyCleanupDetected.rotate(); + topologyCleanupRotationTime = Time.currentTimeMillis(); + } + } + + private static long getTopologyCleanupDetectedTime(String topologyId) { + Long firstDetectedForDeletion = topologyCleanupDetected.get(topologyId); + if (firstDetectedForDeletion == null) { + firstDetectedForDeletion = Time.currentTimeMillis(); + topologyCleanupDetected.put(topologyId, firstDetectedForDeletion); + } + return firstDetectedForDeletion; + } + + /** + * Finds blobstore entries with no matching topology. Waits NIMBUS_TOPOLOGY_BLOBSTORE_DELETION_DELAY_MSEC + * before reporting the topologies found. The delay is to prevent a race condition between when a blobstore + * is created and when the topology is submitted. It is possible the Nimbus cleanup timer task will find + * entries to delete between these two events. --- End diff -- The javadoc should mention that this method updates the rotating map I think.
---