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 002c2d989dd3123dc309051185906ed0c9cb3af7
Author: Benoit Tellier <[email protected]>
AuthorDate: Mon Dec 2 18:16:04 2019 +0700

    JAMES-2991 Preview computation on parallel scheduler
---
 .../james/jmap/event/ComputeMessageFastViewProjectionListener.java   | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListener.java
 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListener.java
index cd8c9e1..9bd0794 100644
--- 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListener.java
+++ 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListener.java
@@ -44,6 +44,7 @@ import com.github.fge.lambdas.Throwing;
 import com.google.common.annotations.VisibleForTesting;
 
 import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
 import reactor.core.scheduler.Schedulers;
 
 public class ComputeMessageFastViewProjectionListener implements 
MailboxListener.GroupMailboxListener {
@@ -83,8 +84,10 @@ public class ComputeMessageFastViewProjectionListener 
implements MailboxListener
 
     private void handleAddedEvent(Added addedEvent, MailboxSession session) 
throws MailboxException {
         
Flux.fromIterable(messageIdManager.getMessages(addedEvent.getMessageIds(), 
FetchGroup.BODY_CONTENT, session))
+            .flatMap(Throwing.function(messageResult -> Mono.fromCallable(
+                () -> Pair.of(messageResult.getMessageId(), 
computeFastViewPrecomputedProperties(messageResult)))
+                    .subscribeOn(Schedulers.parallel())))
             .publishOn(Schedulers.boundedElastic())
-            .map(Throwing.function(messageResult -> 
Pair.of(messageResult.getMessageId(), 
computeFastViewPrecomputedProperties(messageResult))))
             .flatMap(message -> 
messageFastViewProjection.store(message.getKey(), message.getValue()))
             .then()
             .block();


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to