summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2021-09-16 15:12:13 +0200
committerHarald Musum <musum@yahooinc.com>2021-09-16 15:12:13 +0200
commit267b3bb9232a348a5387af6fa35fc6c3d44b627b (patch)
treedeeb14ab3f692a03293d7b3a334fc71255793cd2
parent511170c43b976486e43433f4b796e33e98d3519c (diff)
Add flag for whether to use application 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 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;