Murtadha Hubail has submitted this change and it was merged.

Change subject: ASTERIXDB-1498: Validate DatasetLifeCycleManager State
......................................................................


ASTERIXDB-1498: Validate DatasetLifeCycleManager State

This change adds appropriate error message when trying
to access a dataset/index after the DatasetLifeCycleManager
has been stopped.

Change-Id: Ie2c4a506103e0c04ec6b203253144603704e7e5c
Reviewed-on: https://asterix-gerrit.ics.uci.edu/964
Reviewed-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Reviewed-by: Michael Blow <michael.b...@couchbase.com>
---
M 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
1 file changed, 17 insertions(+), 0 deletions(-)

Approvals:
  Michael Blow: Looks good to me, approved
  Jenkins: Looks good to me, but someone else must approve; Verified



diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
index 84317ea..f4eec05 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
@@ -63,6 +63,7 @@
     private final ILogManager logManager;
     private final LogRecord logRecord;
     private final int numPartitions;
+    private boolean stopped = false;
 
     public DatasetLifecycleManager(AsterixStorageProperties storageProperties,
             ILocalResourceRepository resourceRepository, int 
firstAvilableUserDatasetID, ILogManager logManager,
@@ -82,6 +83,7 @@
 
     @Override
     public synchronized IIndex getIndex(String resourcePath) throws 
HyracksDataException {
+        validateDatasetLifecycleManagerState();
         int datasetID = getDIDfromResourcePath(resourcePath);
         long resourceID = getResourceIDfromResourcePath(resourcePath);
         return getIndex(datasetID, resourceID);
@@ -89,6 +91,7 @@
 
     @Override
     public synchronized IIndex getIndex(int datasetID, long resourceID) throws 
HyracksDataException {
+        validateDatasetLifecycleManagerState();
         DatasetInfo dsInfo = datasetInfos.get(datasetID);
         if (dsInfo == null) {
             return null;
@@ -102,6 +105,7 @@
 
     @Override
     public synchronized void register(String resourcePath, IIndex index) 
throws HyracksDataException {
+        validateDatasetLifecycleManagerState();
         int did = getDIDfromResourcePath(resourcePath);
         long resourceID = getResourceIDfromResourcePath(resourcePath);
         DatasetInfo dsInfo = datasetInfos.get(did);
@@ -138,6 +142,7 @@
 
     @Override
     public synchronized void unregister(String resourcePath) throws 
HyracksDataException {
+        validateDatasetLifecycleManagerState();
         int did = getDIDfromResourcePath(resourcePath);
         long resourceID = getResourceIDfromResourcePath(resourcePath);
 
@@ -183,6 +188,7 @@
 
     @Override
     public synchronized void open(String resourcePath) throws 
HyracksDataException {
+        validateDatasetLifecycleManagerState();
         int did = getDIDfromResourcePath(resourcePath);
         long resourceID = getResourceIDfromResourcePath(resourcePath);
 
@@ -267,6 +273,7 @@
 
     @Override
     public synchronized void close(String resourcePath) throws 
HyracksDataException {
+        validateDatasetLifecycleManagerState();
         int did = getDIDfromResourcePath(resourcePath);
         long resourceID = getResourceIDfromResourcePath(resourcePath);
 
@@ -345,6 +352,12 @@
                 datasetOpTrackers.put(datasetID, opTracker);
             }
             return opTracker;
+        }
+    }
+
+    private void validateDatasetLifecycleManagerState() throws 
HyracksDataException {
+        if (stopped) {
+            throw new 
HyracksDataException(DatasetLifecycleManager.class.getSimpleName() + " was 
stopped.");
         }
     }
 
@@ -630,6 +643,9 @@
 
     @Override
     public synchronized void stop(boolean dumpState, OutputStream 
outputStream) throws IOException {
+        if (stopped) {
+            return;
+        }
         if (dumpState) {
             dumpState(outputStream);
         }
@@ -639,6 +655,7 @@
         datasetVirtualBufferCachesMap.clear();
         datasetOpTrackers.clear();
         datasetInfos.clear();
+        stopped = true;
     }
 
     @Override

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/964
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ie2c4a506103e0c04ec6b203253144603704e7e5c
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <hubail...@gmail.com>
Gerrit-Reviewer: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <michael.b...@couchbase.com>
Gerrit-Reviewer: Murtadha Hubail <hubail...@gmail.com>
Gerrit-Reviewer: Yingyi Bu <buyin...@gmail.com>

Reply via email to