This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
The following commit(s) were added to refs/heads/master by this push: new de80310717 [FIX] Filter too big values for Cassandra TTLs (#2156) de80310717 is described below commit de80310717b00db3552db44d1a489919a9600e50 Author: Benoit TELLIER <btell...@linagora.com> AuthorDate: Tue Mar 26 08:48:32 2024 +0100 [FIX] Filter too big values for Cassandra TTLs (#2156) --- .../james/vacation/api/NotificationRegistryContract.java | 16 ++++++++++++++++ .../cassandra/CassandraNotificationRegistryDAO.java | 3 ++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/server/data/data-api/src/test/java/org/apache/james/vacation/api/NotificationRegistryContract.java b/server/data/data-api/src/test/java/org/apache/james/vacation/api/NotificationRegistryContract.java index 77ec6fe5c6..e443673e62 100644 --- a/server/data/data-api/src/test/java/org/apache/james/vacation/api/NotificationRegistryContract.java +++ b/server/data/data-api/src/test/java/org/apache/james/vacation/api/NotificationRegistryContract.java @@ -62,6 +62,22 @@ public interface NotificationRegistryContract { assertThat(notificationRegistry().isRegistered(ACCOUNT_ID, recipientId()).block()).isTrue(); } + @Test + default void registerShouldWorkWithExpiracyDateInTheFarFuture() { + when(zonedDateTimeProvider.get()).thenReturn(ZONED_DATE_TIME); + notificationRegistry().register(ACCOUNT_ID, recipientId(), Optional.of(ZonedDateTime.parse("2050-04-03T02:01:05+07:00[Asia/Vientiane]"))).block(); + + assertThat(notificationRegistry().isRegistered(ACCOUNT_ID, recipientId()).block()).isTrue(); + } + + @Test + default void registerShouldWorkWithExpiracyDateInTheFarFarFuture() { + when(zonedDateTimeProvider.get()).thenReturn(ZONED_DATE_TIME); + notificationRegistry().register(ACCOUNT_ID, recipientId(), Optional.of(ZonedDateTime.parse("2120-04-03T02:01:05+07:00[Asia/Vientiane]"))).block(); + + assertThat(notificationRegistry().isRegistered(ACCOUNT_ID, recipientId()).block()).isTrue(); + } + @Test default void registerShouldExpireAfterExpiracyDate() { when(zonedDateTimeProvider.get()).thenReturn(ZONED_DATE_TIME); diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/vacation/cassandra/CassandraNotificationRegistryDAO.java b/server/data/data-cassandra/src/main/java/org/apache/james/vacation/cassandra/CassandraNotificationRegistryDAO.java index ec498ee800..3f6b8b80c8 100644 --- a/server/data/data-cassandra/src/main/java/org/apache/james/vacation/cassandra/CassandraNotificationRegistryDAO.java +++ b/server/data/data-cassandra/src/main/java/org/apache/james/vacation/cassandra/CassandraNotificationRegistryDAO.java @@ -76,7 +76,8 @@ public class CassandraNotificationRegistryDAO { public Mono<Void> register(AccountId accountId, RecipientId recipientId, Optional<Integer> ttl) { return cassandraAsyncExecutor.executeVoid( - ttl.map(value -> registerWithTTLStatement.bind().setInt(TTL, value)) + ttl.filter(value -> value <= 630720000) // Maximum value for Cassandra's TTL + .map(value -> registerWithTTLStatement.bind().setInt(TTL, value)) .orElse(registerStatement.bind()) .setString(CassandraNotificationTable.ACCOUNT_ID, accountId.getIdentifier()) .setString(CassandraNotificationTable.RECIPIENT_ID, recipientId.getAsString())); --------------------------------------------------------------------- To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org For additional commands, e-mail: notifications-h...@james.apache.org