Skip to content

Commit 72a3782

Browse files
authored
Merge pull request #13 from leitzler/master
Remove expirationTimes entry when session expired
2 parents 8cb8dd0 + 7cf9bb0 commit 72a3782

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/main/java/com/github/mkopylec/sessioncouchbase/data/InMemoryDao.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
77

88
import java.util.HashMap;
9+
import java.util.Iterator;
910
import java.util.Map;
11+
import java.util.Map.Entry;
1012
import java.util.Set;
1113
import java.util.concurrent.ConcurrentHashMap;
1214

@@ -110,11 +112,15 @@ public void deleteAll() {
110112
@Override
111113
public void afterPropertiesSet() throws Exception {
112114
expirationScheduler.initialize();
113-
expirationScheduler.scheduleAtFixedRate(() -> expirationTimes.forEach((documentId, expirationTime) -> {
114-
if (expirationTime < currentTimeMillis()) {
115-
sessions.remove(documentId);
116-
principalSessions.remove(documentId);
115+
expirationScheduler.scheduleAtFixedRate(() -> {
116+
for(Iterator<Entry<String, Long>> iter = expirationTimes.entrySet().iterator(); iter.hasNext(); ) {
117+
Entry<String, Long> entry = iter.next();
118+
if (entry.getValue() < currentTimeMillis()) {
119+
sessions.remove(entry.getKey());
120+
principalSessions.remove(entry.getKey());
121+
iter.remove();
122+
}
117123
}
118-
}), 1000);
124+
}, 1000);
119125
}
120126
}

0 commit comments

Comments
 (0)