From 2eda993fde2b9e92356cfab71aa344daae21178a Mon Sep 17 00:00:00 2001 From: Tony Rasa Date: Wed, 13 Jan 2016 22:18:31 -0800 Subject: [PATCH] Use Bool, not Long, to determine if session key exists This class calls jedis.exists() to determine if a session key has expired or not - but was comparing the return value vs. 0L instead of vs. a boolean false, so RedisSessions would never be scavenged, leaking resources. See: https://github.com/Ovea/jetty-session-redis/issues/7 --- .../ovea/jetty/session/redis/RedisSessionIdManager.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/ovea/jetty/session/redis/RedisSessionIdManager.java b/src/main/java/com/ovea/jetty/session/redis/RedisSessionIdManager.java index e9a4127..dc079a0 100644 --- a/src/main/java/com/ovea/jetty/session/redis/RedisSessionIdManager.java +++ b/src/main/java/com/ovea/jetty/session/redis/RedisSessionIdManager.java @@ -117,11 +117,14 @@ public void execute() throws JedisException { }); } }); - for (int i = 0; i < status.size(); i++) - if (ZERO.equals(status.get(i))) + for (int i = 0; i < status.size(); i++) { + if (status.get(i).equals(false)) { expired.add(clusterIds.get(i)); - if (LOG.isDebugEnabled() && !expired.isEmpty()) + } + } + if (LOG.isDebugEnabled()) { LOG.debug("[RedisSessionIdManager] Scavenger found {} sessions to expire: {}", expired.size(), expired); + } return expired; }