Skip to content

Commit 7c616a1

Browse files
author
Rob Winch
committed
Redis save does nothing if nothing has changed
Fixes gh-467
1 parent 61b01d9 commit 7c616a1

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

spring-session/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -771,6 +771,9 @@ private void flushImmediateIfNecessary() {
771771
* session.
772772
*/
773773
private void saveDelta() {
774+
if (this.delta.isEmpty()) {
775+
return;
776+
}
774777
String sessionId = getId();
775778
getSessionBoundHashOperations(sessionId).putAll(this.delta);
776779
String principalSessionKey = getSessionAttrNameKey(
@@ -781,7 +784,7 @@ private void saveDelta() {
781784
|| this.delta.containsKey(securityPrincipalSessionKey)) {
782785
if (this.originalPrincipalName != null) {
783786
String originalPrincipalRedisKey = getPrincipalKey(
784-
(String) this.originalPrincipalName);
787+
this.originalPrincipalName);
785788
RedisOperationsSessionRepository.this.sessionRedisOperations
786789
.boundSetOps(originalPrincipalRedisKey).remove(sessionId);
787790
}

spring-session/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,16 @@ public void saveNewSession() {
166166
.isEqualTo(session.getCreationTime());
167167
}
168168

169+
// gh-467
170+
@Test
171+
public void saveSessionNothingChanged() {
172+
RedisSession session = this.redisRepository.new RedisSession(this.cached);
173+
174+
this.redisRepository.save(session);
175+
176+
verifyZeroInteractions(this.redisOperations);
177+
}
178+
169179
@Test
170180
public void saveJavadocSummary() {
171181
RedisSession session = this.redisRepository.createSession();
@@ -202,6 +212,7 @@ public void saveJavadocSummary() {
202212
@Test
203213
public void saveJavadoc() {
204214
RedisSession session = this.redisRepository.new RedisSession(this.cached);
215+
session.setLastAccessedTime(session.getLastAccessedTime());
205216

206217
given(this.redisOperations.boundHashOps("spring:session:sessions:session-id"))
207218
.willReturn(this.boundHashOperations);

0 commit comments

Comments
 (0)