Esempio n. 1
0
 /**
  * Create a snapshot of runnable nodes.
  *
  * @return The snapshot.
  */
 public NodeSnapshot getNodeSnapshot() {
   int nodeCount = 0;
   Map<String, NodeContainer> hostRunnables = new HashMap<String, NodeContainer>();
   for (Map.Entry<String, NodeContainer> entry : hostToRunnableNodes.entrySet()) {
     NodeContainer value = entry.getValue();
     synchronized (value) {
       if (!value.isEmpty()) {
         hostRunnables.put(entry.getKey(), value.copy());
         nodeCount += value.size();
       }
     }
   }
   Map<Node, NodeContainer> rackRunnables = new HashMap<Node, NodeContainer>();
   for (Map.Entry<Node, NodeContainer> entry : rackToRunnableNodes.entrySet()) {
     NodeContainer value = entry.getValue();
     synchronized (value) {
       if (!value.isEmpty()) {
         rackRunnables.put(entry.getKey(), value.copy());
       }
     }
   }
   return new NodeSnapshot(topologyCache, hostRunnables, rackRunnables, nodeCount);
 }