diff options
author | Harald Musum <musum@yahooinc.com> | 2021-09-16 15:12:13 +0200 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2021-09-16 15:12:13 +0200 |
commit | 267b3bb9232a348a5387af6fa35fc6c3d44b627b (patch) | |
tree | deeb14ab3f692a03293d7b3a334fc71255793cd2 | |
parent | 511170c43b976486e43433f4b796e33e98d3519c (diff) |
Add flag for whether to use application in MaintenanceDeployment
-rw-r--r-- | flags/src/main/java/com/yahoo/vespa/flags/Flags.java | 8 | ||||
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java | 8 |
2 files changed, 15 insertions, 1 deletions
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java index 065e07a0934..5cbe92198c2 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java @@ -291,6 +291,14 @@ public class Flags { ZONE_ID, TENANT_ID ); + public static final UnboundBooleanFlag USE_APPLICATION_LOCK_IN_MAINTENANCE_DEPLOYMENT = defineFeatureFlag( + "use-application-lock-in-maintenance-deployment", true, + List.of("hmusum"), "2021-09-16", "2021-10-16", + "Whether to use application node repository lock when doing maintenance deployment.", + "Takes effect immediately", + APPLICATION_ID + ); + /** WARNING: public for testing: All flags should be defined in {@link Flags}. */ public static UnboundBooleanFlag defineFeatureFlag(String flagId, boolean defaultValue, List<String> owners, String createdAt, String expiresAt, String description, diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java index 892372f27e7..9cffc361444 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java @@ -23,6 +23,8 @@ import java.util.function.Supplier; import java.util.logging.Level; import java.util.logging.Logger; +import static com.yahoo.vespa.flags.Flags.USE_APPLICATION_LOCK_IN_MAINTENANCE_DEPLOYMENT; + /** * A wrapper of a deployment suitable for maintenance. * This is a single-use, single-thread object. @@ -46,7 +48,11 @@ class MaintenanceDeployment implements Closeable { NodeRepository nodeRepository) { this.application = application; this.metric = metric; - Optional<Mutex> lock = tryLock(application, nodeRepository); + + Optional<Mutex> lock = USE_APPLICATION_LOCK_IN_MAINTENANCE_DEPLOYMENT.bindTo(nodeRepository.flagSource()).value() + ? tryLock(application, nodeRepository) + : Optional.of(() -> { }); + try { deployment = tryDeployment(lock, application, deployer, nodeRepository); this.lock = lock; |