aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@oath.com>2018-08-13 12:22:52 +0200
committerHarald Musum <musum@oath.com>2018-08-13 12:22:52 +0200
commit652bc3c12b16649c5c7529b6ab4a346b7d90a437 (patch)
treea4f4ddcf2617d2f7d860cc3409ca71ec5776bd3b
parent031e0375afe6c92ad07812019f6eb6045527e9d1 (diff)
Delete remote expired sessions in more zones
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java5
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/SessionsMaintainer.java14
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java2
3 files changed, 14 insertions, 7 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 d8c1276f7e8..c24c0f75cd5 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
@@ -554,12 +554,11 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
listApplications().forEach(app -> tenantRepository.getTenant(app.tenant()).getLocalSessionRepo().purgeOldSessions());
}
- public int deleteExpiredRemoteSessions(Duration expiryTime) {
+ public int deleteExpiredRemoteSessions(Duration expiryTime, boolean deleteFromZooKeeper ) {
return listApplications()
.stream()
.map(app -> tenantRepository.getTenant(app.tenant()).getRemoteSessionRepo()
- // TODO: Delete in all zones
- .deleteExpiredSessions(expiryTime, zone().system() == SystemName.cd))
+ .deleteExpiredSessions(expiryTime, deleteFromZooKeeper))
.mapToInt(i -> i)
.sum();
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/SessionsMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/SessionsMaintainer.java
index a0cbf4e4845..0631fca6a32 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/SessionsMaintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/SessionsMaintainer.java
@@ -1,6 +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.maintenance;
+import com.yahoo.config.provision.SystemName;
+import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.curator.Curator;
@@ -28,8 +30,14 @@ public class SessionsMaintainer extends Maintainer {
// Expired remote sessions are not expected to exist, they should have been deleted when
// a deployment happened or when the application was deleted. We still see them from time to time,
// probably due to some race or another bug
- Duration expiryTime = Duration.ofDays(30);
- if (hostedVespa)
- applicationRepository.deleteExpiredRemoteSessions(expiryTime);
+ if (hostedVespa) {
+ Duration expiryTime = Duration.ofDays(30);
+ Zone zone = applicationRepository.zone();
+ // TODO: Delete in all zones
+ boolean deleteFromZooKeeper = zone.system() == SystemName.cd ||
+ zone.environment().isTest() ||
+ zone.region().value().equals("us-central-1");
+ applicationRepository.deleteExpiredRemoteSessions(expiryTime, deleteFromZooKeeper);
+ }
}
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
index d9a653a1dc2..4a279c68c70 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
@@ -273,7 +273,7 @@ public class ApplicationRepositoryTest {
assertEquals(3, new ArrayList<>(sessions).get(0).getSessionId());
// There should be no expired remote sessions in the common case
- assertEquals(0, applicationRepository.deleteExpiredRemoteSessions(Duration.ofSeconds(0)));
+ assertEquals(0, applicationRepository.deleteExpiredRemoteSessions(Duration.ofSeconds(0), true));
}
private PrepareResult prepareAndActivateApp(File application) throws IOException {