summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorHarald Musum <musum@oath.com>2018-07-18 13:23:15 +0200
committerHarald Musum <musum@oath.com>2018-07-18 13:25:25 +0200
commitf0f5abc65741f8e7a45f9f01bdb8eb33e3cefcd8 (patch)
treeb552cf80431be5fd428a3285107aef80e3c9b421 /node-repository
parent205f33ed11edfbc1021f05c0f54fdafa687af154 (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
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java23
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java4
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;
+ }
+
}
}