summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-09-16 18:16:10 +0200
committerGitHub <noreply@github.com>2021-09-16 18:16:10 +0200
commitdaab62042f34575d545dcd0b6fd100e232848c85 (patch)
treebefdd8eba0d1c01bed7693230dbe52475b661e06
parent751c42ec11614c9bac3d2bb56b9616df93c991d5 (diff)
parent267b3bb9232a348a5387af6fa35fc6c3d44b627b (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.java8
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java8
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;