diff options
author | Harald Musum <musum@oath.com> | 2018-07-18 13:23:15 +0200 |
---|---|---|
committer | Harald Musum <musum@oath.com> | 2018-07-18 13:25:25 +0200 |
commit | f0f5abc65741f8e7a45f9f01bdb8eb33e3cefcd8 (patch) | |
tree | b552cf80431be5fd428a3285107aef80e3c9b421 | |
parent | 205f33ed11edfbc1021f05c0f54fdafa687af154 (diff) |
Filter out apps that should not be deployed on this config server
Either the apps should be deployed on another config server or they
are fake apps that have never been deployed, filter out apps for
both cases
2 files changed, 11 insertions, 16 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java index bdacf5362f1..d28b8c5e5c6 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java @@ -2,21 +2,13 @@ package com.yahoo.vespa.hosted.provision.maintenance; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ApplicationName; import com.yahoo.config.provision.Deployer; -import com.yahoo.config.provision.TenantName; import com.yahoo.log.LogLevel; import com.yahoo.vespa.hosted.provision.Node; import com.yahoo.vespa.hosted.provision.NodeRepository; -import com.yahoo.vespa.service.monitor.application.ConfigServerApplication; -import com.yahoo.vespa.service.monitor.application.ConfigServerHostApplication; -import com.yahoo.vespa.service.monitor.application.HostedVespaApplication; -import com.yahoo.vespa.service.monitor.application.ProxyHostApplication; -import com.yahoo.vespa.service.monitor.application.TenantHostApplication; import java.time.Duration; import java.time.Instant; -import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashSet; @@ -49,16 +41,9 @@ public class PeriodicApplicationMaintainer extends ApplicationMaintainer { // Returns the app that was deployed the longest time ago @Override protected Set<ApplicationId> applicationsNeedingMaintenance() { - // Need to exclude these fake apps - List<ApplicationId> fakeApps = Arrays.asList( - ConfigServerApplication.CONFIG_SERVER_APPLICATION.getApplicationId(), - ConfigServerHostApplication.CONFIG_SERVER_HOST_APPLICATION.getApplicationId(), - ProxyHostApplication.PROXY_HOST_APPLICATION.getApplicationId(), - TenantHostApplication.TENANT_HOST_APPLICATION.getApplicationId()); - Optional<ApplicationId> app = (nodesNeedingMaintenance().stream() .map(node -> node.allocation().get().owner()) - .filter(applicationId -> !fakeApps.contains(applicationId)) + .filter(this::shouldBeDeployedOnThisServer) .min(Comparator.comparing(this::getLastDeployTime))); app.ifPresent(applicationId -> log.log(LogLevel.INFO, applicationId + " will be deployed, last deploy time " + getLastDeployTime(applicationId))); @@ -69,6 +54,12 @@ public class PeriodicApplicationMaintainer extends ApplicationMaintainer { return deployer().lastDeployTime(application).orElse(Instant.EPOCH); } + // We only know last deploy time for applications that were deployed on this config server, + // the rest will be deployed on another config server + protected boolean shouldBeDeployedOnThisServer(ApplicationId application) { + return deployer().lastDeployTime(application).isPresent(); + } + @Override protected List<Node> nodesNeedingMaintenance() { return nodeRepository().getNodes(Node.State.active); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java index 90fa1801789..77f1594c386 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java @@ -262,6 +262,10 @@ public class PeriodicApplicationMaintainerTest { return super.nodesNeedingMaintenance(); } + protected boolean shouldBeDeployedOnThisServer(ApplicationId application) { + return true; + } + } } |