summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-06-20 11:57:09 +0200
committerGitHub <noreply@github.com>2022-06-20 11:57:09 +0200
commitdba7714be6b2cb68f10bac0ef89d29f885e4c8e0 (patch)
treed9a9bb47936a515987c534c54044f760a6eb8061 /configserver
parent6d2fb1d43b8075fa5d4a224c5a97f1f61f6ac094 (diff)
parent0df7b1ff793cfecdecb1d24d498cfc88d5b060c8 (diff)
Merge pull request #23164 from vespa-engine/hmusum/add-getActivatedTime
Use getActivatedTime() for last deployed time for an app [run-systemtest]
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java4
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java11
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java4
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java7
5 files changed, 19 insertions, 9 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 5bed5ec8d26..ca56a200c2c 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
@@ -437,7 +437,9 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
public Optional<Instant> lastDeployTime(ApplicationId application) {
Tenant tenant = tenantRepository.getTenant(application.tenant());
if (tenant == null) return Optional.empty();
- return getActiveSession(tenant, application).map(Session::getCreateTime);
+ Optional<Instant> activatedTime = getActiveSession(tenant, application).map(Session::getActivatedTime);
+ log.log(Level.FINE, application + " last activated " + activatedTime.orElse(Instant.EPOCH));
+ return activatedTime;
}
public ApplicationId activate(Tenant tenant,
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java
index 8f585dccf52..6244f806f47 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java
@@ -1,8 +1,6 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
-import java.time.Duration;
-
import com.yahoo.component.annotation.Inject;
import com.yahoo.config.application.api.ApplicationMetaData;
import com.yahoo.config.provision.ApplicationId;
@@ -12,14 +10,15 @@ import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.jdisc.Request;
import com.yahoo.jdisc.handler.ResponseHandler;
-import java.util.logging.Level;
import com.yahoo.vespa.config.server.ApplicationRepository;
-import com.yahoo.vespa.config.server.http.v2.response.SessionActiveResponse;
-import com.yahoo.vespa.config.server.tenant.Tenant;
-import com.yahoo.vespa.config.server.tenant.TenantRepository;
import com.yahoo.vespa.config.server.TimeoutBudget;
import com.yahoo.vespa.config.server.http.SessionHandler;
import com.yahoo.vespa.config.server.http.Utils;
+import com.yahoo.vespa.config.server.http.v2.response.SessionActiveResponse;
+import com.yahoo.vespa.config.server.tenant.Tenant;
+import com.yahoo.vespa.config.server.tenant.TenantRepository;
+import java.time.Duration;
+import java.util.logging.Level;
/**
* Handler that activates a session given by tenant and id (PUT).
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java
index 881d3de4eaa..edc166d0989 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java
@@ -115,6 +115,10 @@ public abstract class Session implements Comparable<Session> {
return sessionZooKeeperClient.readCreateTime();
}
+ public Instant getActivatedTime() {
+ return sessionZooKeeperClient.readActivatedTime();
+ }
+
public void setApplicationId(ApplicationId applicationId) {
sessionZooKeeperClient.writeApplicationId(applicationId);
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
index 5603ef2df51..059d192e7d2 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
@@ -235,7 +235,7 @@ public class SessionRepository {
public ConfigChangeActions prepareLocalSession(Session session, DeployLogger logger, PrepareParams params, Instant now) {
params.vespaVersion().ifPresent(version -> {
if ( ! params.isBootstrap() && ! modelFactoryRegistry.allVersions().contains(version))
- throw new UnknownVespaVersionException("Vespa version '" + version + "' not known by this configserver");
+ throw new UnknownVespaVersionException("Vespa version '" + version + "' not known by this config server");
});
applicationRepo.createApplication(params.getApplicationId()); // TODO jvenstad: This is wrong, but it has to be done now, since preparation can change the application ID of a session :(
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
index de8cbcb4066..e146f0de187 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
@@ -33,7 +33,7 @@ import com.yahoo.vespa.config.server.zookeeper.ZKApplicationPackage;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.transaction.CuratorOperations;
import com.yahoo.vespa.curator.transaction.CuratorTransaction;
-
+import org.apache.zookeeper.data.Stat;
import java.security.cert.X509Certificate;
import java.time.Instant;
import java.util.List;
@@ -239,6 +239,11 @@ public class SessionZooKeeperClient {
return data.map(d -> Instant.ofEpochSecond(Long.parseLong(Utf8.toString(d)))).orElse(Instant.EPOCH);
}
+ public Instant readActivatedTime() {
+ Optional<Stat> statData = curator.getStat(sessionStatusPath);
+ return statData.map(s -> Instant.ofEpochMilli(s.getMtime())).orElse(Instant.EPOCH);
+ }
+
private Path getCreateTimePath() {
return sessionPath.append(CREATE_TIME_PATH);
}