>From Michael Blow <mb...@apache.org>:

Michael Blow has submitted this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20391?usp=email )

Change subject: [NO ISSUE][*DB] += valid tx check, allow active setRunning to 
throw
......................................................................

[NO ISSUE][*DB] += valid tx check, allow active setRunning to throw

- user model changes: no
- storage format changes: no
- interface changes: yes

Ext-ref: MB-68573
Change-Id: Ifdf8a55ea4290257492ba021396def3dd3b204d7
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20391
Reviewed-by: Ali Alsuliman <ali.al.solai...@gmail.com>
Reviewed-by: Michael Blow <mb...@apache.org>
Tested-by: Michael Blow <mb...@apache.org>
Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
---
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveEntityEventsListener.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/RecoveryTask.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataManager.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataNode.java
6 files changed, 29 insertions(+), 2 deletions(-)

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




diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveEntityEventsListener.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveEntityEventsListener.java
index 6df2e3c..9ec1d71 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveEntityEventsListener.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveEntityEventsListener.java
@@ -522,7 +522,7 @@

     protected abstract void doResume(MetadataProvider metadataProvider) throws 
HyracksDataException;

-    protected abstract void setRunning(MetadataProvider metadataProvider, 
boolean running);
+    protected abstract void setRunning(MetadataProvider metadataProvider, 
boolean running) throws HyracksDataException;

     @Override
     public final synchronized void stop(MetadataProvider metadataProvider)
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/RecoveryTask.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/RecoveryTask.java
index 39c1125..082f805 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/RecoveryTask.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/RecoveryTask.java
@@ -118,7 +118,8 @@
         }
     }

-    protected Void doRecover(IRetryPolicy policy) throws AlgebricksException, 
InterruptedException {
+    protected Void doRecover(IRetryPolicy policy)
+            throws AlgebricksException, InterruptedException, 
HyracksDataException {
         LOGGER.log(level, "Actual Recovery task has started");
         Exception failure;
         long prevSuspendCount;
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java
index a60e53b..7120d8d 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java
@@ -1351,6 +1351,15 @@
         }
     }

+    @Override
+    public boolean isActive(TxnId txnId) throws AlgebricksException {
+        try {
+            return metadataNode.isActive(txnId);
+        } catch (RemoteException e) {
+            throw new 
MetadataException(ErrorCode.REMOTE_EXCEPTION_WHEN_CALLING_METADATA_NODE, e);
+        }
+    }
+
     private static class CCMetadataManagerImpl extends MetadataManager {
         private final MetadataProperties metadataProperties;
         private final ICcApplicationContext appCtx;
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
index 60ce38e..4bb8424 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
@@ -72,6 +72,7 @@
 import org.apache.asterix.common.api.INcApplicationContext;
 import org.apache.asterix.common.config.DatasetConfig.DatasetType;
 import org.apache.asterix.common.dataflow.LSMIndexUtil;
+import org.apache.asterix.common.exceptions.ACIDException;
 import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.common.exceptions.MetadataException;
 import org.apache.asterix.common.exceptions.NoOpWarningCollector;
@@ -1450,6 +1451,17 @@
         }
     }

+    @Override
+    public boolean isActive(TxnId txnId) {
+        // TODO(mblow): avoid using exceptions for control flow
+        try {
+            
transactionSubsystem.getTransactionManager().getTransactionContext(txnId);
+            return true;
+        } catch (ACIDException ignore) {
+            return false;
+        }
+    }
+
     public List<Function> getAllFunctions(TxnId txnId) throws 
AlgebricksException {
         return getFunctionsImpl(txnId, null);
     }
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataManager.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataManager.java
index 4ce8742..d8d37b7 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataManager.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataManager.java
@@ -26,6 +26,7 @@
 import org.apache.asterix.common.functions.FunctionSignature;
 import org.apache.asterix.common.metadata.DataverseName;
 import org.apache.asterix.common.metadata.IMetadataBootstrap;
+import org.apache.asterix.common.transactions.TxnId;
 import org.apache.asterix.external.indexing.ExternalFile;
 import org.apache.asterix.metadata.MetadataTransactionContext;
 import org.apache.asterix.metadata.entities.CompactionPolicy;
@@ -921,4 +922,6 @@
     long getMaxTxnId();

     List<Dataset> getAllDatasets(MetadataTransactionContext ctx) throws 
AlgebricksException;
+
+    boolean isActive(TxnId txnId) throws AlgebricksException;
 }
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataNode.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataNode.java
index bc6789c..da0c801 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataNode.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataNode.java
@@ -1019,4 +1019,6 @@
             throws AlgebricksException, RemoteException;

     List<Dataset> getAllDatasets(TxnId txnId) throws AlgebricksException, 
RemoteException;
+
+    boolean isActive(TxnId txnId) throws RemoteException;
 }

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20391?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: asterixdb
Gerrit-Branch: phoenix
Gerrit-Change-Id: Ifdf8a55ea4290257492ba021396def3dd3b204d7
Gerrit-Change-Number: 20391
Gerrit-PatchSet: 5
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Ali Alsuliman <ali.al.solai...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Hussain Towaileb <hussai...@gmail.com>
Gerrit-Reviewer: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Ritik Raj <ritik....@couchbase.com>

Reply via email to