diff options
3 files changed, 24 insertions, 3 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java index ab33a99298e..2066b98aeb9 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java @@ -102,7 +102,7 @@ public class Application { */ public Map<Zone, Deployment> productionDeployments() { return deployments.values().stream() - .filter(deployment -> deployment.zone().environment() == Environment.prod) + .filter(deployment -> deployment.zone().environment() == Environment.prod) .collect(Collectors.toMap(Deployment::zone, Function.identity())); } diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java index 8d0cdc1d041..1bb78078cd5 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java @@ -481,7 +481,7 @@ public class ApplicationController { try (Lock lock = lock(id)) { Optional<Application> application = get(id); if ( ! application.isPresent()) return null; - if ( ! application.get().productionDeployments().isEmpty()) + if ( ! application.get().deployments().isEmpty()) throw new IllegalArgumentException("Could not delete '" + application + "': It has active deployments"); Tenant tenant = controller.tenants().tenant(new TenantId(id.tenant().value())).get(); diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AsyncInitializationPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AsyncInitializationPolicy.java index 947e119fbd4..cbcea4775b4 100644 --- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AsyncInitializationPolicy.java +++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AsyncInitializationPolicy.java @@ -1,14 +1,18 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.documentapi.messagebus.protocol; +import com.yahoo.log.LogLevel; import com.yahoo.messagebus.*; import com.yahoo.messagebus.metrics.MetricSet; import com.yahoo.messagebus.routing.RoutingContext; +import java.io.PrintWriter; +import java.io.StringWriter; import java.util.List; import java.util.Map; import java.util.TreeMap; import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.logging.Logger; /** * Abstract class for routing policies that need asynchronous initialization. @@ -24,6 +28,8 @@ public abstract class AsyncInitializationPolicy implements DocumentProtocolRouti DONE }; + private static final Logger log = Logger.getLogger(AsyncInitializationPolicy.class.getName()); + InitState initState; ScheduledThreadPoolExecutor executor; Exception initException; @@ -78,7 +84,7 @@ public abstract class AsyncInitializationPolicy implements DocumentProtocolRouti synchronized (this) { if (initException != null) { Reply reply = new EmptyReply(); - reply.addError(new com.yahoo.messagebus.Error(ErrorCode.POLICY_ERROR, initException.getMessage())); + reply.addError(new com.yahoo.messagebus.Error(ErrorCode.POLICY_ERROR, "Policy threw exception during init:" + exceptionMessageWithTrace(initException))); routingContext.setReply(reply); return; } @@ -100,6 +106,7 @@ public abstract class AsyncInitializationPolicy implements DocumentProtocolRouti try { init(); } catch (Exception e) { + log.log(LogLevel.WARNING,"Init threw exception",e); initException = e; } @@ -115,4 +122,18 @@ public abstract class AsyncInitializationPolicy implements DocumentProtocolRouti executor.shutdownNow(); } } + + + private static String exceptionMessageWithTrace(Exception e) { + StringWriter sw = new StringWriter(); + try (PrintWriter pw = new PrintWriter(sw)) { + e.printStackTrace(pw); + pw.flush(); + } + return sw.toString(); + + } + + + } |