diff options
author | Håkon Hallingstad <hakon@verizonmedia.com> | 2019-11-13 00:09:57 +0100 |
---|---|---|
committer | Håkon Hallingstad <hakon@verizonmedia.com> | 2019-11-13 00:09:57 +0100 |
commit | e4ed153087ce9760437dbdbee3f8a83cab46c912 (patch) | |
tree | 1a8edfed52edda55d76dd7eb0ef43579080ba258 /node-repository | |
parent | 1f9f2bac2bdac8bd0ea93cca69c2e7585e73b4c2 (diff) |
Allow overriding NodeRepositoryMaintenance durations with flag
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java | 39 |
1 files changed, 22 insertions, 17 deletions
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 7c5e529fb03..5ecde542bb6 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 @@ -10,6 +10,8 @@ import com.yahoo.config.provision.InfraDeployer; import com.yahoo.config.provision.Zone; import com.yahoo.jdisc.Metric; import com.yahoo.vespa.flags.FlagSource; +import com.yahoo.vespa.flags.Flags; +import com.yahoo.vespa.flags.custom.NodeMaintainerDurations; import com.yahoo.vespa.hosted.provision.NodeRepository; import com.yahoo.vespa.hosted.provision.provisioning.ProvisionServiceProvider; import com.yahoo.vespa.orchestrator.Orchestrator; @@ -48,6 +50,7 @@ public class NodeRepositoryMaintenance extends AbstractComponent { private final CapacityReportMaintainer capacityReportMaintainer; private final OsUpgradeActivator osUpgradeActivator; private final Rebalancer rebalancer; + private final NodeMaintainerDurations flagDurations; @SuppressWarnings("unused") @Inject @@ -64,25 +67,26 @@ public class NodeRepositoryMaintenance extends AbstractComponent { HostLivenessTracker hostLivenessTracker, ServiceMonitor serviceMonitor, Zone zone, Clock clock, Orchestrator orchestrator, Metric metric, ProvisionServiceProvider provisionServiceProvider, FlagSource flagSource) { + this.flagDurations = Flags.NODE_MAINTAINER_DURATIONS.bindTo(flagSource).value(); DefaultTimes defaults = new DefaultTimes(zone); - nodeFailer = new NodeFailer(deployer, hostLivenessTracker, serviceMonitor, nodeRepository, durationFromEnv("fail_grace").orElse(defaults.failGrace), clock, orchestrator, throttlePolicyFromEnv().orElse(defaults.throttlePolicy), metric); - periodicApplicationMaintainer = new PeriodicApplicationMaintainer(deployer, nodeRepository, defaults.redeployMaintainerInterval, durationFromEnv("periodic_redeploy_interval").orElse(defaults.periodicRedeployInterval)); - operatorChangeApplicationMaintainer = new OperatorChangeApplicationMaintainer(deployer, nodeRepository, durationFromEnv("operator_change_redeploy_interval").orElse(defaults.operatorChangeRedeployInterval)); - reservationExpirer = new ReservationExpirer(nodeRepository, clock, durationFromEnv("reservation_expiry").orElse(defaults.reservationExpiry)); - retiredExpirer = new RetiredExpirer(nodeRepository, orchestrator, deployer, clock, durationFromEnv("retired_interval").orElse(defaults.retiredInterval), durationFromEnv("retired_expiry").orElse(defaults.retiredExpiry)); - inactiveExpirer = new InactiveExpirer(nodeRepository, clock, durationFromEnv("inactive_expiry").orElse(defaults.inactiveExpiry)); - failedExpirer = new FailedExpirer(nodeRepository, zone, clock, durationFromEnv("failed_expirer_interval").orElse(defaults.failedExpirerInterval)); - dirtyExpirer = new DirtyExpirer(nodeRepository, clock, durationFromEnv("dirty_expiry").orElse(defaults.dirtyExpiry)); - provisionedExpirer = new ProvisionedExpirer(nodeRepository, clock, durationFromEnv("provisioned_expiry").orElse(defaults.provisionedExpiry)); - nodeRebooter = new NodeRebooter(nodeRepository, clock, durationFromEnv("reboot_interval").orElse(defaults.rebootInterval)); - metricsReporter = new MetricsReporter(nodeRepository, metric, orchestrator, serviceMonitor, periodicApplicationMaintainer::pendingDeployments, durationFromEnv("metrics_interval").orElse(defaults.metricsInterval)); - infrastructureProvisioner = new InfrastructureProvisioner(nodeRepository, infraDeployer, durationFromEnv("infrastructure_provision_interval").orElse(defaults.infrastructureProvisionInterval)); + nodeFailer = new NodeFailer(deployer, hostLivenessTracker, serviceMonitor, nodeRepository, durationOverride("fail_grace").orElse(defaults.failGrace), clock, orchestrator, throttlePolicyFromEnv().orElse(defaults.throttlePolicy), metric); + periodicApplicationMaintainer = new PeriodicApplicationMaintainer(deployer, nodeRepository, defaults.redeployMaintainerInterval, durationOverride("periodic_redeploy_interval").orElse(defaults.periodicRedeployInterval)); + operatorChangeApplicationMaintainer = new OperatorChangeApplicationMaintainer(deployer, nodeRepository, durationOverride("operator_change_redeploy_interval").orElse(defaults.operatorChangeRedeployInterval)); + reservationExpirer = new ReservationExpirer(nodeRepository, clock, durationOverride("reservation_expiry").orElse(defaults.reservationExpiry)); + retiredExpirer = new RetiredExpirer(nodeRepository, orchestrator, deployer, clock, durationOverride("retired_interval").orElse(defaults.retiredInterval), durationOverride("retired_expiry").orElse(defaults.retiredExpiry)); + inactiveExpirer = new InactiveExpirer(nodeRepository, clock, durationOverride("inactive_expiry").orElse(defaults.inactiveExpiry)); + failedExpirer = new FailedExpirer(nodeRepository, zone, clock, durationOverride("failed_expirer_interval").orElse(defaults.failedExpirerInterval)); + dirtyExpirer = new DirtyExpirer(nodeRepository, clock, durationOverride("dirty_expiry").orElse(defaults.dirtyExpiry)); + provisionedExpirer = new ProvisionedExpirer(nodeRepository, clock, durationOverride("provisioned_expiry").orElse(defaults.provisionedExpiry)); + nodeRebooter = new NodeRebooter(nodeRepository, clock, durationOverride("reboot_interval").orElse(defaults.rebootInterval)); + metricsReporter = new MetricsReporter(nodeRepository, metric, orchestrator, serviceMonitor, periodicApplicationMaintainer::pendingDeployments, durationOverride("metrics_interval").orElse(defaults.metricsInterval)); + infrastructureProvisioner = new InfrastructureProvisioner(nodeRepository, infraDeployer, durationOverride("infrastructure_provision_interval").orElse(defaults.infrastructureProvisionInterval)); loadBalancerExpirer = provisionServiceProvider.getLoadBalancerService().map(lbService -> - new LoadBalancerExpirer(nodeRepository, durationFromEnv("load_balancer_expirer_interval").orElse(defaults.loadBalancerExpirerInterval), lbService)); + new LoadBalancerExpirer(nodeRepository, durationOverride("load_balancer_expirer_interval").orElse(defaults.loadBalancerExpirerInterval), lbService)); dynamicProvisioningMaintainer = provisionServiceProvider.getHostProvisioner().map(hostProvisioner -> - new DynamicProvisioningMaintainer(nodeRepository, durationFromEnv("host_provisioner_interval").orElse(defaults.dynamicProvisionerInterval), hostProvisioner, flagSource)); - capacityReportMaintainer = new CapacityReportMaintainer(nodeRepository, metric, durationFromEnv("capacity_report_interval").orElse(defaults.capacityReportInterval)); + new DynamicProvisioningMaintainer(nodeRepository, durationOverride("host_provisioner_interval").orElse(defaults.dynamicProvisionerInterval), hostProvisioner, flagSource)); + capacityReportMaintainer = new CapacityReportMaintainer(nodeRepository, metric, durationOverride("capacity_report_interval").orElse(defaults.capacityReportInterval)); osUpgradeActivator = new OsUpgradeActivator(nodeRepository, defaults.osUpgradeActivatorInterval); rebalancer = new Rebalancer(nodeRepository, provisionServiceProvider.getHostResourcesCalculator(), provisionServiceProvider.getHostProvisioner(), metric, clock, defaults.rebalancerInterval); @@ -111,8 +115,9 @@ public class NodeRepositoryMaintenance extends AbstractComponent { rebalancer.deconstruct(); } - private static Optional<Duration> durationFromEnv(String envVariable) { - return Optional.ofNullable(System.getenv(envPrefix + envVariable)).map(Long::parseLong).map(Duration::ofSeconds); + private Optional<Duration> durationOverride(String durationName) { + return Optional.ofNullable(System.getenv(envPrefix + durationName)).map(Long::parseLong).map(Duration::ofSeconds) + .or(() -> flagDurations.getDuration(durationName)); } private static Optional<NodeFailer.ThrottlePolicy> throttlePolicyFromEnv() { |