>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]>
