summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2022-07-05 08:06:40 +0200
committerHarald Musum <musum@yahooinc.com>2022-07-05 08:06:40 +0200
commitb30b6eebaff55f929073243c789622f288563936 (patch)
tree25831e8e7bab5d4dbbf5adef31f6a14e09c2129a
parentbdca3da122423f78c7dace3ab10c27c575b9fa65 (diff)
Add min and max numbers for expired sessions to delete
In zones with a lot of deployments per time unit (e.g. cd zones when there are many runs for one version) we need to delete more expired sessions per run, otherwise the number of zookeeper nodes will increase over time
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java5
1 files changed, 3 insertions, 2 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
index 7d10acaf3ae..a144940e443 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
@@ -358,6 +358,8 @@ public class SessionRepository {
log.log(Level.FINE, () -> "Remote sessions for tenant " + tenantName + ": " + remoteSessionsFromZooKeeper);
int deleted = 0;
+ // Avoid deleting too many in one run
+ int deleteMax = (int) Math.min(1000, Math.max(10, remoteSessionsFromZooKeeper.size() * 0.01));
for (long sessionId : remoteSessionsFromZooKeeper) {
Session session = remoteSessionCache.get(sessionId);
if (session == null) {
@@ -370,8 +372,7 @@ public class SessionRepository {
deleteRemoteSessionFromZooKeeper(session);
deleted++;
}
- // Avoid deleting too many in one run
- if (deleted >= 2)
+ if (deleted >= deleteMax)
break;
}
return deleted;