diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-09-16 18:16:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-16 18:16:10 +0200 |
commit | daab62042f34575d545dcd0b6fd100e232848c85 (patch) | |
tree | befdd8eba0d1c01bed7693230dbe52475b661e06 | |
parent | 751c42ec11614c9bac3d2bb56b9616df93c991d5 (diff) | |
parent | 267b3bb9232a348a5387af6fa35fc6c3d44b627b (diff) |
Merge pull request #19172 from vespa-engine/hmusum/add-flag-use-application-lock-in-maintenance-deployment
Add flag for whether to use application lock 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 235bf23062e..7c9ee425d8f 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java @@ -297,6 +297,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; |