diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/NcLifecycleCoordinator.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/NcLifecycleCoordinator.java
index 961593f..19ae171 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/NcLifecycleCoordinator.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/NcLifecycleCoordinator.java
@@ -60,7 +60,7 @@
 
     private static final Logger LOGGER = LogManager.getLogger();
     protected IClusterStateManager clusterManager;
-    protected String metadataNodeId;
+    protected volatile String metadataNodeId;
     protected Set<String> pendingStartupCompletionNodes = new HashSet<>();
     protected final ICCMessageBroker messageBroker;
     private final boolean replicationEnabled;
@@ -157,7 +157,7 @@
     }
 
     @Override
-    public void notifyMetadataNodeChange(String node) throws HyracksDataException {
+    public synchronized void notifyMetadataNodeChange(String node) throws HyracksDataException {
         if (metadataNodeId.equals(node)) {
             return;
         }
@@ -203,7 +203,7 @@
         return tasks;
     }
 
-    private void process(MetadataNodeResponseMessage response) throws HyracksDataException {
+    private synchronized void process(MetadataNodeResponseMessage response) throws HyracksDataException {
         // rebind metadata node since it might be changing
         MetadataManager.INSTANCE.rebindMetadataNode();
         clusterManager.updateMetadataNode(response.getNodeId(), response.isExported());
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
index 1b4b48e..8aec240 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
@@ -82,7 +82,8 @@
     @Override
     public synchronized boolean reserve(int datasetId) {
         if (reservedMap.containsKey(datasetId)) {
-            throw new IllegalStateException("Memory is already reserved for dataset: " + datasetId);
+            LOGGER.info("Memory is already reserved for dataset: {}", () -> datasetId);
+            return true;
         }
         final long required = getTotalSize(datasetId);
         if (!isAllocatable(required) && !allocatedMap.containsKey(datasetId)) {
diff --git a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java
index b8e3604..2a26f08 100644
--- a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java
+++ b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java
@@ -83,15 +83,7 @@
         Assert.assertEquals(memoryManager.getAvailable(), expectedBudget);
 
         // double reserve
-        boolean thrown = false;
         Assert.assertTrue(memoryManager.reserve(2));
-        try {
-            memoryManager.reserve(2);
-        } catch (IllegalStateException e) {
-            Assert.assertTrue(e.getMessage().contains("already reserved"));
-            thrown = true;
-        }
-        Assert.assertTrue(thrown);
 
         // cancel reserved
         memoryManager.cancelReserved(2);
