[NO ISSUE][*DB][CLUS] Add API to return all known nodes atomically

Change-Id: Ie6bb64e331666ef44b07034d430ba2ee563bba82
Reviewed-on: https://asterix-gerrit.ics.uci.edu/3340
Reviewed-by: Murtadha Hubail <mhubail@apache.org>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/cluster/IClusterStateManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/cluster/IClusterStateManager.java
index d0d039d..0e62851 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/cluster/IClusterStateManager.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/cluster/IClusterStateManager.java
@@ -144,6 +144,11 @@
     Set<String> getFailedNodes();
 
     /**
+     * @return the set of cluster nodes
+     */
+    Set<String> getNodes();
+
+    /**
      * Returns the IO devices configured for a Node Controller
      *
      * @param nodeId
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java
index 720b089..16a479e 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java
@@ -256,6 +256,13 @@
     }
 
     @Override
+    public synchronized Set<String> getNodes() {
+        Set<String> nodes = new HashSet<>(participantNodes);
+        nodes.addAll(failedNodes);
+        return nodes;
+    }
+
+    @Override
     public synchronized Set<String> getParticipantNodes(boolean excludePendingRemoval) {
         final Set<String> participantNodesCopy = getParticipantNodes();
         if (excludePendingRemoval) {