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 2023/04/05 03:00:40 UTC
[james-project] 01/02: [PERF] Fasten searching deleted messages
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 361fd65dd22d3dc2ea642c57fd14b59128e06e82
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Apr 4 17:55:47 2023 +0700
[PERF] Fasten searching deleted messages
---
.../james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java
index ee4624d847..c6d3f902f1 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java
@@ -39,6 +39,7 @@ import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.model.MessageRange;
import com.datastax.oss.driver.api.core.CqlSession;
+import com.datastax.oss.driver.api.core.ProtocolVersion;
import com.datastax.oss.driver.api.core.cql.BatchStatement;
import com.datastax.oss.driver.api.core.cql.BatchStatementBuilder;
import com.datastax.oss.driver.api.core.cql.BatchType;
@@ -64,6 +65,7 @@ public class CassandraDeletedMessageDAO {
private final PreparedStatement selectOneUidStatement;
private final PreparedStatement selectBetweenUidStatement;
private final PreparedStatement selectFromUidStatement;
+ private final ProtocolVersion protocolVersion;
@Inject
public CassandraDeletedMessageDAO(CqlSession session) {
@@ -75,6 +77,7 @@ public class CassandraDeletedMessageDAO {
this.selectOneUidStatement = prepareOneUidStatement(session);
this.selectBetweenUidStatement = prepareBetweenUidStatement(session);
this.selectFromUidStatement = prepareFromUidStatement(session);
+ this.protocolVersion = session.getContext().getProtocolVersion();
}
private PreparedStatement prepareAllUidStatement(CqlSession session) {
@@ -192,7 +195,7 @@ public class CassandraDeletedMessageDAO {
public Flux<MessageUid> retrieveDeletedMessage(CassandraId cassandraId, MessageRange range) {
return retrieveResultSetOfDeletedMessage(cassandraId, range)
- .map(row -> MessageUid.of(row.getLong(0)));
+ .map(this::asMessageUid);
}
private Flux<Row> retrieveResultSetOfDeletedMessage(CassandraId cassandraId, MessageRange range) {
@@ -237,4 +240,8 @@ public class CassandraDeletedMessageDAO {
.setUuid(MAILBOX_ID, cassandraId.asUuid())
.setLong(UID_FROM, from.asLong()));
}
+
+ private MessageUid asMessageUid(Row row) {
+ return MessageUid.of(TypeCodecs.BIGINT.decodePrimitive(row.getBytesUnsafe(0), protocolVersion));
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org