diff options
author | Harald Musum <musum@yahooinc.com> | 2022-07-05 08:06:40 +0200 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2022-07-05 08:06:40 +0200 |
commit | b30b6eebaff55f929073243c789622f288563936 (patch) | |
tree | 25831e8e7bab5d4dbbf5adef31f6a14e09c2129a | |
parent | bdca3da122423f78c7dace3ab10c27c575b9fa65 (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.java | 5 |
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; |