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 2025/02/12 06:25:29 UTC
(james-project) branch master updated (57e5547d35 -> f08bc04101)
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
from 57e5547d35 JAMES-4104 [webadmin-cli] Update feign client - use okhttp client instead of default
new b6b68130da [ENHANCEMENT] Allow plug custom indexers into OpenSearchListeningMessageSearchIndex
new 63afb9ae54 [ENHANCEMENT] OpenSearchListeningMessageSearchIndex: option to accept fetching the FULL message content
new f08bc04101 [ENHANCEMENT] Adapt mock tests
The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../servers/pages/distributed/configure/jvm.adoc | 15 ++++++-
.../OpenSearchListeningMessageSearchIndex.java | 48 ++++++++++++++++++----
.../opensearch/OpenSearchIntegrationTest.java | 3 +-
.../OpenSearchNoIndexBodyIntegrationTest.java | 3 +-
.../OpenSearchListeningMessageSearchIndexTest.java | 6 ++-
.../search/OpenSearchSearchHighlighterTest.java | 3 +-
.../opensearch/search/OpenSearchSearcherTest.java | 3 +-
.../store/search/ListeningMessageSearchIndex.java | 6 ++-
.../elasticsearch/host/OpenSearchHostSystem.java | 3 +-
.../modules/mailbox/OpenSearchMailboxModule.java | 2 +
.../james/webadmin/routes/MailboxesRoutesTest.java | 7 +++-
.../webadmin/routes/UserMailboxesRoutesTest.java | 4 +-
12 files changed, 83 insertions(+), 20 deletions(-)
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org
(james-project) 01/03: [ENHANCEMENT] Allow plug custom indexers into OpenSearchListeningMessageSearchIndex
Posted by bt...@apache.org.
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 b6b68130dab07dfbf543590e10ed56a4f6d75aae
Author: Quan Tran <hq...@linagora.com>
AuthorDate: Fri Feb 7 11:41:31 2025 +0700
[ENHANCEMENT] Allow plug custom indexers into OpenSearchListeningMessageSearchIndex
---
.../OpenSearchListeningMessageSearchIndex.java | 44 +++++++++++++++++-----
.../opensearch/OpenSearchIntegrationTest.java | 3 +-
.../OpenSearchNoIndexBodyIntegrationTest.java | 3 +-
.../OpenSearchListeningMessageSearchIndexTest.java | 6 ++-
.../search/OpenSearchSearchHighlighterTest.java | 3 +-
.../opensearch/search/OpenSearchSearcherTest.java | 3 +-
.../store/search/ListeningMessageSearchIndex.java | 6 ++-
.../elasticsearch/host/OpenSearchHostSystem.java | 3 +-
.../modules/mailbox/OpenSearchMailboxModule.java | 2 +
.../james/webadmin/routes/MailboxesRoutesTest.java | 3 +-
.../webadmin/routes/UserMailboxesRoutesTest.java | 3 +-
11 files changed, 60 insertions(+), 19 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 33d1abe7ea..dccead70fa 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
@@ -107,6 +107,17 @@ public class OpenSearchListeningMessageSearchIndex extends ListeningMessageSearc
Mono<Void> handleAddedEvent(MailboxSession session, MailboxEvents.Added addedEvent, MailboxId mailboxId);
}
+ public interface Indexer {
+ Mono<Void> added(MailboxSession session, MailboxEvents.Added addedEvent, Mailbox mailbox, MailboxMessage message);
+
+ static Indexer merge(Indexer defaultIndexer, Set<Indexer> overrides) {
+ return (session, addedEvent, mailbox, message) -> defaultIndexer.added(session, addedEvent, mailbox, message)
+ .then(Flux.fromIterable(overrides)
+ .concatMap(indexer -> indexer.added(session, addedEvent, mailbox, message))
+ .then());
+ }
+ }
+
class NaiveIndexingStrategy implements IndexingStrategy {
@Override
@@ -120,6 +131,20 @@ public class OpenSearchListeningMessageSearchIndex extends ListeningMessageSearc
}
}
+ class DefaultIndexer implements Indexer {
+ @Override
+ public Mono<Void> added(MailboxSession session, MailboxEvents.Added addedEvent, Mailbox mailbox, MailboxMessage message) {
+ LOGGER.info("Indexing mailbox {}-{} of user {} on message {}",
+ mailbox.getName(),
+ mailbox.getMailboxId().serialize(),
+ session.getUser().asString(),
+ message.getUid().asLong());
+
+ return generateIndexedJson(mailbox, message, session)
+ .flatMap(jsonContent -> add(mailbox.getMailboxId(), message.getUid(), jsonContent));
+ }
+ }
+
class OptimizedIndexingStrategy implements IndexingStrategy {
@@ -231,6 +256,7 @@ public class OpenSearchListeningMessageSearchIndex extends ListeningMessageSearc
private final Metric reIndexNotFoundMetric;
private final IndexingStrategy indexingStrategy;
private final IndexBody indexBody;
+ private final Set<Indexer> indexerOverrides;
@Inject
public OpenSearchListeningMessageSearchIndex(MailboxSessionMapperFactory factory,
@@ -238,7 +264,7 @@ public class OpenSearchListeningMessageSearchIndex extends ListeningMessageSearc
@Named(MailboxOpenSearchConstants.InjectionNames.MAILBOX) OpenSearchIndexer indexer,
OpenSearchSearcher searcher, MessageToOpenSearchJson messageToOpenSearchJson,
SessionProvider sessionProvider, RoutingKey.Factory<MailboxId> routingKeyFactory, MessageId.Factory messageIdFactory,
- OpenSearchMailboxConfiguration configuration, MetricFactory metricFactory) {
+ OpenSearchMailboxConfiguration configuration, MetricFactory metricFactory, Set<Indexer> indexersOverride) {
super(factory, searchOverrides, sessionProvider);
this.sessionProvider = sessionProvider;
this.factory = factory;
@@ -247,6 +273,7 @@ public class OpenSearchListeningMessageSearchIndex extends ListeningMessageSearc
this.searcher = searcher;
this.routingKeyFactory = routingKeyFactory;
this.messageIdFactory = messageIdFactory;
+ this.indexerOverrides = indexersOverride;
if (configuration.isOptimiseMoves()) {
this.indexingStrategy = new OptimizedIndexingStrategy();
} else {
@@ -346,14 +373,13 @@ public class OpenSearchListeningMessageSearchIndex extends ListeningMessageSearc
@Override
public Mono<Void> add(MailboxSession session, Mailbox mailbox, MailboxMessage message) {
- LOGGER.info("Indexing mailbox {}-{} of user {} on message {}",
- mailbox.getName(),
- mailbox.getMailboxId().serialize(),
- session.getUser().asString(),
- message.getUid().asLong());
-
- return generateIndexedJson(mailbox, message, session)
- .flatMap(jsonContent -> add(mailbox.getMailboxId(), message.getUid(), jsonContent));
+ return add(session, mailbox, message, null);
+ }
+
+ @Override
+ public Mono<Void> add(MailboxSession session, Mailbox mailbox, MailboxMessage message, MailboxEvents.Added added) {
+ return Indexer.merge(new DefaultIndexer(), indexerOverrides)
+ .added(session, added, mailbox, message);
}
private Mono<Void> add(MailboxId mailboxId, MessageUid messageUid, String jsonContent) {
diff --git a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java
index 84a521aee9..e1b3299606 100644
--- a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java
+++ b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java
@@ -162,7 +162,8 @@ class OpenSearchIntegrationTest extends AbstractMessageSearchIndexTest {
readAliasName, routingKeyFactory),
new MessageToOpenSearchJson(textExtractor, ZoneId.of("Europe/Paris"), IndexAttachments.YES, IndexHeaders.YES),
preInstanciationStage.getSessionProvider(), routingKeyFactory, messageIdFactory,
- openSearchMailboxConfiguration(), new RecordingMetricFactory()))
+ openSearchMailboxConfiguration(), new RecordingMetricFactory(),
+ ImmutableSet.of()))
.noPreDeletionHooks()
.storeQuotaManager()
.build();
diff --git a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchNoIndexBodyIntegrationTest.java b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchNoIndexBodyIntegrationTest.java
index 7b11590732..8673fe901f 100644
--- a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchNoIndexBodyIntegrationTest.java
+++ b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchNoIndexBodyIntegrationTest.java
@@ -126,7 +126,8 @@ public class OpenSearchNoIndexBodyIntegrationTest {
new OpenSearchSearcher(client, new QueryConverter(new CriterionConverter()), SEARCH_SIZE, readAliasName, routingKeyFactory),
new MessageToOpenSearchJson(textExtractor, ZoneId.of("Europe/Paris"), IndexAttachments.YES, IndexHeaders.YES, IndexBody.NO),
preInstanciationStage.getSessionProvider(), routingKeyFactory, messageIdFactory,
- OpenSearchMailboxConfiguration.builder().indexBody(IndexBody.NO).build(), new RecordingMetricFactory()))
+ OpenSearchMailboxConfiguration.builder().indexBody(IndexBody.NO).build(), new RecordingMetricFactory(),
+ ImmutableSet.of()))
.noPreDeletionHooks()
.storeQuotaManager()
.build();
diff --git a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/events/OpenSearchListeningMessageSearchIndexTest.java b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/events/OpenSearchListeningMessageSearchIndexTest.java
index 90cfe54fa1..4c4fdf119b 100644
--- a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/events/OpenSearchListeningMessageSearchIndexTest.java
+++ b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/events/OpenSearchListeningMessageSearchIndexTest.java
@@ -220,7 +220,8 @@ class OpenSearchListeningMessageSearchIndexTest {
testee = new OpenSearchListeningMessageSearchIndex(mapperFactory,
ImmutableSet.of(), openSearchIndexer, openSearchSearcher,
messageToOpenSearchJson, sessionProvider, new MailboxIdRoutingKeyFactory(), messageIdFactory,
- OpenSearchMailboxConfiguration.builder().build(), new RecordingMetricFactory());
+ OpenSearchMailboxConfiguration.builder().build(), new RecordingMetricFactory(),
+ ImmutableSet.of());
session = sessionProvider.createSystemSession(USERNAME);
mailbox = mapperFactory.getMailboxMapper(session).create(MailboxPath.forUser(USERNAME, DefaultMailboxes.INBOX), UidValidity.generate()).block();
@@ -287,7 +288,8 @@ class OpenSearchListeningMessageSearchIndexTest {
testee = new OpenSearchListeningMessageSearchIndex(mapperFactory,
ImmutableSet.of(), openSearchIndexer, openSearchSearcher,
messageToOpenSearchJson, sessionProvider, new MailboxIdRoutingKeyFactory(), new InMemoryMessageId.Factory(),
- OpenSearchMailboxConfiguration.builder().build(), new RecordingMetricFactory());
+ OpenSearchMailboxConfiguration.builder().build(), new RecordingMetricFactory(),
+ ImmutableSet.of());
testee.add(session, mailbox, MESSAGE_WITH_ATTACHMENT).block();
awaitForOpenSearch(QueryBuilders.matchAll().build().toQuery(), 1L);
diff --git a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearchHighlighterTest.java b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearchHighlighterTest.java
index ef4503a78d..34162e536f 100644
--- a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearchHighlighterTest.java
+++ b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearchHighlighterTest.java
@@ -142,7 +142,8 @@ public class OpenSearchSearchHighlighterTest implements SearchHighLighterContrac
openSearchSearcher,
new MessageToOpenSearchJson(textExtractor, ZoneId.of("Europe/Paris"), IndexAttachments.YES, IndexHeaders.YES),
preInstanciationStage.getSessionProvider(), routingKeyFactory, messageIdFactory,
- openSearchMailboxConfiguration, new RecordingMetricFactory()))
+ openSearchMailboxConfiguration, new RecordingMetricFactory(),
+ ImmutableSet.of()))
.noPreDeletionHooks()
.storeQuotaManager()
.build();
diff --git a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearcherTest.java b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearcherTest.java
index 412f94414d..635f98b837 100644
--- a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearcherTest.java
+++ b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearcherTest.java
@@ -132,7 +132,8 @@ class OpenSearchSearcherTest {
new OpenSearchSearcher(client, new QueryConverter(new CriterionConverter()), SEARCH_SIZE, readAliasName, routingKeyFactory),
new MessageToOpenSearchJson(textExtractor, ZoneId.of("Europe/Paris"), IndexAttachments.YES, IndexHeaders.YES),
preInstanciationStage.getSessionProvider(), routingKeyFactory, messageIdFactory,
- OpenSearchMailboxConfiguration.builder().build(), new RecordingMetricFactory()))
+ OpenSearchMailboxConfiguration.builder().build(), new RecordingMetricFactory(),
+ ImmutableSet.of()))
.noPreDeletionHooks()
.storeQuotaManager()
.build();
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
index 6c7d7f1fde..054717f020 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
@@ -141,7 +141,7 @@ public abstract class ListeningMessageSearchIndex implements MessageSearchIndex,
return Flux.fromIterable(MessageRange.toRanges(added.getUids()))
.concatMap(range -> retrieveMailboxMessages(session, mailbox, range, fetchType))
.publishOn(Schedulers.parallel())
- .concatMap(mailboxMessage -> add(session, mailbox, mailboxMessage))
+ .concatMap(mailboxMessage -> add(session, mailbox, mailboxMessage, added))
.then();
}
@@ -161,6 +161,10 @@ public abstract class ListeningMessageSearchIndex implements MessageSearchIndex,
*/
public abstract Mono<Void> add(MailboxSession session, Mailbox mailbox, MailboxMessage message);
+ public Mono<Void> add(MailboxSession session, Mailbox mailbox, MailboxMessage message, Added added) {
+ return add(session, mailbox, message);
+ }
+
/**
* Delete the concerned UIDs for the given {@link Mailbox} from the index
*
diff --git a/mpt/impl/imap-mailbox/opensearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/OpenSearchHostSystem.java b/mpt/impl/imap-mailbox/opensearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/OpenSearchHostSystem.java
index 8ce82167ac..2a161caf37 100644
--- a/mpt/impl/imap-mailbox/opensearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/OpenSearchHostSystem.java
+++ b/mpt/impl/imap-mailbox/opensearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/OpenSearchHostSystem.java
@@ -108,7 +108,8 @@ public class OpenSearchHostSystem extends JamesImapHostSystem {
MailboxOpenSearchConstants.DEFAULT_MAILBOX_READ_ALIAS, routingKeyFactory),
new MessageToOpenSearchJson(new DefaultTextExtractor(), ZoneId.of("Europe/Paris"), IndexAttachments.YES, IndexHeaders.YES),
preInstanciationStage.getSessionProvider(), routingKeyFactory, messageIdFactory,
- OpenSearchMailboxConfiguration.builder().build(), new RecordingMetricFactory()))
+ OpenSearchMailboxConfiguration.builder().build(), new RecordingMetricFactory(),
+ ImmutableSet.of()))
.noPreDeletionHooks()
.storeQuotaManager()
.build();
diff --git a/server/container/guice/opensearch/src/main/java/org/apache/james/modules/mailbox/OpenSearchMailboxModule.java b/server/container/guice/opensearch/src/main/java/org/apache/james/modules/mailbox/OpenSearchMailboxModule.java
index a36402ca70..4abde88eac 100644
--- a/server/container/guice/opensearch/src/main/java/org/apache/james/modules/mailbox/OpenSearchMailboxModule.java
+++ b/server/container/guice/opensearch/src/main/java/org/apache/james/modules/mailbox/OpenSearchMailboxModule.java
@@ -104,6 +104,8 @@ public class OpenSearchMailboxModule extends AbstractModule {
Multibinder.newSetBinder(binder(), StartUpCheck.class)
.addBinding()
.to(OpenSearchStartUpCheck.class);
+
+ Multibinder.newSetBinder(binder(), OpenSearchListeningMessageSearchIndex.Indexer.class);
}
@Provides
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
index 5ff774c7bb..0f94c80b21 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
@@ -165,7 +165,8 @@ class MailboxesRoutesTest {
new OpenSearchSearcher(client, new QueryConverter(new CriterionConverter()), SEARCH_SIZE,
MailboxOpenSearchConstants.DEFAULT_MAILBOX_READ_ALIAS, routingKeyFactory),
new MessageToOpenSearchJson(new DefaultTextExtractor(), ZoneId.of("Europe/Paris"), IndexAttachments.YES, IndexHeaders.YES),
- preInstanciationStage.getSessionProvider(), routingKeyFactory, messageIdFactory, OpenSearchMailboxConfiguration.builder().build(), new RecordingMetricFactory()))
+ preInstanciationStage.getSessionProvider(), routingKeyFactory, messageIdFactory, OpenSearchMailboxConfiguration.builder().build(), new RecordingMetricFactory(),
+ ImmutableSet.of()))
.noPreDeletionHooks()
.storeQuotaManager()
.build();
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
index 7c82bdcb0c..e6ea677bd1 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
@@ -1521,7 +1521,8 @@ class UserMailboxesRoutesTest {
new OpenSearchSearcher(client, new QueryConverter(new CriterionConverter()), SEARCH_SIZE,
MailboxOpenSearchConstants.DEFAULT_MAILBOX_READ_ALIAS, routingKeyFactory),
new MessageToOpenSearchJson(new DefaultTextExtractor(), ZoneId.of("Europe/Paris"), IndexAttachments.YES, IndexHeaders.YES),
- preInstanciationStage.getSessionProvider(), routingKeyFactory, messageIdFactory, OpenSearchMailboxConfiguration.builder().build(), new RecordingMetricFactory()))
+ preInstanciationStage.getSessionProvider(), routingKeyFactory, messageIdFactory, OpenSearchMailboxConfiguration.builder().build(), new RecordingMetricFactory(),
+ ImmutableSet.of()))
.noPreDeletionHooks()
.storeQuotaManager()
.build();
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org
(james-project) 02/03: [ENHANCEMENT] OpenSearchListeningMessageSearchIndex: option to accept fetching the FULL message content
Posted by bt...@apache.org.
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 63afb9ae54e3d2ba9d1e24de942ab969d2d38ee2
Author: Quan Tran <hq...@linagora.com>
AuthorDate: Fri Feb 7 12:20:16 2025 +0700
[ENHANCEMENT] OpenSearchListeningMessageSearchIndex: option to accept fetching the FULL message content
To allow index overrides can have the full message if needed.
We provide an option to disable the behavior which could be optimal when combining with the index headers only.
---
docs/modules/servers/pages/distributed/configure/jvm.adoc | 15 ++++++++++++++-
.../events/OpenSearchListeningMessageSearchIndex.java | 4 ++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/docs/modules/servers/pages/distributed/configure/jvm.adoc b/docs/modules/servers/pages/distributed/configure/jvm.adoc
index cbb3998dc4..745892c385 100644
--- a/docs/modules/servers/pages/distributed/configure/jvm.adoc
+++ b/docs/modules/servers/pages/distributed/configure/jvm.adoc
@@ -2,4 +2,17 @@
:navtitle: jvm.properties
:sample-configuration-prefix-url: https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration
-include::partial$configure/jvm.adoc[]
\ No newline at end of file
+include::partial$configure/jvm.adoc[]
+
+== Disable OpenSearchListeningMessageSearchIndex fetch full message content
+
+Whether to fetch full message content when indexing messages in OpenSearch. This is useful when you want to avoid fetch full message content while indexing only headers for example.
+
+Be careful whether the custom `OpenSearchListeningMessageSearchIndex.Indexer` (s) need full message content or not.
+
+Ex in `jvm.properties`:
+----
+opensearch.index.listener.fetch.full.content=false
+----
+
+Optional. Boolean. Defaults to true.
\ No newline at end of file
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 dccead70fa..223c8da4e7 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
@@ -238,6 +238,7 @@ public class OpenSearchListeningMessageSearchIndex extends ListeningMessageSearc
}
+ private static final boolean FETCH_FULL_MESSAGE_CONTENT = Boolean.valueOf(System.getProperty("opensearch.index.listener.fetch.full.content", "true"));
private static final Logger LOGGER = LoggerFactory.getLogger(OpenSearchListeningMessageSearchIndex.class);
private static final String ID_SEPARATOR = ":";
private static final Group GROUP = new OpenSearchListeningMessageSearchIndexGroup();
@@ -342,6 +343,9 @@ public class OpenSearchListeningMessageSearchIndex extends ListeningMessageSearc
}
private FetchType chooseFetchType() {
+ if (FETCH_FULL_MESSAGE_CONTENT) {
+ return FetchType.FULL;
+ }
if (indexBody == IndexBody.YES) {
return FetchType.FULL;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org
(james-project) 03/03: [ENHANCEMENT] Adapt mock tests
Posted by bt...@apache.org.
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 f08bc04101b8d0f77eda84183599a3a1b3bad0fe
Author: Quan Tran <hq...@linagora.com>
AuthorDate: Mon Feb 10 14:55:58 2025 +0700
[ENHANCEMENT] Adapt mock tests
---
.../java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java | 4 ++++
.../org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java | 1 +
2 files changed, 5 insertions(+)
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
index 0f94c80b21..6d196d9f77 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
@@ -705,6 +705,7 @@ class MailboxesRoutesTest {
verify(searchIndex).deleteAll(any(MailboxSession.class), mailboxIdCaptor.capture());
verify(searchIndex).add(any(MailboxSession.class), mailboxCaptor2.capture(), messageCaptor.capture());
+ verify(searchIndex).add(any(MailboxSession.class), mailboxCaptor2.capture(), messageCaptor.capture(), any());
verify(searchIndex).postReindexing();
verifyNoMoreInteractions(searchIndex);
@@ -1129,6 +1130,7 @@ class MailboxesRoutesTest {
verify(searchIndex).deleteAll(any(MailboxSession.class), mailboxIdCaptor.capture());
verify(searchIndex).add(any(MailboxSession.class), mailboxCaptor2.capture(), messageCaptor.capture());
+ verify(searchIndex).add(any(MailboxSession.class), mailboxCaptor2.capture(), messageCaptor.capture(), any());
verify(searchIndex).postReindexing();
verifyNoMoreInteractions(searchIndex);
@@ -1295,6 +1297,7 @@ class MailboxesRoutesTest {
ArgumentCaptor<Mailbox> mailboxCaptor = ArgumentCaptor.forClass(Mailbox.class);
verify(searchIndex).add(any(MailboxSession.class), mailboxCaptor.capture(), messageCaptor.capture());
+ verify(searchIndex).add(any(MailboxSession.class), mailboxCaptor.capture(), messageCaptor.capture(), any());
verifyNoMoreInteractions(searchIndex);
assertThat(mailboxCaptor.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId));
@@ -1626,6 +1629,7 @@ class MailboxesRoutesTest {
ArgumentCaptor<MailboxMessage> messageCaptor = ArgumentCaptor.forClass(MailboxMessage.class);
ArgumentCaptor<Mailbox> mailboxCaptor = ArgumentCaptor.forClass(Mailbox.class);
verify(searchIndex).add(any(MailboxSession.class), mailboxCaptor.capture(), messageCaptor.capture());
+ verify(searchIndex).add(any(MailboxSession.class), mailboxCaptor.capture(), messageCaptor.capture(), any());
verify(searchIndex).postReindexing();
verifyNoMoreInteractions(searchIndex);
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
index e6ea677bd1..591aa330fe 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
@@ -2072,6 +2072,7 @@ class UserMailboxesRoutesTest {
verify(searchIndex).deleteAll(any(MailboxSession.class), mailboxIdCaptor.capture());
verify(searchIndex).add(any(MailboxSession.class), mailboxCaptor2.capture(), messageCaptor.capture());
+ verify(searchIndex).add(any(MailboxSession.class), mailboxCaptor2.capture(), messageCaptor.capture(), any());
verify(searchIndex).postReindexing();
verifyNoMoreInteractions(searchIndex);
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org