From 5799c9a22304a7b86755acb644feb13afdc07a4c Mon Sep 17 00:00:00 2001
From: blavenie <benoit.lavenier@e-is.pro>
Date: Thu, 24 Mar 2016 09:12:22 +0100
Subject: [PATCH] ES: enable log into file. Add option for node network host
 ES: fix --daemon to NOT stop until kill sig

---
 ucoinj-elasticsearch-plugin/pom.xml           |  3 ++-
 .../assembly/min/ucoinj-elasticsearch.bat     |  2 +-
 .../main/assembly/min/ucoinj-elasticsearch.sh |  2 +-
 .../src/main/assembly/min/ucoinj.config       | 15 ++++++++++---
 .../main/filtered-resources/log4j.properties  |  4 ++--
 .../io/ucoin/ucoinj/elasticsearch/Main.java   | 21 +++++++++++++------
 .../elasticsearch/config/Configuration.java   |  4 ++++
 .../config/ConfigurationOption.java           |  7 +++++++
 .../service/ElasticSearchService.java         | 15 ++++++-------
 9 files changed, 52 insertions(+), 21 deletions(-)

diff --git a/ucoinj-elasticsearch-plugin/pom.xml b/ucoinj-elasticsearch-plugin/pom.xml
index 06d4bcb0..f4106a64 100644
--- a/ucoinj-elasticsearch-plugin/pom.xml
+++ b/ucoinj-elasticsearch-plugin/pom.xml
@@ -115,8 +115,9 @@
                 <ucoinj.plugins.directory>${basedir}}/src/test/es-home/plugins</ucoinj.plugins.directory>
                 <es.http.cors.allow-origin>*</es.http.cors.allow-origin>
                 <exec.args>
-                    start reset-market reset-registry index --host metab.ucoin.fr --port 9201
+                    start index --host metab.ucoin.fr --port 9201
                 </exec.args>
+                <ucoinj.log.file>${project.build.directory}/exec.log</ucoinj.log.file>
             </properties>
         </profile>
 
diff --git a/ucoinj-elasticsearch-plugin/src/main/assembly/min/ucoinj-elasticsearch.bat b/ucoinj-elasticsearch-plugin/src/main/assembly/min/ucoinj-elasticsearch.bat
index 4327e736..289b26db 100644
--- a/ucoinj-elasticsearch-plugin/src/main/assembly/min/ucoinj-elasticsearch.bat
+++ b/ucoinj-elasticsearch-plugin/src/main/assembly/min/ucoinj-elasticsearch.bat
@@ -32,7 +32,7 @@ echo .
 set OLDDIR=%CD%
 cd /d %~dp0%
 
-call "%JAVA_COMMAND%" %JAVA_OPTS% "-Ducoinj.log.file=%APP_LOG_FILE%" "-Ducoinj-elasticsearch.config=%APP_CONF_FILE%" "-Ducoinj.plugins.directory=%APP_BASEDIR%\plugins" -Djna.nosys=true -jar ucoinj-elasticsearch-plugin-${project.version}.jar %1 %2 %3 %4 %5 %6 %7 %8 %9
+call "%JAVA_COMMAND%" %JAVA_OPTS%  "-Ducoinj.basedir=%APP_BASEDIR%" "-Ducoinj.plugins.directory=%APP_BASEDIR%\plugins" "-Ducoinj.log.file=%APP_LOG_FILE%" "-Ducoinj-elasticsearch.config=%APP_CONF_FILE%" -Ducoinj.launch.mode=full -Djna.nosys=true -Des.http.cors.allow-origin=* -jar ucoinj-elasticsearch-plugin-${project.version}.jar %1 %2 %3 %4 %5 %6 %7 %8 %9
 set exitcode=%ERRORLEVEL%
 echo Stop with exitcode: %exitcode%
 cd %OLDDIR%
diff --git a/ucoinj-elasticsearch-plugin/src/main/assembly/min/ucoinj-elasticsearch.sh b/ucoinj-elasticsearch-plugin/src/main/assembly/min/ucoinj-elasticsearch.sh
index 064c62c4..d0fd97f8 100644
--- a/ucoinj-elasticsearch-plugin/src/main/assembly/min/ucoinj-elasticsearch.sh
+++ b/ucoinj-elasticsearch-plugin/src/main/assembly/min/ucoinj-elasticsearch.sh
@@ -25,7 +25,7 @@ if [ -d $JAVA_HOME ]; then
 	echo "launch java"
 	echo "java command: $JAVA_COMMAND"
 	
-	$JAVA_COMMAND $MEMORY $APP_JVM_OPTS -Ducoinj.log.file=$APP_LOG_FILE -Ducoinj-elasticsearch.config=$APP_CONF_FILE -Djna.nosys=true -Ducoinj.basedir=$APP_BASEDIR -Ducoinj.plugins.directory=$APP_BASEDIR/plugins -Des.http.cors.allow-origin=* -jar ucoinj-elasticsearch-plugin-${project.version}.jar $*
+	$JAVA_COMMAND $MEMORY $APP_JVM_OPTS -Ducoinj.basedir=$APP_BASEDIR -Ducoinj.plugins.directory=$APP_BASEDIR/plugins -Ducoinj.log.file=$APP_LOG_FILE -Ducoinj-elasticsearch.config=$APP_CONF_FILE -Ducoinj.launch.mode=full -Djna.nosys=true -Des.http.cors.allow-origin=* -jar ucoinj-elasticsearch-plugin-${project.version}.jar $*
 
 	exitcode=$?
 	echo "Stop ${project.name} with exitcode: $exitcode"
diff --git a/ucoinj-elasticsearch-plugin/src/main/assembly/min/ucoinj.config b/ucoinj-elasticsearch-plugin/src/main/assembly/min/ucoinj.config
index 0dd9a0b5..923c0857 100644
--- a/ucoinj-elasticsearch-plugin/src/main/assembly/min/ucoinj.config
+++ b/ucoinj-elasticsearch-plugin/src/main/assembly/min/ucoinj.config
@@ -25,9 +25,10 @@
 #   By default: false
 #ucoinj.elasticsearch.embedded.enable=true
 
-# If not embedded: ES Node Host
-#   Could be override using option : '-esh <host>'
-#ucoinj.elasticsearch.host=192.168.0.5
+# ES Node Host
+#   THe node to connect (if NOT embedded node)
+#   By default: 'localhost'
+#ucoinj.elasticsearch.host=<ES_Node_IP>
 
 # If not embedded: ES Node Port
 #   Could be override using option : '-esp <port>'
@@ -43,3 +44,11 @@
 #   See ES config 'http.enable'
 #ucoinj.elasticsearch.http.enable=false
 
+# ES Node Network Host (if http enable)
+#   Allow values : (see https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html)
+#     any IP address, or 'localhost'
+#     _[networkInterface]_ for addresses of a network interface, for example _eth0_ or _en0_.
+#     _local_              for any loopback addresses on the system
+#
+#   By default: '_local_'
+#ucoinj.elasticsearch.network.host=_eth0_
diff --git a/ucoinj-elasticsearch/src/main/filtered-resources/log4j.properties b/ucoinj-elasticsearch/src/main/filtered-resources/log4j.properties
index 6cf6649f..4fe203ed 100644
--- a/ucoinj-elasticsearch/src/main/filtered-resources/log4j.properties
+++ b/ucoinj-elasticsearch/src/main/filtered-resources/log4j.properties
@@ -1,7 +1,7 @@
 
 # Global logging configuration
-#log4j.rootLogger=ERROR, stdout, file
-log4j.rootLogger=ERROR, stdout
+log4j.rootLogger=ERROR, stdout, file
+#log4j.rootLogger=ERROR, stdout
 
 # Console output
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
diff --git a/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/Main.java b/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/Main.java
index 3a06d3c9..f4b187ed 100644
--- a/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/Main.java
+++ b/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/Main.java
@@ -110,7 +110,16 @@ public class Main {
             log.error(e.getMessage(), e);
         }
 
-        if (!config.isDaemon()) {
+        if (config.isDaemon()) {
+            while (true) {
+                try {
+                    Thread.sleep(5000);
+                } catch(InterruptedException e) {
+                  // Nothing
+                }
+            }
+        }
+        else {
             if (arguments.size() > 0) {
 
                 // Check if auto-quit if need
@@ -135,12 +144,10 @@ public class Main {
                     }
                 }
             }
-
-            // shutdown
-            shutdown();
-
-            log.info("uCoinj :: ElasticSearch Indexer successfully stopped");
         }
+
+        // shutdown
+        shutdown();
     }
 
     /* -- protected methods -- */
@@ -157,6 +164,8 @@ public class Main {
                 // Silent is gold
             }
         }
+
+        log.info("uCoinj :: ElasticSearch Indexer successfully stopped");
     }
 
     protected void initI18n(Configuration config) throws IOException {
diff --git a/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/config/Configuration.java b/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/config/Configuration.java
index 3d8fd6a6..6dc7de12 100644
--- a/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/config/Configuration.java
+++ b/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/config/Configuration.java
@@ -257,6 +257,10 @@ public class Configuration  {
         return applicationConfig.getOption(ConfigurationOption.HOST.getKey());
     }
 
+    public String getNetworkHost() {
+        return applicationConfig.getOption(ConfigurationOption.NETWORK_HOST.getKey());
+    }
+
     public int getPort() {
         return applicationConfig.getOptionAsInt(ConfigurationOption.PORT.getKey());
     }
diff --git a/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/config/ConfigurationOption.java b/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/config/ConfigurationOption.java
index c7be13cd..957492de 100644
--- a/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/config/ConfigurationOption.java
+++ b/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/config/ConfigurationOption.java
@@ -129,6 +129,13 @@ public enum ConfigurationOption  implements ConfigOptionDef {
             Integer.class,
             false),
 
+    NETWORK_HOST(
+            "ucoinj.elasticsearch.network.host",
+            n("ucoinj.config.option.elasticsearch.network.host.description"),
+            "_local_",
+            String.class,
+            false),
+
     DAEMON(
             "ucoinj.elasticsearch.daemon",
             n("ucoinj.config.option.node.elasticsearch.daemon.description"),
diff --git a/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/service/ElasticSearchService.java b/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/service/ElasticSearchService.java
index 52da3a9a..93194e3d 100644
--- a/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/service/ElasticSearchService.java
+++ b/ucoinj-elasticsearch/src/main/java/io/ucoin/ucoinj/elasticsearch/service/ElasticSearchService.java
@@ -187,20 +187,21 @@ public class ElasticSearchService implements Bean,InitializingBean, Closeable {
                 .put("path.home", config.getBasedir())
                 .put("path.data", config.getDataDirectory())
                 .put("path.plugins", config.getPluginsDirectory())
-                // TODO
+                .put("http.host", config.getHost())
                 .put("http.cors.enabled", Boolean.TRUE.toString());
-        if (!local && enableHttp && StringUtils.isNotBlank(config.getHost())) {
-            builder.put("http.host", config.getHost());
-            if (!"localhost".equalsIgnoreCase(config.getHost())) {
-                builder.put("network.host", config.getHost());
+
+        // Set network host
+        if (!local && enableHttp
+                && StringUtils.isNotBlank(config.getNetworkHost())) {
+            if (!"localhost".equalsIgnoreCase(config.getNetworkHost())) {
+                builder.put("network.host", config.getNetworkHost());
             }
         }
-        Settings settings = builder.build();
 
         // Create a node builder
         NodeBuilder nodeBuilder = NodeBuilder.nodeBuilder()
                 .clusterName(clusterName)
-                .settings(settings)
+                .settings(builder.build())
                 .local(local);
 
         if (StringUtils.isNotBlank(clusterName)) {
-- 
GitLab