code: public void cleanupDisappearedTopology() throws Exception {
          StormClusterState clusterState = nimbusData.getStormClusterState();
  
          List<String> activeTopologies = clusterState.active_storms();
          if (activeTopologies == null) {
              return;
          }
  
          Set<String> cleanupIds = get_cleanup_ids(clusterState, activeTopologies);
          for (String sysTopology : JStormMetrics.SYS_TOPOLOGIES) {
              cleanupIds.remove(sysTopology);
          }
          for (String topologyId : cleanupIds) {
              LOG.info("Cleaning up " + topologyId);
              clusterState.try_remove_storm(topologyId);
              nimbusData.getTaskHeartbeatsCache().remove(topologyId);
              nimbusData.getTasksHeartbeat().remove(topologyId);
  
              NimbusUtils.removeTopologyTaskTimeout(nimbusData, topologyId);
  
              // delete topology files in blobstore
              List<String> deleteKeys = BlobStoreUtils.getKeyListFromId(nimbusData, topologyId);
              BlobStoreUtils.cleanup_keys(deleteKeys, nimbusData.getBlobStore(), nimbusData.getStormClusterState());
  
              // don't need to delete local dir
          }
      }
docs: cleanup the topologies which are not in ZK /topology, but in other place