You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2022/04/19 04:04:38 UTC

[james-project] 47/49: JAMES-3737 Fix reactive subscriptions for Cassandra

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

commit 6d766619bee54bacc8ebf41cc6681bbe26cc1626
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Apr 8 13:42:31 2022 +0700

    JAMES-3737 Fix reactive subscriptions for Cassandra
---
 .../cassandra/user/CassandraSubscriptionMapper.java      | 16 ++++++----------
 .../org/apache/james/imap/processor/LSubProcessor.java   |  5 ++---
 2 files changed, 8 insertions(+), 13 deletions(-)

diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
index c7a176de5d..19413fd0e0 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
@@ -70,10 +70,8 @@ public class CassandraSubscriptionMapper extends NonTransactionalMapper implemen
     }
 
     @Override
-    public synchronized void delete(Subscription subscription) {
-        session.execute(deleteStatement.bind()
-            .setString(USER, subscription.getUser().asString())
-            .setString(MAILBOX, subscription.getMailbox()));
+    public void delete(Subscription subscription) {
+        deleteReactive(subscription).block();
     }
 
     @Override
@@ -94,22 +92,20 @@ public class CassandraSubscriptionMapper extends NonTransactionalMapper implemen
     }
 
     @Override
-    public synchronized void save(Subscription subscription) {
-        session.execute(insertStatement.bind()
-            .setString(USER, subscription.getUser().asString())
-            .setString(MAILBOX, subscription.getMailbox()));
+    public void save(Subscription subscription) {
+        saveReactive(subscription).block();
     }
 
     @Override
     public Mono<Void> saveReactive(Subscription subscription) {
-        return executor.executeVoid(deleteStatement.bind()
+        return executor.executeVoid(insertStatement.bind()
             .setString(USER, subscription.getUser().asString())
             .setString(MAILBOX, subscription.getMailbox()));
     }
 
     @Override
     public Mono<Void> deleteReactive(Subscription subscription) {
-        return executor.executeVoid(insertStatement.bind()
+        return executor.executeVoid(deleteStatement.bind()
             .setString(USER, subscription.getUser().asString())
             .setString(MAILBOX, subscription.getMailbox()));
     }
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/LSubProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/LSubProcessor.java
index 14c831aa52..aab02b663f 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/LSubProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/LSubProcessor.java
@@ -73,9 +73,8 @@ public class LSubProcessor extends AbstractMailboxProcessor<LsubRequest> {
 
     private Mono<Void> listSubscriptions(ImapSession session, Responder responder, String referenceName, String mailboxName) {
         MailboxSession mailboxSession = session.getMailboxSession();
-        Mono<List<String>> mailboxesMono;
         try {
-            mailboxesMono = Flux.from(subscriptionManager.subscriptionsReactive(mailboxSession))
+            Mono<List<String>> mailboxesMono = Flux.from(subscriptionManager.subscriptionsReactive(mailboxSession))
                 .collectList();
 
             String decodedMailName = ModifiedUtf7.decodeModifiedUTF7(referenceName);
@@ -84,9 +83,9 @@ public class LSubProcessor extends AbstractMailboxProcessor<LsubRequest> {
                 decodedMailName,
                 ModifiedUtf7.decodeModifiedUTF7(mailboxName),
                 mailboxSession.getPathDelimiter());
-            Collection<String> mailboxResponses = new ArrayList<>();
 
             return mailboxesMono.doOnNext(mailboxes -> {
+                Collection<String> mailboxResponses = new ArrayList<>();
                 for (String mailbox : mailboxes) {
                     respond(responder, expression, mailbox, true, mailboxes, mailboxResponses, mailboxSession.getPathDelimiter());
                 }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org