From 7a5bb017e9560dd1c14125193077d753d60f28cd Mon Sep 17 00:00:00 2001 From: Jason Han Date: Wed, 5 May 2021 18:44:50 -0700 Subject: [PATCH 1/5] Add more logging when commit error happens --- .../openmbee/mms/crud/services/DefaultNodeService.java | 9 ++++++++- .../openmbee/mms/elastic/config/ElasticsearchConfig.java | 8 +++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/crud/src/main/java/org/openmbee/mms/crud/services/DefaultNodeService.java b/crud/src/main/java/org/openmbee/mms/crud/services/DefaultNodeService.java index 482e052fa..2336f1382 100644 --- a/crud/src/main/java/org/openmbee/mms/crud/services/DefaultNodeService.java +++ b/crud/src/main/java/org/openmbee/mms/crud/services/DefaultNodeService.java @@ -4,6 +4,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.io.OutputStream; +import java.io.PrintWriter; +import java.io.StringWriter; import java.nio.charset.StandardCharsets; import java.time.Instant; import java.util.*; @@ -234,7 +236,12 @@ public void commitChanges(NodeChangeInfo info) { }); this.nodeRepository.saveAll(new ArrayList<>(nodes.values())); } catch (Exception e) { - logger.error("commitChanges error: {}", e.getMessage()); + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + e.printStackTrace(pw); + String sStackTrace = sw.toString(); + + logger.error("Error in commitChanges: {}", sStackTrace); throw new InternalErrorException("Error committing changes: " + e.getMessage()); } eventPublisher.forEach((pub) -> pub.publish( diff --git a/elastic/src/main/java/org/openmbee/mms/elastic/config/ElasticsearchConfig.java b/elastic/src/main/java/org/openmbee/mms/elastic/config/ElasticsearchConfig.java index 89bd9ff9f..7a8866c50 100644 --- a/elastic/src/main/java/org/openmbee/mms/elastic/config/ElasticsearchConfig.java +++ b/elastic/src/main/java/org/openmbee/mms/elastic/config/ElasticsearchConfig.java @@ -1,12 +1,12 @@ package org.openmbee.mms.elastic.config; import org.apache.http.HttpHost; +import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestClientBuilder; +import org.elasticsearch.client.RestHighLevelClient; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.beans.factory.annotation.Value; -import org.elasticsearch.client.RestHighLevelClient; -import org.elasticsearch.client.RestClient; @Configuration public class ElasticsearchConfig { @@ -20,7 +20,9 @@ public class ElasticsearchConfig { @Bean(name = "clientElastic", destroyMethod = "close") public RestHighLevelClient restClient() { + RestClientBuilder builder = RestClient.builder(new HttpHost(elasticsearchHost, elasticsearchPort, elasticsearchHttp)); + builder.setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder.setConnectTimeout(10000).setSocketTimeout(1000000)); RestHighLevelClient client = new RestHighLevelClient(builder); return client; } From 49ebcb1476b7c5e5e4d727e3dc59f7c919f9180e Mon Sep 17 00:00:00 2001 From: Jason Han Date: Mon, 10 May 2021 13:44:16 -0700 Subject: [PATCH 2/5] Index each action --- .../java/org/openmbee/mms/elastic/CommitElasticDAOImpl.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/elastic/src/main/java/org/openmbee/mms/elastic/CommitElasticDAOImpl.java b/elastic/src/main/java/org/openmbee/mms/elastic/CommitElasticDAOImpl.java index 2f13e8a2d..ce0b357df 100644 --- a/elastic/src/main/java/org/openmbee/mms/elastic/CommitElasticDAOImpl.java +++ b/elastic/src/main/java/org/openmbee/mms/elastic/CommitElasticDAOImpl.java @@ -42,7 +42,6 @@ public void index(BaseJson json) { public void index(CommitJson json) { int commitCount = getCommitSize(json); - List broken = new ArrayList<>(); if (commitCount > commitLimit) { List> allActions = new ArrayList<>(); allActions.addAll(json.getAdded().stream().peek(toAdd -> toAdd.put("action", "added")).collect(Collectors.toList())); @@ -71,10 +70,8 @@ public void index(CommitJson json) { break; } } while(getCommitSize(currentCommitCopy) < commitLimit && !allActions.isEmpty()); - broken.add(currentCommitCopy); - + this.index(getIndex(), currentCommitCopy); } - this.indexAll(broken); } else { this.index(getIndex(), json); From 0c2855971905c2bd229b25eb3ea98626aea6547e Mon Sep 17 00:00:00 2001 From: Jason Han Date: Mon, 10 May 2021 16:23:18 -0700 Subject: [PATCH 3/5] Use REQUEST_OPTIONS for search requests that require larger max_content_length --- .../java/org/openmbee/mms/elastic/BaseElasticDAOImpl.java | 2 +- .../java/org/openmbee/mms/elastic/CommitElasticDAOImpl.java | 2 +- .../java/org/openmbee/mms/elastic/NodeElasticDAOImpl.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/elastic/src/main/java/org/openmbee/mms/elastic/BaseElasticDAOImpl.java b/elastic/src/main/java/org/openmbee/mms/elastic/BaseElasticDAOImpl.java index 9d90260e0..f83e20224 100644 --- a/elastic/src/main/java/org/openmbee/mms/elastic/BaseElasticDAOImpl.java +++ b/elastic/src/main/java/org/openmbee/mms/elastic/BaseElasticDAOImpl.java @@ -52,7 +52,7 @@ public abstract class BaseElasticDAOImpl> { protected static int readTimeout = 1000000000; protected RestHighLevelClient client; - private static final RequestOptions REQUEST_OPTIONS; + protected static final RequestOptions REQUEST_OPTIONS; static { RequestOptions.Builder requestBuilder = RequestOptions.DEFAULT.toBuilder(); // TODO: Should be configureable diff --git a/elastic/src/main/java/org/openmbee/mms/elastic/CommitElasticDAOImpl.java b/elastic/src/main/java/org/openmbee/mms/elastic/CommitElasticDAOImpl.java index ce0b357df..9cb2ce422 100644 --- a/elastic/src/main/java/org/openmbee/mms/elastic/CommitElasticDAOImpl.java +++ b/elastic/src/main/java/org/openmbee/mms/elastic/CommitElasticDAOImpl.java @@ -210,7 +210,7 @@ private SearchHits getCommitResults(QueryBuilder query) throws IOException { sourceBuilder.size(this.resultLimit); // TODO handle paging requests sourceBuilder.sort(new FieldSortBuilder(CommitJson.CREATED).order(SortOrder.DESC)); searchRequest.source(sourceBuilder); - SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); + SearchResponse searchResponse = client.search(searchRequest, REQUEST_OPTIONS); return searchResponse.getHits(); } diff --git a/elastic/src/main/java/org/openmbee/mms/elastic/NodeElasticDAOImpl.java b/elastic/src/main/java/org/openmbee/mms/elastic/NodeElasticDAOImpl.java index f47a42efe..15d82b963 100644 --- a/elastic/src/main/java/org/openmbee/mms/elastic/NodeElasticDAOImpl.java +++ b/elastic/src/main/java/org/openmbee/mms/elastic/NodeElasticDAOImpl.java @@ -74,7 +74,7 @@ public Optional getByCommitId(String commitId, String nodeId) { SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(query); searchRequest.source(sourceBuilder); - SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); + SearchResponse searchResponse = client.search(searchRequest, REQUEST_OPTIONS); if (searchResponse.getHits().getTotalHits().value == 0) { return Optional.empty(); } @@ -136,7 +136,7 @@ public Optional getElementLessThanOrEqualTimestamp(String nodeId, searchSourceBuilder.size(1); searchRequest.source(searchSourceBuilder); - SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); + SearchResponse searchResponse = client.search(searchRequest, REQUEST_OPTIONS); SearchHit[] searchHits = searchResponse.getHits().getHits(); if (searchHits != null && searchHits.length > 0) { ElementJson elementJson = newInstance(); From b129603d2f47ddaf0f3209042ae81c03355055d8 Mon Sep 17 00:00:00 2001 From: Jason Han Date: Thu, 13 May 2021 15:25:26 -0700 Subject: [PATCH 4/5] Remove string extraction --- .../org/openmbee/mms/crud/services/DefaultNodeService.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/crud/src/main/java/org/openmbee/mms/crud/services/DefaultNodeService.java b/crud/src/main/java/org/openmbee/mms/crud/services/DefaultNodeService.java index 2336f1382..b55dac043 100644 --- a/crud/src/main/java/org/openmbee/mms/crud/services/DefaultNodeService.java +++ b/crud/src/main/java/org/openmbee/mms/crud/services/DefaultNodeService.java @@ -236,12 +236,7 @@ public void commitChanges(NodeChangeInfo info) { }); this.nodeRepository.saveAll(new ArrayList<>(nodes.values())); } catch (Exception e) { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - e.printStackTrace(pw); - String sStackTrace = sw.toString(); - - logger.error("Error in commitChanges: {}", sStackTrace); + logger.error("Error in commitChanges: ", e); throw new InternalErrorException("Error committing changes: " + e.getMessage()); } eventPublisher.forEach((pub) -> pub.publish( From d1b78e872ee52f4502dbc4d6237bcc6d9fff323f Mon Sep 17 00:00:00 2001 From: Jason Han Date: Thu, 13 May 2021 15:43:05 -0700 Subject: [PATCH 5/5] Throw exception for ioe while writing to stream --- .../java/org/openmbee/mms/crud/services/DefaultNodeService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/crud/src/main/java/org/openmbee/mms/crud/services/DefaultNodeService.java b/crud/src/main/java/org/openmbee/mms/crud/services/DefaultNodeService.java index b55dac043..48f28e4c1 100644 --- a/crud/src/main/java/org/openmbee/mms/crud/services/DefaultNodeService.java +++ b/crud/src/main/java/org/openmbee/mms/crud/services/DefaultNodeService.java @@ -135,6 +135,7 @@ public void readAsStream(String projectId, String refId, .getBytes(StandardCharsets.UTF_8)); } catch (IOException ioe) { logger.error("Error writing to stream", ioe); + throw new InternalErrorException("Error writing to stream."); } }); if (!"application/x-ndjson".equals(accept)) {