>From Michael Blow <[email protected]>:

Michael Blow has submitted this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20431?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

(cherry picked from commit ce802f827d)

Ext-ref: MB-68784
Change-Id: Ifdf8a55ea4290257492ba021396def3dd3b204d7
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20431
Integration-Tests: Jenkins <[email protected]>
Reviewed-by: Michael Blow <[email protected]>
Reviewed-by: Hussain Towaileb <[email protected]>
Tested-by: Jenkins <[email protected]>
---
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:
  Michael Blow: Looks good to me, but someone else must approve
  Hussain Towaileb: Looks good to me, approved
  Jenkins: Verified; 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 339331c..2e65722 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
@@ -520,7 +520,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 b2e6204..5fbc180 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 254c372..a646617 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
@@ -1217,6 +1217,15 @@
         INSTANCE = new NCMetadataManagerImpl(proxies, metadataNode);
     }

+    @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 f64d53f..b69b4eb 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
@@ -35,6 +35,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.functions.FunctionSignature;
@@ -1106,6 +1107,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 d08578a..9a22404 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;
@@ -901,4 +902,6 @@
             throws AlgebricksException;

     long getMaxTxnId();
+
+    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 378cf47..1a5b4b9 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
@@ -996,4 +996,6 @@

     List<FeedConnection> getFeedConnections(TxnId txnId, DataverseName 
dataverseName, String feedName)
             throws AlgebricksException, RemoteException;
+
+    boolean isActive(TxnId txnId) throws RemoteException;
 }

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20431?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: trinity
Gerrit-Change-Id: Ifdf8a55ea4290257492ba021396def3dd3b204d7
Gerrit-Change-Number: 20431
Gerrit-PatchSet: 3
Gerrit-Owner: Michael Blow <[email protected]>
Gerrit-Reviewer: Ali Alsuliman <[email protected]>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Hussain Towaileb <[email protected]>
Gerrit-Reviewer: Jenkins <[email protected]>
Gerrit-Reviewer: Michael Blow <[email protected]>

Reply via email to