Save time series strategies: add max deduplication interval validation
This commit is contained in:
parent
e009967fa7
commit
a2095636a0
@ -28,14 +28,16 @@ import java.util.UUID;
|
|||||||
final class DeduplicatePersistenceStrategy implements PersistenceStrategy {
|
final class DeduplicatePersistenceStrategy implements PersistenceStrategy {
|
||||||
|
|
||||||
private static final int MIN_DEDUPLICATION_INTERVAL_SECS = 1;
|
private static final int MIN_DEDUPLICATION_INTERVAL_SECS = 1;
|
||||||
|
private static final int MAX_DEDUPLICATION_INTERVAL_SECS = (int) Duration.ofDays(1L).toSeconds();
|
||||||
|
|
||||||
private final long deduplicationIntervalMillis;
|
private final long deduplicationIntervalMillis;
|
||||||
private final LoadingCache<Long, Set<UUID>> deduplicationCache;
|
private final LoadingCache<Long, Set<UUID>> deduplicationCache;
|
||||||
|
|
||||||
@JsonCreator
|
@JsonCreator
|
||||||
public DeduplicatePersistenceStrategy(@JsonProperty("deduplicationIntervalSecs") int deduplicationIntervalSecs) {
|
public DeduplicatePersistenceStrategy(@JsonProperty("deduplicationIntervalSecs") int deduplicationIntervalSecs) {
|
||||||
if (deduplicationIntervalSecs < MIN_DEDUPLICATION_INTERVAL_SECS) {
|
if (deduplicationIntervalSecs < MIN_DEDUPLICATION_INTERVAL_SECS || deduplicationIntervalSecs > MAX_DEDUPLICATION_INTERVAL_SECS) {
|
||||||
throw new IllegalArgumentException("Deduplication interval must be at least " + MIN_DEDUPLICATION_INTERVAL_SECS + " second(s), was " + deduplicationIntervalSecs + " second(s)");
|
throw new IllegalArgumentException("Deduplication interval must be at least " + MIN_DEDUPLICATION_INTERVAL_SECS + " second(s) " +
|
||||||
|
"and at most " + MAX_DEDUPLICATION_INTERVAL_SECS + " second(s), was " + deduplicationIntervalSecs + " second(s)");
|
||||||
}
|
}
|
||||||
deduplicationIntervalMillis = Duration.ofSeconds(deduplicationIntervalSecs).toMillis();
|
deduplicationIntervalMillis = Duration.ofSeconds(deduplicationIntervalSecs).toMillis();
|
||||||
deduplicationCache = Caffeine.newBuilder()
|
deduplicationCache = Caffeine.newBuilder()
|
||||||
|
|||||||
@ -39,7 +39,14 @@ class DeduplicatePersistenceStrategyTest {
|
|||||||
void shouldThrowWhenDeduplicationIntervalIsLessThanOneSecond() {
|
void shouldThrowWhenDeduplicationIntervalIsLessThanOneSecond() {
|
||||||
assertThatThrownBy(() -> new DeduplicatePersistenceStrategy(0))
|
assertThatThrownBy(() -> new DeduplicatePersistenceStrategy(0))
|
||||||
.isInstanceOf(IllegalArgumentException.class)
|
.isInstanceOf(IllegalArgumentException.class)
|
||||||
.hasMessageContaining("Deduplication interval must be at least 1 second(s), was 0 second(s)");
|
.hasMessageContaining("Deduplication interval must be at least 1 second(s) and at most 86400 second(s), was 0 second(s)");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldThrowWhenDeduplicationIntervalIsMoreThan24Hours() {
|
||||||
|
assertThatThrownBy(() -> new DeduplicatePersistenceStrategy(86401))
|
||||||
|
.isInstanceOf(IllegalArgumentException.class)
|
||||||
|
.hasMessageContaining("Deduplication interval must be at least 1 second(s) and at most 86400 second(s), was 86401 second(s)");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user