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