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