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 2021/06/09 07:26:14 UTC

[james-project] 05/07: [PERFORMANCE] CassandraMessageDAOV3 should use CassandraAsyncExecutor::executeSingleRow

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 e9729018fb6c22e52c04ddbc1e9ed81ff20daa34
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Jun 4 13:57:45 2021 +0700

    [PERFORMANCE] CassandraMessageDAOV3 should use CassandraAsyncExecutor::executeSingleRow
    
    This prevents a single row ResultSet post-traitements to be scheduled
    on the elasticScheduler
---
 .../mailbox/cassandra/mail/CassandraMessageDAOV3.java     | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOV3.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOV3.java
index b044020..d4e6c40 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOV3.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOV3.java
@@ -80,7 +80,6 @@ import com.datastax.driver.core.CodecRegistry;
 import com.datastax.driver.core.ConsistencyLevel;
 import com.datastax.driver.core.DataType;
 import com.datastax.driver.core.PreparedStatement;
-import com.datastax.driver.core.ResultSet;
 import com.datastax.driver.core.Row;
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.TypeCodec;
@@ -293,23 +292,17 @@ public class CassandraMessageDAOV3 {
 
     public Mono<MessageRepresentation> retrieveMessage(CassandraMessageId cassandraMessageId, FetchType fetchType) {
         return retrieveRow(cassandraMessageId)
-                .flatMap(resultSet -> message(resultSet, cassandraMessageId, fetchType));
+                .flatMap(row -> message(row, cassandraMessageId, fetchType));
     }
 
-    private Mono<ResultSet> retrieveRow(CassandraMessageId messageId) {
-        return cassandraAsyncExecutor.execute(select
+    private Mono<Row> retrieveRow(CassandraMessageId messageId) {
+        return cassandraAsyncExecutor.executeSingleRow(select
             .bind()
             .setUUID(MESSAGE_ID, messageId.get())
             .setConsistencyLevel(consistencyLevel));
     }
 
-    private Mono<MessageRepresentation>
-    message(ResultSet rows, CassandraMessageId cassandraMessageId, FetchType fetchType) {
-        if (rows.isExhausted()) {
-            return Mono.empty();
-        }
-
-        Row row = rows.one();
+    private Mono<MessageRepresentation> message(Row row, CassandraMessageId cassandraMessageId, FetchType fetchType) {
         BlobId headerId = retrieveBlobId(HEADER_CONTENT, row);
         BlobId bodyId = retrieveBlobId(BODY_CONTENT, row);
         int bodyStartOctet = row.getInt(BODY_START_OCTET);

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