diff options
Diffstat (limited to 'configserver')
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 { |