diff options
Diffstat (limited to 'configserver')
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); } |