This is an automated email from the ASF dual-hosted git repository.

jkevan pushed a commit to branch UNOMI-225-ES7
in repository https://gitbox.apache.org/repos/asf/unomi.git


The following commit(s) were added to refs/heads/UNOMI-225-ES7 by this push:
     new 1f1ba74  remove cluster health check at ES persistence service start, 
as it could introduce 30sec tiemout per index when cluster is not green.
1f1ba74 is described below

commit 1f1ba74ac52878edd6e2d2a7ec3213e145e1eb77
Author: Kevan <[email protected]>
AuthorDate: Thu Nov 21 12:05:16 2019 +0100

    remove cluster health check at ES persistence service start, as it could 
introduce 30sec tiemout per index when cluster is not green.
---
 .../ElasticSearchPersistenceServiceImpl.java       | 49 +++++++++++-----------
 1 file changed, 25 insertions(+), 24 deletions(-)

diff --git 
a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
 
b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
index 703ff4f..b853367 100644
--- 
a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
+++ 
b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
@@ -503,20 +503,12 @@ public class ElasticSearchPersistenceServiceImpl 
implements PersistenceService,
             try {
                 final String path = predefinedMappingURL.getPath();
                 String name = path.substring(path.lastIndexOf('/') + 1, 
path.lastIndexOf('.'));
-                BufferedReader reader = new BufferedReader(new 
InputStreamReader(predefinedMappingURL.openStream()));
+                String mappingSource = loadMappingFile(predefinedMappingURL);
 
-                StringBuilder content = new StringBuilder();
-                String l;
-                while ((l = reader.readLine()) != null) {
-                    content.append(l);
-                }
-                String mappingSource = content.toString();
                 mappings.put(name, mappingSource);
-                boolean indexExists = false;
 
                 String itemIndexName = getIndex(name, new Date());
-                indexExists = client.indices().exists(new 
GetIndexRequest(itemIndexName), RequestOptions.DEFAULT);
-                if (!indexExists) {
+                if (!client.indices().exists(new 
GetIndexRequest(itemIndexName), RequestOptions.DEFAULT)) {
                     logger.info("{} index doesn't exist yet, creating it...", 
itemIndexName);
                     internalCreateIndex(itemIndexName, mappingSource);
                 } else {
@@ -526,15 +518,22 @@ public class ElasticSearchPersistenceServiceImpl 
implements PersistenceService,
                         createMapping(name, mappingSource);
                     }
                 }
-                logger.info("Waiting for GREEN cluster status...");
-                client.cluster().health(new 
ClusterHealthRequest().waitForGreenStatus(), RequestOptions.DEFAULT);
-                logger.info("Cluster status is GREEN");
             } catch (Exception e) {
                 logger.error("Error while loading mapping definition " + 
predefinedMappingURL, e);
             }
         }
     }
 
+    private String loadMappingFile(URL predefinedMappingURL) throws 
IOException {
+        BufferedReader reader = new BufferedReader(new 
InputStreamReader(predefinedMappingURL.openStream()));
+
+        StringBuilder content = new StringBuilder();
+        String l;
+        while ((l = reader.readLine()) != null) {
+            content.append(l);
+        }
+        return content.toString();
+    }
 
     @Override
     public <T extends Item> List<T> getAllItems(final Class<T> clazz) {
@@ -987,14 +986,9 @@ public class ElasticSearchPersistenceServiceImpl 
implements PersistenceService,
                         "}\n", XContentType.JSON);
 
         createIndexRequest.mapping(mappingSource, XContentType.JSON);
-        client.indices().create(createIndexRequest, RequestOptions.DEFAULT);
-    }
-
-
-    private void createMapping(final String type, final String source, final 
String indexName) throws IOException {
-        PutMappingRequest putMappingRequest = new PutMappingRequest(indexName);
-        putMappingRequest.source(source, XContentType.JSON);
-        client.indices().putMapping(putMappingRequest, RequestOptions.DEFAULT);
+        CreateIndexResponse createIndexResponse = 
client.indices().create(createIndexRequest, RequestOptions.DEFAULT);
+        logger.info("Index created: [{}], acknowledge: [{}], shards 
acknowledge: [{}]", createIndexResponse.index(),
+                createIndexResponse.isAcknowledged(), 
createIndexResponse.isShardsAcknowledged());
     }
 
     @Override
@@ -1005,21 +999,28 @@ public class ElasticSearchPersistenceServiceImpl 
implements PersistenceService,
                 String indexName = getIndex(type, new Date());
                 GetIndexRequest getIndexRequest = new 
GetIndexRequest(indexName);
                 if (client.indices().exists(getIndexRequest, 
RequestOptions.DEFAULT)) {
-                    createMapping(type, source, indexName);
+                    putMapping(source, indexName);
                 }
             } else if (indexNames.containsKey(type)) {
                 GetIndexRequest getIndexRequest = new 
GetIndexRequest(indexNames.get(type));
                 if (client.indices().exists(getIndexRequest, 
RequestOptions.DEFAULT)) {
-                    createMapping(type, source, indexNames.get(type));
+                    putMapping(source, indexNames.get(type));
                 }
             } else {
-                createMapping(type, source, getIndex(type, new Date()));
+                putMapping(source, getIndex(type, new Date()));
             }
         } catch (IOException ioe) {
             logger.error("Error while creating mapping for type " + type + " 
and source " + source, ioe);
         }
     }
 
+    private void putMapping(final String source, final String indexName) 
throws IOException {
+        PutMappingRequest putMappingRequest = new PutMappingRequest(indexName);
+        putMappingRequest.source(source, XContentType.JSON);
+        client.indices().putMapping(putMappingRequest, RequestOptions.DEFAULT);
+    }
+
+
     @Override
     public Map<String, Map<String, Object>> getPropertiesMapping(final String 
itemType) {
         return new InClassLoaderExecute<Map<String, Map<String, 
Object>>>(metricsService, this.getClass().getName() + ".getPropertiesMapping") {

Reply via email to