diff --git a/persistence/nosql/persistence/metastore/src/main/java/org/apache/polaris/persistence/nosql/metastore/NoSqlMetaStoreManager.java b/persistence/nosql/persistence/metastore/src/main/java/org/apache/polaris/persistence/nosql/metastore/NoSqlMetaStoreManager.java index 9338f2a5a4..fef4f7ec63 100644 --- a/persistence/nosql/persistence/metastore/src/main/java/org/apache/polaris/persistence/nosql/metastore/NoSqlMetaStoreManager.java +++ b/persistence/nosql/persistence/metastore/src/main/java/org/apache/polaris/persistence/nosql/metastore/NoSqlMetaStoreManager.java @@ -38,6 +38,7 @@ import java.util.function.Supplier; import org.apache.polaris.core.PolarisCallContext; import org.apache.polaris.core.auth.PolarisPrincipal; +import org.apache.polaris.core.config.FeatureConfiguration; import org.apache.polaris.core.entity.LocationBasedEntity; import org.apache.polaris.core.entity.PolarisBaseEntity; import org.apache.polaris.core.entity.PolarisEntity; @@ -555,9 +556,7 @@ public EntitiesResult loadTasks( long taskAgeTimeout = callCtx .getRealmConfig() - .getConfig( - PolarisTaskConstants.TASK_TIMEOUT_MILLIS_CONFIG, - PolarisTaskConstants.TASK_TIMEOUT_MILLIS); + .getConfig(FeatureConfiguration.POLARIS_TASK_TIMEOUT_MILLIS); return taskState == null || taskState.executor == null || clock.millis() - taskState.lastAttemptStartTime > taskAgeTimeout; diff --git a/polaris-core/src/main/java/org/apache/polaris/core/config/FeatureConfiguration.java b/polaris-core/src/main/java/org/apache/polaris/core/config/FeatureConfiguration.java index 1eb121c498..7d85705100 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/config/FeatureConfiguration.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/config/FeatureConfiguration.java @@ -249,6 +249,14 @@ public static void enforceFeatureEnabledOrThrow( .defaultValue(true) .buildFeatureConfiguration(); + public static final FeatureConfiguration POLARIS_TASK_TIMEOUT_MILLIS = + PolarisConfiguration.builder() + .key("POLARIS_TASK_TIMEOUT_MILLIS") + .description( + "Polaris task expiry timeout (milliseconds). Older unfinished tasks may not be processed.") + .defaultValue(300_000L) + .buildFeatureConfiguration(); + public static final FeatureConfiguration STORAGE_CREDENTIAL_DURATION_SECONDS = PolarisConfiguration.builder() .key("STORAGE_CREDENTIAL_DURATION_SECONDS") diff --git a/polaris-core/src/main/java/org/apache/polaris/core/entity/PolarisTaskConstants.java b/polaris-core/src/main/java/org/apache/polaris/core/entity/PolarisTaskConstants.java index 006fe5b7a5..c687d81423 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/entity/PolarisTaskConstants.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/entity/PolarisTaskConstants.java @@ -18,10 +18,22 @@ */ package org.apache.polaris.core.entity; +import org.apache.polaris.core.config.FeatureConfiguration; + /** Constants used to store task properties and configuration parameters */ public class PolarisTaskConstants { + /** + * @deprecated Use {@link FeatureConfiguration#POLARIS_TASK_TIMEOUT_MILLIS} + */ + @Deprecated(forRemoval = true) public static final long TASK_TIMEOUT_MILLIS = 300000; + + /** + * @deprecated Use {@link FeatureConfiguration#POLARIS_TASK_TIMEOUT_MILLIS} + */ + @Deprecated(forRemoval = true) public static final String TASK_TIMEOUT_MILLIS_CONFIG = "POLARIS_TASK_TIMEOUT_MILLIS"; + public static final String LAST_ATTEMPT_EXECUTOR_ID = "lastAttemptExecutorId"; public static final String LAST_ATTEMPT_START_TIME = "lastAttemptStartTime"; public static final String ATTEMPT_COUNT = "attemptCount"; diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java index 60085193ce..31fa71c479 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java @@ -1536,9 +1536,7 @@ public void deletePrincipalSecrets( long taskAgeTimeout = callCtx .getRealmConfig() - .getConfig( - PolarisTaskConstants.TASK_TIMEOUT_MILLIS_CONFIG, - PolarisTaskConstants.TASK_TIMEOUT_MILLIS); + .getConfig(FeatureConfiguration.POLARIS_TASK_TIMEOUT_MILLIS); return taskState == null || taskState.executor == null || clock.millis() - taskState.lastAttemptStartTime > taskAgeTimeout; diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java index 4589635410..59f989c96a 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java @@ -2033,9 +2033,7 @@ private PolarisEntityResolver resolveSecurableToRoleGrant( long taskAgeTimeout = callCtx .getRealmConfig() - .getConfig( - PolarisTaskConstants.TASK_TIMEOUT_MILLIS_CONFIG, - PolarisTaskConstants.TASK_TIMEOUT_MILLIS); + .getConfig(FeatureConfiguration.POLARIS_TASK_TIMEOUT_MILLIS); return taskState == null || taskState.executor == null || clock.millis() - taskState.lastAttemptStartTime > taskAgeTimeout;