diff options
author | HÃ¥kon Hallingstad <hakon@verizonmedia.com> | 2021-06-18 15:57:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-18 15:57:23 +0200 |
commit | ed3e9fee3ef4542566b33b5c1fd7c76fce49b4c6 (patch) | |
tree | 1fb07abf1d3a309ad2f4ca9a982730c16c09c06c | |
parent | 9b8434c6305b2f9db318cb5026720bee7e5af478 (diff) | |
parent | 9ab0c6a7b12c082770d64605853cc7f68552fe60 (diff) |
Merge pull request #18321 from vespa-engine/mpolden/less-lock-contention
Reduce lock contention for infra deployment
2 files changed, 5 insertions, 3 deletions
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 3b16ecbcaa9..892372f27e7 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 @@ -102,11 +102,13 @@ class MaintenanceDeployment implements Closeable { } private Optional<Mutex> tryLock(ApplicationId application, NodeRepository nodeRepository) { + Duration timeout = Duration.ofSeconds(3); try { // Use a short lock to avoid interfering with change deployments - return Optional.of(nodeRepository.nodes().lock(application, Duration.ofSeconds(1))); + return Optional.of(nodeRepository.nodes().lock(application, timeout)); } catch (ApplicationLockException e) { + log.log(Level.WARNING, () -> "Could not lock " + application + " for maintenance deployment within " + timeout); return Optional.empty(); } } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java index 96373bd764f..79d6fbfbdcd 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java @@ -127,7 +127,7 @@ public class NodeRepositoryMaintenance extends AbstractComponent { dynamicProvisionerInterval = Duration.ofMinutes(5); failedExpirerInterval = Duration.ofMinutes(10); failGrace = Duration.ofMinutes(30); - infrastructureProvisionInterval = Duration.ofMinutes(1); + infrastructureProvisionInterval = Duration.ofMinutes(3); loadBalancerExpirerInterval = Duration.ofMinutes(5); metricsInterval = Duration.ofMinutes(1); nodeFailerInterval = Duration.ofMinutes(15); @@ -152,7 +152,7 @@ public class NodeRepositoryMaintenance extends AbstractComponent { if (zone.environment().isProduction() && ! zone.system().isCd()) { inactiveExpiry = Duration.ofHours(4); // enough time for the application owner to discover and redeploy - retiredInterval = Duration.ofMinutes(30); + retiredInterval = Duration.ofMinutes(15); dirtyExpiry = Duration.ofHours(2); // enough time to clean the node retiredExpiry = Duration.ofDays(4); // give up migrating data after 4 days } else { |