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/01/06 03:02:48 UTC

[james-project] 09/12: JAMES-3771 Refactor extract operations from hit in OpenSearchListeningMessageSearchIndex

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 5934ecaa4d543b2fd8ff1fb41ad853d12aacbb67
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Wed Dec 14 17:13:46 2022 +0700

    JAMES-3771 Refactor extract operations from hit in OpenSearchListeningMessageSearchIndex
    
     JsonpDeserializer.arrayDeserializer seems to do some blocking action in its code, resulting in severe issues when running perf tests on James with it.
---
 .../events/OpenSearchListeningMessageSearchIndex.java     | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/events/OpenSearchListeningMessageSearchIndex.java b/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/events/OpenSearchListeningMessageSearchIndex.java
index 420d734d31..5284ec9d2e 100644
--- a/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/events/OpenSearchListeningMessageSearchIndex.java
+++ b/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/events/OpenSearchListeningMessageSearchIndex.java
@@ -62,7 +62,6 @@ import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
 import org.opensearch.client.json.JsonData;
-import org.opensearch.client.json.JsonpDeserializer;
 import org.opensearch.client.opensearch._types.FieldValue;
 import org.opensearch.client.opensearch._types.query_dsl.Query;
 import org.opensearch.client.opensearch._types.query_dsl.TermQuery;
@@ -273,8 +272,11 @@ public class OpenSearchListeningMessageSearchIndex extends ListeningMessageSearc
     private void extractMessageIdFromHit(Hit<ObjectNode> hit, SynchronousSink<MessageId> sink) {
         JsonData messageId = hit.fields().get(MESSAGE_ID);
         if (messageId != null) {
-            List<String> extractMessageId = messageId.deserialize(JsonpDeserializer.arrayDeserializer(JsonpDeserializer.stringDeserializer()));
-            sink.next(messageIdFactory.fromString(extractMessageId.get(0)));
+            String messageIdAsString = messageId.toJson()
+                .asJsonArray()
+                .getString(0);
+
+            sink.next(messageIdFactory.fromString(messageIdAsString));
         } else {
             LOGGER.warn("Can not extract UID, MessageID and/or MailboxId for search result {}", hit.id());
         }
@@ -283,8 +285,11 @@ public class OpenSearchListeningMessageSearchIndex extends ListeningMessageSearc
     private void extractUidFromHit(Hit<ObjectNode> hit, SynchronousSink<MessageUid> sink) {
         JsonData uid = hit.fields().get(UID);
         if (uid != null) {
-            List<Number> uidAsNumber = uid.deserialize(JsonpDeserializer.arrayDeserializer(JsonpDeserializer.numberDeserializer()));
-            sink.next(MessageUid.of(uidAsNumber.get(0).longValue()));
+            int uidAsInt = uid.toJson()
+                .asJsonArray()
+                .getInt(0);
+
+            sink.next(MessageUid.of(uidAsInt));
         } else {
             LOGGER.warn("Can not extract UID, MessageID and/or MailboxId for search result {}", hit.id());
         }


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