You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2023/12/04 08:38:08 UTC
(james-project) 03/07: JAMES-2586 - Fixup PostgresMessageMapper updateFlags method - apply single new modSeq for all messages
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch postgresql
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 223c353226e244a8f0b1c62efcc44e86346ee33b
Author: Tung Tran <vt...@linagora.com>
AuthorDate: Thu Nov 30 11:41:49 2023 +0700
JAMES-2586 - Fixup PostgresMessageMapper updateFlags method - apply single new modSeq for all messages
---
.../james/mailbox/postgres/mail/PostgresMessageMapper.java | 12 ++++++++++--
.../mailbox/postgres/mail/dao/PostgresMailboxMessageDAO.java | 1 +
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMessageMapper.java b/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMessageMapper.java
index badeadbf1b..1a6787d5c4 100644
--- a/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMessageMapper.java
+++ b/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMessageMapper.java
@@ -307,8 +307,16 @@ public class PostgresMessageMapper implements MessageMapper {
private Flux<UpdatedFlags> updateFlagsPublisher(Mailbox mailbox, FlagsUpdateCalculator flagsUpdateCalculator, MessageRange range) {
return mailboxMessageDAO.findMessagesMetadata((PostgresMailboxId) mailbox.getMailboxId(), range)
- .flatMap(currentMetaData -> modSeqProvider.nextModSeqReactive(mailbox.getMailboxId())
- .flatMap(newModSeq -> updateFlags(currentMetaData, flagsUpdateCalculator, newModSeq)));
+ .collectList()
+ .flatMapMany(listMessagesMetadata -> updatedFlags(listMessagesMetadata, mailbox, flagsUpdateCalculator));
+ }
+
+ private Flux<UpdatedFlags> updatedFlags(List<ComposedMessageIdWithMetaData> listMessagesMetaData,
+ Mailbox mailbox,
+ FlagsUpdateCalculator flagsUpdateCalculator) {
+ return modSeqProvider.nextModSeqReactive(mailbox.getMailboxId())
+ .flatMapMany(newModSeq -> Flux.fromIterable(listMessagesMetaData)
+ .flatMap(messageMetaData -> updateFlags(messageMetaData, flagsUpdateCalculator, newModSeq)));
}
private Mono<UpdatedFlags> updateFlags(ComposedMessageIdWithMetaData currentMetaData,
diff --git a/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/dao/PostgresMailboxMessageDAO.java b/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/dao/PostgresMailboxMessageDAO.java
index c55132b59f..cbcba2943e 100644
--- a/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/dao/PostgresMailboxMessageDAO.java
+++ b/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/dao/PostgresMailboxMessageDAO.java
@@ -335,6 +335,7 @@ public class PostgresMailboxMessageDAO {
return updateStatement.get()
.set(USER_FLAGS, updatedFlags.getNewFlags().getUserFlags())
+ .set(MOD_SEQ, updatedFlags.getModSeq().asLong())
.where(MAILBOX_ID.eq(mailboxId.asUuid()))
.and(MESSAGE_UID.eq(uid.asLong()));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org