diff options
author | Harald Musum <musum@yahooinc.com> | 2023-08-30 12:24:07 +0200 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2023-08-30 12:24:07 +0200 |
commit | 5445d9f3b1b91b073dac2d609037b534e526c477 (patch) | |
tree | c187ff43b0ed1da976a1960ac5a93da8e4bea674 /configserver | |
parent | 306dce28ed3cfa0d2f4679fd2519db3d1ac780c7 (diff) |
Use deploy time (prepare time) when considering applications for maintenance deployment
Diffstat (limited to 'configserver')
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java | 18 | ||||
-rw-r--r-- | configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java | 3 |
2 files changed, 19 insertions, 2 deletions
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 138d963b250..acc195729e0 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 @@ -43,6 +43,7 @@ import com.yahoo.transaction.Transaction; import com.yahoo.vespa.applicationmodel.InfrastructureApplication; import com.yahoo.vespa.config.server.application.Application; import com.yahoo.vespa.config.server.application.ApplicationCuratorDatabase; +import com.yahoo.vespa.config.server.application.ApplicationData; import com.yahoo.vespa.config.server.application.ApplicationReindexing; import com.yahoo.vespa.config.server.application.ApplicationVersions; import com.yahoo.vespa.config.server.application.ClusterReindexing; @@ -445,11 +446,28 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye 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); log.log(Level.FINEST, application + " last activated " + activatedTime.orElse(Instant.EPOCH)); return activatedTime; } + @Override + public Optional<Instant> deployTime(ApplicationId application) { + Tenant tenant = tenantRepository.getTenant(application.tenant()); + if (tenant == null) return Optional.empty(); + + // TODO: Fallback to empty instead if no deploy time (in Vespa 9) + Optional<Long> lastDeployedSession = tenant.getApplicationRepo().applicationData(application) + .flatMap(ApplicationData::lastDeployedSession); + if (lastDeployedSession.isEmpty()) return activationTime(application); + + Instant createTime = getRemoteSession(tenant, lastDeployedSession.get()).getCreateTime(); + log.log(Level.FINEST, application + " last deployed " + createTime); + + return Optional.of(createTime); + } + public ApplicationId activate(Tenant tenant, long sessionId, TimeoutBudget timeoutBudget, diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java index c355be5090a..2a79e2c03aa 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java @@ -97,7 +97,6 @@ public class ApplicationRepositoryTest { private ApplicationRepository applicationRepository; private TenantRepository tenantRepository; - private MockProvisioner provisioner; private OrchestratorMock orchestrator; private TimeoutBudget timeoutBudget; private Curator curator; @@ -123,7 +122,7 @@ public class ApplicationRepositoryTest { .build(); flagSource = new InMemoryFlagSource(); fileDirectory = new FileDirectory(configserverConfig); - provisioner = new MockProvisioner(); + MockProvisioner provisioner = new MockProvisioner(); tenantRepository = new TestTenantRepository.Builder() .withClock(clock) .withConfigserverConfig(configserverConfig) |