You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2017/03/30 01:21:52 UTC
[2/3] james-project git commit: JAMES-1981 Don't fail when indexing
fails
JAMES-1981 Don't fail when indexing fails
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ec191b44
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ec191b44
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ec191b44
Branch: refs/heads/master
Commit: ec191b441dfe83c3409c0a4052fdf777422d0442
Parents: a3ba230
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Mar 29 11:53:34 2017 +0200
Committer: benwa <bt...@linagora.com>
Committed: Thu Mar 30 08:21:00 2017 +0700
----------------------------------------------------------------------
.../james/backends/es/ElasticSearchIndexer.java | 48 ++++++++++++--------
.../backends/es/ElasticSearchIndexerTest.java | 11 ++++-
...icSearchListeningMessageSearchIndexTest.java | 5 +-
3 files changed, 43 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/ec191b44/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchIndexer.java
----------------------------------------------------------------------
diff --git a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchIndexer.java b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchIndexer.java
index 55bf479..658484b 100644
--- a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchIndexer.java
+++ b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchIndexer.java
@@ -20,6 +20,7 @@ package org.apache.james.backends.es;
import java.util.List;
import java.util.Objects;
+import java.util.Optional;
import javax.inject.Inject;
@@ -28,6 +29,7 @@ import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.Strings;
+import org.elasticsearch.common.ValidationException;
import org.elasticsearch.index.query.QueryBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -103,26 +105,36 @@ public class ElasticSearchIndexer {
.get();
}
- public BulkResponse updateMessages(List<UpdatedRepresentation> updatedDocumentParts) {
- Preconditions.checkNotNull(updatedDocumentParts);
- BulkRequestBuilder bulkRequestBuilder = client.prepareBulk();
- updatedDocumentParts.forEach(updatedDocumentPart -> bulkRequestBuilder.add(
- client.prepareUpdate(
- indexName.getValue(),
- typeName.getValue(),
- updatedDocumentPart.getId())
- .setDoc(updatedDocumentPart.getUpdatedDocumentPart())));
- return bulkRequestBuilder.get();
+ public Optional<BulkResponse> updateMessages(List<UpdatedRepresentation> updatedDocumentParts) {
+ try {
+ Preconditions.checkNotNull(updatedDocumentParts);
+ BulkRequestBuilder bulkRequestBuilder = client.prepareBulk();
+ updatedDocumentParts.forEach(updatedDocumentPart -> bulkRequestBuilder.add(
+ client.prepareUpdate(
+ indexName.getValue(),
+ typeName.getValue(),
+ updatedDocumentPart.getId())
+ .setDoc(updatedDocumentPart.getUpdatedDocumentPart())));
+ return Optional.of(bulkRequestBuilder.get());
+ } catch (ValidationException e) {
+ LOGGER.warn("Error while updating index", e);
+ return Optional.empty();
+ }
}
- public BulkResponse deleteMessages(List<String> ids) {
- BulkRequestBuilder bulkRequestBuilder = client.prepareBulk();
- ids.forEach(id -> bulkRequestBuilder.add(
- client.prepareDelete(
- indexName.getValue(),
- typeName.getValue(),
- id)));
- return bulkRequestBuilder.get();
+ public Optional<BulkResponse> deleteMessages(List<String> ids) {
+ try {
+ BulkRequestBuilder bulkRequestBuilder = client.prepareBulk();
+ ids.forEach(id -> bulkRequestBuilder.add(
+ client.prepareDelete(
+ indexName.getValue(),
+ typeName.getValue(),
+ id)));
+ return Optional.of(bulkRequestBuilder.get());
+ } catch (ValidationException e) {
+ LOGGER.warn("Error while deleting index", e);
+ return Optional.empty();
+ }
}
public void deleteAllMatchingQuery(QueryBuilder queryBuilder) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/ec191b44/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchIndexerTest.java
----------------------------------------------------------------------
diff --git a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchIndexerTest.java b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchIndexerTest.java
index ec9582e..6855622 100644
--- a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchIndexerTest.java
+++ b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchIndexerTest.java
@@ -239,5 +239,14 @@ public class ElasticSearchIndexerTest {
assertThat(searchResponse.getHits().getTotalHits()).isEqualTo(1);
}
}
-
+
+ @Test
+ public void updateMessagesShouldNotThrowWhenEmptyList() throws Exception {
+ testee.updateMessages(Lists.newArrayList());
+ }
+
+ @Test
+ public void deleteMessagesShouldNotThrowWhenEmptyList() throws Exception {
+ testee.deleteMessages(Lists.newArrayList());
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/ec191b44/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
index 28323b2..91611bd 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
@@ -28,6 +28,7 @@ import static org.mockito.Mockito.when;
import java.io.IOException;
import java.util.List;
+import java.util.Optional;
import javax.mail.Flags;
@@ -169,7 +170,7 @@ public class ElasticSearchListeningMessageSearchIndexTest {
BulkResponse expectedBulkResponse = mock(BulkResponse.class);
when(indexer.deleteMessages(any(List.class)))
- .thenReturn(expectedBulkResponse);
+ .thenReturn(Optional.of(expectedBulkResponse));
//When
testee.delete(session, mailbox, Lists.newArrayList(MESSAGE_UID));
@@ -192,7 +193,7 @@ public class ElasticSearchListeningMessageSearchIndexTest {
BulkResponse expectedBulkResponse = mock(BulkResponse.class);
when(indexer.deleteMessages(any(List.class)))
- .thenReturn(expectedBulkResponse);
+ .thenReturn(Optional.of(expectedBulkResponse));
//When
testee.delete(session, mailbox, Lists.newArrayList(MESSAGE_UID, messageId2, messageId3, messageId4, messageId5));
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org