summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <valerij92@gmail.com>2020-09-24 19:56:22 +0200
committerValerij Fredriksen <valerij92@gmail.com>2020-09-24 19:56:22 +0200
commit266288b03b51d763ea57f2a4e08aec7b529430a2 (patch)
tree710af919949701e7b478fa79e812b3b563606b5d
parenta62b109c312a00f4ec33229d1f54d515ca9e75c4 (diff)
Store DeployHandlerLogger in PrepareResult
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java13
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLogger.java33
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionHandler.java11
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/PrepareResult.java12
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java16
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLoggerTest.java10
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java5
7 files changed, 42 insertions, 58 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 fb981eb1c67..d3d95302f57 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
@@ -285,15 +285,14 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
LocalSession session = getLocalSession(tenant, sessionId);
ApplicationId applicationId = prepareParams.getApplicationId();
Optional<ApplicationSet> currentActiveApplicationSet = getCurrentActiveApplicationSet(tenant, applicationId);
- Slime deployLog = createDeployLog();
- DeployLogger logger = new DeployHandlerLogger(deployLog.get().setArray("log"), prepareParams.isVerbose(), applicationId);
+ DeployHandlerLogger logger = DeployHandlerLogger.forApplication(applicationId, prepareParams.isVerbose());
try (ActionTimer timer = timerFor(applicationId, "deployment.prepareMillis")) {
SessionRepository sessionRepository = tenant.getSessionRepository();
ConfigChangeActions actions = sessionRepository.prepareLocalSession(session, logger, prepareParams,
currentActiveApplicationSet, tenant.getPath(), now);
logConfigChangeActions(actions, logger);
log.log(Level.INFO, TenantRepository.logPre(applicationId) + "Session " + sessionId + " prepared successfully. ");
- return new PrepareResult(sessionId, actions, deployLog);
+ return new PrepareResult(sessionId, actions, logger);
}
}
@@ -330,7 +329,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
hostProvisioner.get().restart(applicationId, HostFilter.from(hostnames, Set.of(), Set.of(), Set.of()));
ConfigChangeActions newActions = new ConfigChangeActions(new RestartActions(), result.configChangeActions().getRefeedActions());
- return new PrepareResult(result.sessionId(), newActions, result.deployLog());
+ return new PrepareResult(result.sessionId(), newActions, result.deployLogger());
}
return result;
@@ -1072,12 +1071,6 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
.getPort();
}
- public Slime createDeployLog() {
- Slime deployLog = new Slime();
- deployLog.setObject();
- return deployLog;
- }
-
public Zone zone() {
return new Zone(SystemName.from(configserverConfig.system()),
Environment.from(configserverConfig.environment()),
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLogger.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLogger.java
index c33c5ff9f57..b6cd22d78b4 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLogger.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLogger.java
@@ -4,6 +4,7 @@ package com.yahoo.vespa.config.server.deploy;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.TenantName;
import com.yahoo.log.LogLevel;
import com.yahoo.slime.Cursor;
import com.yahoo.slime.Slime;
@@ -22,25 +23,24 @@ public class DeployHandlerLogger implements DeployLogger {
private static final Logger log = Logger.getLogger(DeployHandlerLogger.class.getName());
- private final Cursor logroot;
+ private final String prefix;
private final boolean verbose;
- private final ApplicationId app;
+ private final Slime slime;
+ private final Cursor logroot;
- public DeployHandlerLogger(Cursor root, boolean verbose, ApplicationId app) {
- logroot = root;
+ private DeployHandlerLogger(String prefix, boolean verbose) {
+ this.prefix = prefix;
this.verbose = verbose;
- this.app = app;
+ this.slime = new Slime();
+ this.logroot = slime.setObject().setArray("log");
}
@Override
public void log(Level level, String message) {
- if ((level == Level.FINE ||
- level == LogLevel.DEBUG ||
- level == LogLevel.SPAM) &&
- !verbose) {
+ if ((level == Level.FINE || level == LogLevel.DEBUG || level == LogLevel.SPAM) && !verbose)
return;
- }
- String fullMsg = TenantRepository.logPre(app) + message;
+
+ String fullMsg = prefix + message;
Cursor entry = logroot.addObject();
entry.setLong("time", System.currentTimeMillis());
entry.setString("level", level.getName());
@@ -49,4 +49,15 @@ public class DeployHandlerLogger implements DeployLogger {
log.log(Level.FINE, fullMsg);
}
+ public Slime slime() {
+ return slime;
+ }
+
+ public static DeployHandlerLogger forApplication(ApplicationId app, boolean verbose) {
+ return new DeployHandlerLogger(TenantRepository.logPre(app), verbose);
+ }
+
+ public static DeployHandlerLogger forTenant(TenantName tenantName, boolean verbose) {
+ return new DeployHandlerLogger(TenantRepository.logPre(tenantName), verbose);
+ }
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionHandler.java
index 59d12e037e9..fcac023eec3 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionHandler.java
@@ -1,12 +1,9 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
-import com.yahoo.config.provision.ApplicationId;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.jdisc.application.BindingMatch;
-import com.yahoo.slime.Slime;
import com.yahoo.vespa.config.server.ApplicationRepository;
-import com.yahoo.vespa.config.server.deploy.DeployHandlerLogger;
import com.yahoo.vespa.config.server.TimeoutBudget;
import java.time.Clock;
@@ -67,14 +64,6 @@ public class SessionHandler extends HttpHandler {
return new TimeoutBudget(Clock.systemUTC(), getRequestTimeout(request, defaultTimeout));
}
- public static DeployHandlerLogger createLogger(Slime deployLog, HttpRequest request, ApplicationId app) {
- return createLogger(deployLog, request.getBooleanProperty("verbose"), app);
- }
-
- public static DeployHandlerLogger createLogger(Slime deployLog, boolean verbose, ApplicationId app) {
- return new DeployHandlerLogger(deployLog.get().setArray("log"), verbose, app);
- }
-
/**
* True if this request should ignore activation failure because the session was made from an active session that is not active now
* @param request a {@link com.yahoo.container.jdisc.HttpRequest}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/PrepareResult.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/PrepareResult.java
index bb2b57ba45c..24bdfd81f1c 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/PrepareResult.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/PrepareResult.java
@@ -1,8 +1,8 @@
// Copyright 2018 Yahoo Holdings. 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 com.yahoo.slime.Slime;
import com.yahoo.vespa.config.server.configchange.ConfigChangeActions;
+import com.yahoo.vespa.config.server.deploy.DeployHandlerLogger;
/**
* Encapsulates the result from preparing an application
@@ -13,12 +13,12 @@ public class PrepareResult {
private final long sessionId;
private final ConfigChangeActions configChangeActions;
- private final Slime deployLog;
+ private final DeployHandlerLogger logger;
- public PrepareResult(long sessionId, ConfigChangeActions configChangeActions, Slime deployLog) {
+ public PrepareResult(long sessionId, ConfigChangeActions configChangeActions, DeployHandlerLogger logger) {
this.sessionId = sessionId;
this.configChangeActions = configChangeActions;
- this.deployLog = deployLog;
+ this.logger = logger;
}
public long sessionId() {
@@ -29,8 +29,8 @@ public class PrepareResult {
return configChangeActions;
}
- public Slime deployLog() {
- return deployLog;
+ public DeployHandlerLogger deployLogger() {
+ return logger;
}
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java
index de8b2e63aeb..b0468f5e608 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java
@@ -3,7 +3,6 @@ package com.yahoo.vespa.config.server.http.v2;
import com.google.inject.Inject;
import com.yahoo.cloud.config.ConfigserverConfig;
-import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.InstanceName;
@@ -11,7 +10,6 @@ import com.yahoo.config.provision.TenantName;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.jdisc.application.UriPattern;
-import com.yahoo.slime.Slime;
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.deploy.DeployHandlerLogger;
import com.yahoo.vespa.config.server.TimeoutBudget;
@@ -45,22 +43,25 @@ public class SessionCreateHandler extends SessionHandler {
@Override
protected HttpResponse handlePOST(HttpRequest request) {
- Slime deployLog = applicationRepository.createDeployLog();
final TenantName tenantName = Utils.getTenantNameFromSessionRequest(request);
Utils.checkThatTenantExists(applicationRepository.tenantRepository(), tenantName);
TimeoutBudget timeoutBudget = SessionHandler.getTimeoutBudget(request, zookeeperBarrierTimeout);
- DeployLogger logger = createLogger(request, deployLog, tenantName);
+ boolean verbose = request.getBooleanProperty("verbose");
+
+ DeployHandlerLogger logger;
long sessionId;
if (request.hasProperty("from")) {
ApplicationId applicationId = getFromApplicationId(request);
+ logger = DeployHandlerLogger.forApplication(applicationId, verbose);
sessionId = applicationRepository.createSessionFromExisting(applicationId, logger, false, timeoutBudget);
} else {
validateDataAndHeader(request);
+ logger = DeployHandlerLogger.forTenant(tenantName, verbose);
// TODO: Avoid using application id here at all
ApplicationId applicationId = ApplicationId.from(tenantName, ApplicationName.defaultName(), InstanceName.defaultName());
sessionId = applicationRepository.createSession(applicationId, timeoutBudget, request.getData(), request.getHeader(ApplicationApiHandler.contentTypeHeader));
}
- return new SessionCreateResponse(deployLog, tenantName, request.getHost(), request.getPort(), sessionId);
+ return new SessionCreateResponse(logger.slime(), tenantName, request.getHost(), request.getPort(), sessionId);
}
static ApplicationId getFromApplicationId(HttpRequest request) {
@@ -82,11 +83,6 @@ public class SessionCreateHandler extends SessionHandler {
.instanceName(match.group(6)).build();
}
- private static DeployHandlerLogger createLogger(HttpRequest request, Slime deployLog, TenantName tenant) {
- return SessionHandler.createLogger(deployLog, request,
- new ApplicationId.Builder().tenant(tenant).applicationName("-").build());
- }
-
static void validateDataAndHeader(HttpRequest request) {
if (request.getData() == null) {
throw new BadRequestException("Request contains no data");
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLoggerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLoggerTest.java
index 6aa72e3e672..3ac9e681604 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLoggerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLoggerTest.java
@@ -6,9 +6,7 @@ import com.yahoo.config.provision.ApplicationId;
import java.util.logging.Level;
import com.yahoo.log.LogLevel;
-import com.yahoo.slime.Cursor;
import com.yahoo.slime.JsonFormat;
-import com.yahoo.slime.Slime;
import org.junit.Test;
@@ -33,13 +31,11 @@ public class DeployHandlerLoggerTest {
}
private void testLogging(boolean verbose, String expectedPattern) throws IOException {
- Slime slime = new Slime();
- Cursor array = slime.setArray();
- DeployLogger logger = new DeployHandlerLogger(array, verbose, new ApplicationId.Builder()
- .tenant("testtenant").applicationName("testapp").build());
+ DeployHandlerLogger logger = DeployHandlerLogger.forApplication(
+ new ApplicationId.Builder().tenant("testtenant").applicationName("testapp").build(), verbose);
logMessages(logger);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
- new JsonFormat(true).encode(baos, slime);
+ new JsonFormat(true).encode(baos, logger.slime());
assertTrue(Pattern.matches(expectedPattern, baos.toString()));
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
index c1698718ad1..95cdccf4cb8 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
@@ -28,7 +28,6 @@ import com.yahoo.security.KeyUtils;
import com.yahoo.security.SignatureAlgorithm;
import com.yahoo.security.X509CertificateBuilder;
import com.yahoo.security.X509CertificateUtils;
-import com.yahoo.slime.Slime;
import com.yahoo.transaction.NestedTransaction;
import com.yahoo.vespa.config.server.MockSecretStore;
import com.yahoo.vespa.config.server.TestComponentRegistry;
@@ -388,8 +387,8 @@ public class SessionPreparerTest {
}
private DeployHandlerLogger getLogger() {
- return new DeployHandlerLogger(new Slime().get(), false /*verbose */,
- new ApplicationId.Builder().tenant("testtenant").applicationName("testapp").build());
+ return DeployHandlerLogger.forApplication(
+ new ApplicationId.Builder().tenant("testtenant").applicationName("testapp").build(), false /*verbose */);
}