diff options
9 files changed, 37 insertions, 37 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Deployer.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Deployer.java index 1498b9871d3..f184519e928 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/Deployer.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Deployer.java @@ -54,8 +54,8 @@ public interface Deployer { */ Optional<Deployment> deployFromLocalActive(ApplicationId application, Duration timeout, boolean bootstrap); - /** Returns the time the current local active session was activated, or empty if there is no local active session */ - Optional<Instant> lastDeployTime(ApplicationId application); + /** Returns the time the active session was activated, or empty if there is no active session */ + Optional<Instant> activationTime(ApplicationId application); /** Whether the deployer is bootstrapping, some users of the deployer will want to hold off with deployments in that case. */ default boolean bootstrapping() { return false; } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java index 0d3cea59a46..3502ece9cb7 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java @@ -443,7 +443,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye } @Override - public Optional<Instant> lastDeployTime(ApplicationId application) { + public Optional<Instant> activationTime(ApplicationId application) { Tenant tenant = tenantRepository.getTenant(application.tenant()); if (tenant == null) return Optional.empty(); Optional<Instant> activatedTime = getActiveSession(tenant, application).map(Session::getActivatedTime); @@ -743,7 +743,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye public HttpResponse getLogs(ApplicationId applicationId, Optional<DomainName> hostname, String apiParams) { String logServerURI = getLogServerURI(applicationId, hostname) + apiParams; - return logRetriever.getLogs(logServerURI, lastDeployTime(applicationId)); + return logRetriever.getLogs(logServerURI, activationTime(applicationId)); } // ---------------- Methods to do call against tester containers in hosted ------------------------------ diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java index a1eae42da38..91a10a1d08e 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java @@ -80,16 +80,16 @@ public abstract class ApplicationMaintainer extends NodeRepositoryMaintainer { if ( ! canDeployNow(application)) return; // redeployment is no longer needed log.log(Level.INFO, () -> application + " will be redeployed" + (reason == null || reason.isBlank() ? "" : " due to " + reason) + - ", last deploy time " + getLastDeployTime(application)); + ", last activated " + activationTime(application)); deployment.activate(); } finally { pendingDeployments.remove(application); } } - /** Returns the last time application was activated. Epoch is returned if the application has never been deployed. */ - protected final Instant getLastDeployTime(ApplicationId application) { - return deployer.lastDeployTime(application).orElse(Instant.EPOCH); + /** Returns the last time application was activated. Epoch is returned if the application has never been activated. */ + protected final Instant activationTime(ApplicationId application) { + return deployer.activationTime(application).orElse(Instant.EPOCH); } @Override diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainer.java index ffa125230a8..1b81a977019 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainer.java @@ -68,15 +68,15 @@ public class ExpeditedChangeApplicationMaintainer extends ApplicationMaintainer /** Returns the reason for doing an expedited deploy. */ private Optional<String> hasNodesWithChanges(ApplicationId applicationId, NodeList nodes) { - Optional<Instant> lastDeployTime = deployer().lastDeployTime(applicationId); - if (lastDeployTime.isEmpty()) return Optional.empty(); + Optional<Instant> activationTime = deployer().activationTime(applicationId); + if (activationTime.isEmpty()) return Optional.empty(); List<String> reasons = nodes.stream() .flatMap(node -> node.history() .events() .stream() .filter(event -> expediteChangeBy(event.agent())) - .filter(event -> lastDeployTime.get().isBefore(event.at())) + .filter(event -> activationTime.get().isBefore(event.at())) .map(event -> event.type() + (event.agent() == Agent.system ? "" : " by " + event.agent()))) .sorted() .distinct() diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMover.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMover.java index fcc8e904a47..36db8bff8e9 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMover.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMover.java @@ -90,9 +90,9 @@ public abstract class NodeMover<MOVE> extends NodeRepositoryMaintainer { private boolean deployedRecently(ApplicationId application) { Instant now = nodeRepository().clock().instant(); - return deployer.lastDeployTime(application) - .map(lastDeployTime -> lastDeployTime.isAfter(now.minus(waitTimeAfterPreviousDeployment))) - // We only know last deploy time for applications that were deployed on this config server, + return deployer.activationTime(application) + .map(lastActivatedTime -> lastActivatedTime.isAfter(now.minus(waitTimeAfterPreviousDeployment))) + // We only know last activated time for applications that were deployed on this config server, // the rest will be deployed on another config server .orElse(true); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java index 10a828c887a..28679b504aa 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java @@ -39,7 +39,7 @@ public class PeriodicApplicationMaintainer extends ApplicationMaintainer { @Override protected boolean canDeployNow(ApplicationId application) { - return deployer().lastDeployTime(application) + return deployer().activationTime(application) // Don't deploy if a regular deploy just happened .map(lastDeployTime -> lastDeployTime.isBefore(nodeRepository().clock().instant().minus(minTimeBetweenRedeployments))) // We only know last deploy time for applications that were deployed on this config server, @@ -57,7 +57,7 @@ public class PeriodicApplicationMaintainer extends ApplicationMaintainer { .map(node -> node.allocation().get().owner()) .distinct() .filter(this::canDeployNow) - .collect(Collectors.toMap(Function.identity(), this::getLastDeployTime)); + .collect(Collectors.toMap(Function.identity(), this::activationTime)); return deploymentTimes.entrySet().stream() .sorted(Map.Entry.comparingByValue()) diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java index a1712fe4a0b..dcde521bfda 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java @@ -120,7 +120,7 @@ public class MockDeployer implements Deployer { } @Override - public Optional<Instant> lastDeployTime(ApplicationId application) { + public Optional<Instant> activationTime(ApplicationId application) { return Optional.ofNullable(lastDeployTimes.get(application)); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTest.java index 3c459871490..5650bc953f0 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTest.java @@ -58,8 +58,8 @@ public class AutoscalingMaintainerTest { new MockDeployer.ApplicationContext(app2, cluster2, Capacity.from(new ClusterResources(2, 1, highResources)))); tester.maintainer().maintain(); // noop - assertTrue(tester.deployer().lastDeployTime(app1).isEmpty()); - assertTrue(tester.deployer().lastDeployTime(app2).isEmpty()); + assertTrue(tester.deployer().activationTime(app1).isEmpty()); + assertTrue(tester.deployer().activationTime(app2).isEmpty()); tester.deploy(app1, cluster1, Capacity.from(new ClusterResources(5, 1, new NodeResources(4, 4, 10, 0.1)), new ClusterResources(5, 1, new NodeResources(4, 4, 10, 0.1)), @@ -70,16 +70,16 @@ public class AutoscalingMaintainerTest { tester.clock().advance(Duration.ofMinutes(10)); tester.maintainer().maintain(); // noop - assertTrue(tester.deployer().lastDeployTime(app1).isEmpty()); - assertTrue(tester.deployer().lastDeployTime(app2).isEmpty()); + assertTrue(tester.deployer().activationTime(app1).isEmpty()); + assertTrue(tester.deployer().activationTime(app2).isEmpty()); tester.addMeasurements(0.9f, 0.9f, 0.9f, 0, 500, app1, cluster1.id()); tester.addMeasurements(0.9f, 0.9f, 0.9f, 0, 500, app2, cluster2.id()); tester.clock().advance(Duration.ofMinutes(10)); tester.maintainer().maintain(); - assertTrue(tester.deployer().lastDeployTime(app1).isEmpty()); // since autoscaling is off - assertTrue(tester.deployer().lastDeployTime(app2).isPresent()); + assertTrue(tester.deployer().activationTime(app1).isEmpty()); // since autoscaling is off + assertTrue(tester.deployer().activationTime(app2).isPresent()); Load peakAt90 = tester.nodeRepository().applications().require(app1).cluster(cluster1.id()).get().target().peak(); Load idealAt90 = tester.nodeRepository().applications().require(app1).cluster(cluster1.id()).get().target().ideal(); assertNotEquals(Load.zero(), peakAt90); @@ -116,8 +116,8 @@ public class AutoscalingMaintainerTest { tester.clock().advance(Duration.ofMinutes(10)); Instant firstMaintenanceTime = tester.clock().instant(); tester.maintainer().maintain(); - assertTrue(tester.deployer().lastDeployTime(app1).isPresent()); - assertEquals(firstMaintenanceTime.toEpochMilli(), tester.deployer().lastDeployTime(app1).get().toEpochMilli()); + assertTrue(tester.deployer().activationTime(app1).isPresent()); + assertEquals(firstMaintenanceTime.toEpochMilli(), tester.deployer().activationTime(app1).get().toEpochMilli()); List<ScalingEvent> events = tester.nodeRepository().applications().get(app1).get().cluster(cluster1.id()).get().scalingEvents(); assertEquals(2, events.size()); assertEquals(Optional.of(firstMaintenanceTime), events.get(0).completion()); @@ -129,25 +129,25 @@ public class AutoscalingMaintainerTest { // Measure overload still, since change is not applied, but metrics are discarded tester.addMeasurements(0.9f, 0.9f, 0.9f, 0, 500, app1, cluster1.id()); tester.maintainer().maintain(); - assertEquals(firstMaintenanceTime.toEpochMilli(), tester.deployer().lastDeployTime(app1).get().toEpochMilli()); + assertEquals(firstMaintenanceTime.toEpochMilli(), tester.deployer().activationTime(app1).get().toEpochMilli()); // Measure underload, but no autoscaling since we still haven't measured we're on the new config generation tester.addMeasurements(0.1f, 0.1f, 0.1f, 0, 500, app1, cluster1.id()); tester.maintainer().maintain(); - assertEquals(firstMaintenanceTime.toEpochMilli(), tester.deployer().lastDeployTime(app1).get().toEpochMilli()); + assertEquals(firstMaintenanceTime.toEpochMilli(), tester.deployer().activationTime(app1).get().toEpochMilli()); // Add measurement of the expected generation, leading to rescaling // - record scaling completion tester.clock().advance(Duration.ofMinutes(5)); tester.addMeasurements(0.1f, 0.1f, 0.1f, 1, 1, app1, cluster1.id()); tester.maintainer().maintain(); - assertEquals(firstMaintenanceTime.toEpochMilli(), tester.deployer().lastDeployTime(app1).get().toEpochMilli()); + assertEquals(firstMaintenanceTime.toEpochMilli(), tester.deployer().activationTime(app1).get().toEpochMilli()); // - measure underload tester.clock().advance(Duration.ofDays(4)); // Exit cooling period tester.addMeasurements(0.1f, 0.1f, 0.1f, 1, 500, app1, cluster1.id()); Instant lastMaintenanceTime = tester.clock().instant(); tester.maintainer().maintain(); - assertEquals(lastMaintenanceTime.toEpochMilli(), tester.deployer().lastDeployTime(app1).get().toEpochMilli()); + assertEquals(lastMaintenanceTime.toEpochMilli(), tester.deployer().activationTime(app1).get().toEpochMilli()); events = tester.nodeRepository().applications().get(app1).get().cluster(cluster1.id()).get().scalingEvents(); assertEquals(2, events.get(2).generation()); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java index cad5a87acfd..900d77fcb26 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java @@ -143,21 +143,21 @@ public class PeriodicApplicationMaintainerTest { assertEquals("No deployment expected", 4, fixture.deployer.redeployments); Instant firstDeployTime = clock.instant(); - assertEquals(firstDeployTime, fixture.deployer.lastDeployTime(fixture.app1).get()); - assertEquals(firstDeployTime, fixture.deployer.lastDeployTime(fixture.app2).get()); + assertEquals(firstDeployTime, fixture.deployer.activationTime(fixture.app1).get()); + assertEquals(firstDeployTime, fixture.deployer.activationTime(fixture.app2).get()); clock.advance(Duration.ofMinutes(5)); fixture.runApplicationMaintainer(); // Too soon: Not redeployed: assertEquals("No deployment expected", 4, fixture.deployer.redeployments); - assertEquals(firstDeployTime, fixture.deployer.lastDeployTime(fixture.app1).get()); - assertEquals(firstDeployTime, fixture.deployer.lastDeployTime(fixture.app2).get()); + assertEquals(firstDeployTime, fixture.deployer.activationTime(fixture.app1).get()); + assertEquals(firstDeployTime, fixture.deployer.activationTime(fixture.app2).get()); clock.advance(Duration.ofMinutes(30)); fixture.runApplicationMaintainer(); // Redeployed: assertEquals("No deployment expected", 6, fixture.deployer.redeployments); - assertEquals(clock.instant(), fixture.deployer.lastDeployTime(fixture.app1).get()); - assertEquals(clock.instant(), fixture.deployer.lastDeployTime(fixture.app2).get()); + assertEquals(clock.instant(), fixture.deployer.activationTime(fixture.app1).get()); + assertEquals(clock.instant(), fixture.deployer.activationTime(fixture.app2).get()); } @Test(timeout = 60_000) @@ -188,8 +188,8 @@ public class PeriodicApplicationMaintainerTest { fixture.deployer.lock().unlock(); fixture.runApplicationMaintainer(); Instant deployTime = clock.instant(); - assertEquals(deployTime, fixture.deployer.lastDeployTime(fixture.app1).get()); - assertEquals(deployTime, fixture.deployer.lastDeployTime(fixture.app2).get()); + assertEquals(deployTime, fixture.deployer.activationTime(fixture.app1).get()); + assertEquals(deployTime, fixture.deployer.activationTime(fixture.app2).get()); // Too soon: Already deployed recently clock.advance(Duration.ofMinutes(5)); |