summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2023-08-30 12:24:07 +0200
committerHarald Musum <musum@yahooinc.com>2023-08-30 12:24:07 +0200
commit5445d9f3b1b91b073dac2d609037b534e526c477 (patch)
treec187ff43b0ed1da976a1960ac5a93da8e4bea674 /configserver
parent306dce28ed3cfa0d2f4679fd2519db3d1ac780c7 (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.java18
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java3
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)