Murtadha Hubail has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/964
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
---
M
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
1 file changed, 17 insertions(+), 0 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/64/964/1
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: newchange
Gerrit-Change-Id: Ie2c4a506103e0c04ec6b203253144603704e7e5c
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <[email protected]>