Browse Source

Align `@Indexed(expireAfter)` with `expireAfterSeconds`.

This commit fixes an issue where expireAfter=0s behaves differently from expireAfterSeconds=0 where the former would not be applied.

Closes #4844
Original pull request: #4848
issue/4851
Christoph Strobl 1 year ago committed by Mark Paluch
parent
commit
f910839dca
No known key found for this signature in database
GPG Key ID: 55BC6374BAA9D973
  1. 2
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolver.java
  2. 14
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolverUnitTests.java

2
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolver.java

@ -564,7 +564,7 @@ public class MongoPersistentEntityIndexResolver implements IndexResolver { @@ -564,7 +564,7 @@ public class MongoPersistentEntityIndexResolver implements IndexResolver {
Duration timeout = computeIndexTimeout(index.expireAfter(),
() -> getEvaluationContextForProperty(persistentProperty.getOwner()));
if (!timeout.isZero() && !timeout.isNegative()) {
if (!timeout.isNegative()) {
indexDefinition.expire(timeout);
}
}

14
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolverUnitTests.java

@ -222,6 +222,15 @@ public class MongoPersistentEntityIndexResolverUnitTests { @@ -222,6 +222,15 @@ public class MongoPersistentEntityIndexResolverUnitTests {
assertThat(indexDefinitions.get(0).getIndexOptions()).containsEntry("expireAfterSeconds", 600L);
}
@Test // GH-4844
public void shouldResolveZeroTimeoutFromString() {
List<IndexDefinitionHolder> indexDefinitions = prepareMappingContextAndResolveIndexForType(
WithExpireAfterZeroSecondsAsPlainString.class);
assertThat(indexDefinitions.get(0).getIndexOptions()).containsEntry("expireAfterSeconds", 0L);
}
@Test // DATAMONGO-2112
public void shouldResolveTimeoutFromIso8601String() {
@ -383,6 +392,11 @@ public class MongoPersistentEntityIndexResolverUnitTests { @@ -383,6 +392,11 @@ public class MongoPersistentEntityIndexResolverUnitTests {
@Indexed(expireAfter = "10m") String withTimeout;
}
@Document
class WithExpireAfterZeroSecondsAsPlainString {
@Indexed(expireAfter = "0s") String withTimeout;
}
@Document
class WithIso8601Style {
@Indexed(expireAfter = "P1D") String withTimeout;

Loading…
Cancel
Save