From 6d76cf41ebf888cb37219dd5f9daa7606716cee3 Mon Sep 17 00:00:00 2001
From: blavenie <benoit.lavenier@e-is.pro>
Date: Sat, 24 Jun 2017 20:15:38 +0200
Subject: [PATCH] compat with leSou currency (duniter v0.80.x)

---
 duniter4j-client/pom.xml                      |  2 +-
 duniter4j-core-client/pom.xml                 |  2 +-
 .../model/bma/BlockchainParameters.java       | 15 +++++
 .../core/client/service/HttpServiceImpl.java  |  3 +
 duniter4j-core-shared/pom.xml                 |  2 +-
 duniter4j-es-assembly/pom.xml                 |  2 +-
 .../src/test/es-home/config/elasticsearch.yml |  4 +-
 .../src/test/es-home/config/logging.yml       |  1 +
 duniter4j-es-core/pom.xml                     |  2 +-
 .../org/duniter/elasticsearch/PluginInit.java | 60 ++++++++++++-------
 .../service/CurrencyService.java              |  5 +-
 .../LoggingScheduledThreadPoolExecutor.java   |  1 +
 duniter4j-es-subscription/pom.xml             |  2 +-
 duniter4j-es-user/pom.xml                     |  2 +-
 pom.xml                                       |  2 +-
 15 files changed, 71 insertions(+), 34 deletions(-)

diff --git a/duniter4j-client/pom.xml b/duniter4j-client/pom.xml
index d559dbae..93e31e27 100644
--- a/duniter4j-client/pom.xml
+++ b/duniter4j-client/pom.xml
@@ -3,7 +3,7 @@
     <parent>
         <artifactId>duniter4j</artifactId>
         <groupId>org.duniter</groupId>
-        <version>0.11.1-SNAPSHOT</version>
+        <version>0.11.2-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/duniter4j-core-client/pom.xml b/duniter4j-core-client/pom.xml
index fc688058..79b20ddd 100644
--- a/duniter4j-core-client/pom.xml
+++ b/duniter4j-core-client/pom.xml
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.duniter</groupId>
     <artifactId>duniter4j</artifactId>
-    <version>0.11.1-SNAPSHOT</version>
+    <version>0.11.2-SNAPSHOT</version>
   </parent>
 
   <artifactId>duniter4j-core-client</artifactId>
diff --git a/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainParameters.java b/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainParameters.java
index d022ca0a..98037a06 100644
--- a/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainParameters.java
+++ b/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainParameters.java
@@ -132,6 +132,11 @@ public class BlockchainParameters implements Serializable{
      */
     private Integer dtDiffEval;
 
+    /**
+     * The number of previous blocks to check for personalized difficulty
+     */
+    @Deprecated
+    private Integer blocksRot;
 
     /**
      * The percent of previous issuers to reach for personalized difficulty
@@ -251,6 +256,16 @@ public class BlockchainParameters implements Serializable{
         this.dtDiffEval = dtDiffEval;
     }
 
+    @Deprecated
+    public Integer getBlocksRot() {
+        return blocksRot;
+    }
+
+    @Deprecated
+    public void setBlocksRot(Integer blocksRot) {
+        this.blocksRot = blocksRot;
+    }
+
     public Double getPercentRot() {
         return percentRot;
     }
diff --git a/duniter4j-core-client/src/main/java/org/duniter/core/client/service/HttpServiceImpl.java b/duniter4j-core-client/src/main/java/org/duniter/core/client/service/HttpServiceImpl.java
index dbdb1ab4..892557ee 100644
--- a/duniter4j-core-client/src/main/java/org/duniter/core/client/service/HttpServiceImpl.java
+++ b/duniter4j-core-client/src/main/java/org/duniter/core/client/service/HttpServiceImpl.java
@@ -348,6 +348,9 @@ public class HttpServiceImpl implements HttpService, Closeable, InitializingBean
         catch (SocketTimeoutException | ConnectTimeoutException e) {
             throw new HttpTimeoutException(I18n.t("duniter4j.client.core.timeout"), e);
         }
+        catch (TechnicalException e) {
+            throw e;
+        }
         catch (Throwable e) {
             throw new TechnicalException(e.getMessage(), e);
         }
diff --git a/duniter4j-core-shared/pom.xml b/duniter4j-core-shared/pom.xml
index 9c505c79..46ec23ee 100644
--- a/duniter4j-core-shared/pom.xml
+++ b/duniter4j-core-shared/pom.xml
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.duniter</groupId>
     <artifactId>duniter4j</artifactId>
-    <version>0.11.1-SNAPSHOT</version>
+    <version>0.11.2-SNAPSHOT</version>
   </parent>
 
   <artifactId>duniter4j-core-shared</artifactId>
diff --git a/duniter4j-es-assembly/pom.xml b/duniter4j-es-assembly/pom.xml
index 9b2e2437..66c799d1 100644
--- a/duniter4j-es-assembly/pom.xml
+++ b/duniter4j-es-assembly/pom.xml
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.duniter</groupId>
     <artifactId>duniter4j</artifactId>
-    <version>0.11.1-SNAPSHOT</version>
+    <version>0.11.2-SNAPSHOT</version>
   </parent>
 
   <artifactId>duniter4j-es-assembly</artifactId>
diff --git a/duniter4j-es-assembly/src/test/es-home/config/elasticsearch.yml b/duniter4j-es-assembly/src/test/es-home/config/elasticsearch.yml
index f199e0f0..689c8b94 100644
--- a/duniter4j-es-assembly/src/test/es-home/config/elasticsearch.yml
+++ b/duniter4j-es-assembly/src/test/es-home/config/elasticsearch.yml
@@ -157,7 +157,7 @@ duniter.security.enable: true
 #
 # Should synchronize data from an existing ES node ?
 #
-duniter.data.sync.enable: true
+duniter.data.sync.enable: false
 #duniter.data.sync.enable: true
 duniter.data.sync.host: g1.data.duniter.fr
 duniter.data.sync.port: 443
@@ -166,7 +166,7 @@ duniter.data.sync.port: 443
 #
 # Enable mail module ?
 #
-duniter.mail.enable: true
+duniter.mail.enable: false
 #
 # Mail: SMTP server configuration (host and port)
 #
diff --git a/duniter4j-es-assembly/src/test/es-home/config/logging.yml b/duniter4j-es-assembly/src/test/es-home/config/logging.yml
index aa49d876..b9122182 100644
--- a/duniter4j-es-assembly/src/test/es-home/config/logging.yml
+++ b/duniter4j-es-assembly/src/test/es-home/config/logging.yml
@@ -15,6 +15,7 @@ logger:
   com.amazonaws.metrics.AwsSdkMetrics: ERROR
 
   duniter: DEBUG
+  duniter.core: DEBUG
   duniter.security: ERROR
   duniter.user.event: INFO
   duniter.network.p2p: INFO
diff --git a/duniter4j-es-core/pom.xml b/duniter4j-es-core/pom.xml
index 80353545..e3741db7 100644
--- a/duniter4j-es-core/pom.xml
+++ b/duniter4j-es-core/pom.xml
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.duniter</groupId>
     <artifactId>duniter4j</artifactId>
-    <version>0.11.1-SNAPSHOT</version>
+    <version>0.11.2-SNAPSHOT</version>
   </parent>
 
   <artifactId>duniter4j-es-core</artifactId>
diff --git a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/PluginInit.java b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/PluginInit.java
index 44b58d8d..3ea14f07 100644
--- a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/PluginInit.java
+++ b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/PluginInit.java
@@ -118,64 +118,78 @@ public class PluginInit extends AbstractLifecycleComponent<PluginInit> {
         // Synchronize blockchain
         if (pluginSettings.enableBlockchain()) {
 
+
             Peer peer = pluginSettings.checkAndGetPeer();
 
-            // Index (or refresh) node's currency
-            final Currency currency = injector.getInstance(CurrencyService.class)
-                    .indexCurrencyFromPeer(peer, true);
+            Currency currency;
+            try {
+                // Index (or refresh) node's currency
+                currency = injector.getInstance(CurrencyService.class)
+                        .indexCurrencyFromPeer(peer, true);
+            } catch(Throwable e){
+                logger.error(String.format("Error while indexing currency. Skipping blockchain indexation.", e.getMessage()), e);
+                throw e;
+            }
 
+            final String currencyName = currency.getCurrencyName();
             if (logger.isInfoEnabled()) {
-                logger.info(String.format("[%s] Indexing blockchain...", currency.getCurrencyName()));
+                logger.info(String.format("[%s] Indexing blockchain...", currencyName));
             }
 
+            // Add access security rules, for the currency indices
             injector.getInstance(RestSecurityController.class)
 
                     // Add access to <currency>/block index
                     .allowIndexType(RestRequest.Method.GET,
-                            currency.getCurrencyName(),
+                            currencyName,
                             BlockDao.TYPE)
                     .allowPostSearchIndexType(
-                            currency.getCurrencyName(),
+                            currencyName,
                             BlockDao.TYPE)
 
                     // Add access to <currency>/blockStat index
                     .allowIndexType(RestRequest.Method.GET,
-                            currency.getCurrencyName(),
+                            currencyName,
                             BlockStatDao.TYPE)
                     .allowPostSearchIndexType(
-                            currency.getCurrencyName(),
+                            currencyName,
                             BlockStatDao.TYPE)
 
                     // Add access to <currency>/peer index
                     .allowIndexType(RestRequest.Method.GET,
-                            currency.getCurrencyName(),
+                            currencyName,
                             PeerDao.TYPE)
                     .allowPostSearchIndexType(
-                            currency.getCurrencyName(),
+                            currencyName,
                             PeerDao.TYPE)
 
                     // Add access to <currency>/movement index
                     .allowIndexType(RestRequest.Method.GET,
-                            currency.getCurrencyName(),
+                            currencyName,
                             MovementDao.TYPE)
                     .allowPostSearchIndexType(
-                            currency.getCurrencyName(),
+                            currencyName,
                             MovementDao.TYPE);
 
             // Wait end of currency index creation, then index blocks
             threadPool.scheduleOnClusterHealthStatus(() -> {
 
-                // Index blocks (and listen if new block appear)
-                injector.getInstance(BlockchainService.class)
-                        .indexLastBlocks(peer)
-                        .listenAndIndexNewBlock(peer);
-
-                // Index peers (and listen if new peer appear)
-                injector.getInstance(PeerService.class)
-                        .listenAndIndexPeers(peer);
-
-                if (logger.isInfoEnabled()) {
-                    logger.info(String.format("[%s] Indexing blockchain [OK]", currency.getCurrencyName()));
+                try {
+                    // Index blocks (and listen if new block appear)
+                    injector.getInstance(BlockchainService.class)
+                            .indexLastBlocks(peer)
+                            .listenAndIndexNewBlock(peer);
+
+                    // Index peers (and listen if new peer appear)
+                    injector.getInstance(PeerService.class)
+                            .listenAndIndexPeers(peer);
+
+                    if (logger.isInfoEnabled()) {
+                        logger.info(String.format("[%s] Indexing blockchain [OK]", currencyName));
+                    }
+                } catch(Throwable e){
+                    logger.error(String.format("[%s] Indexing blockchain error: %s", currencyName, e.getMessage()), e);
+                    throw e;
                 }
 
             }, ClusterHealthStatus.YELLOW, ClusterHealthStatus.GREEN);
diff --git a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/service/CurrencyService.java b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/service/CurrencyService.java
index dbe90837..9511aee0 100644
--- a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/service/CurrencyService.java
+++ b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/service/CurrencyService.java
@@ -95,7 +95,9 @@ public class CurrencyService extends AbstractService {
      * @return the created blockchain
      */
     public Currency indexCurrencyFromPeer(Peer peer, boolean autoReconnect) {
-        if (!autoReconnect) return indexCurrencyFromPeer(peer);
+        if (!autoReconnect) {
+            return indexCurrencyFromPeer(peer);
+        }
 
         while(true) {
             try {
@@ -120,6 +122,7 @@ public class CurrencyService extends AbstractService {
      * @return the created blockchain
      */
     public Currency indexCurrencyFromPeer(Peer peer) {
+
         BlockchainParameters parameters = blockchainRemoteService.getParameters(peer);
         BlockchainBlock firstBlock = blockchainRemoteService.getBlock(peer, 0l);
         BlockchainBlock currentBlock = blockchainRemoteService.getCurrentBlock(peer);
diff --git a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/threadpool/LoggingScheduledThreadPoolExecutor.java b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/threadpool/LoggingScheduledThreadPoolExecutor.java
index 4fb5efd9..5f2d4270 100644
--- a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/threadpool/LoggingScheduledThreadPoolExecutor.java
+++ b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/threadpool/LoggingScheduledThreadPoolExecutor.java
@@ -22,6 +22,7 @@ package org.duniter.elasticsearch.threadpool;
  * #L%
  */
 
+import org.duniter.core.exception.TechnicalException;
 import org.elasticsearch.common.logging.ESLogger;
 
 import java.util.concurrent.*;
diff --git a/duniter4j-es-subscription/pom.xml b/duniter4j-es-subscription/pom.xml
index 7d86bc1d..d96cfc71 100644
--- a/duniter4j-es-subscription/pom.xml
+++ b/duniter4j-es-subscription/pom.xml
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.duniter</groupId>
     <artifactId>duniter4j</artifactId>
-    <version>0.11.1-SNAPSHOT</version>
+    <version>0.11.2-SNAPSHOT</version>
   </parent>
 
   <artifactId>duniter4j-es-subscription</artifactId>
diff --git a/duniter4j-es-user/pom.xml b/duniter4j-es-user/pom.xml
index aef75e17..8513639d 100644
--- a/duniter4j-es-user/pom.xml
+++ b/duniter4j-es-user/pom.xml
@@ -3,7 +3,7 @@
     <parent>
         <artifactId>duniter4j</artifactId>
         <groupId>org.duniter</groupId>
-        <version>0.11.1-SNAPSHOT</version>
+        <version>0.11.2-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/pom.xml b/pom.xml
index 28433699..2831ed06 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
 
   <groupId>org.duniter</groupId>
   <artifactId>duniter4j</artifactId>
-  <version>0.11.1-SNAPSHOT</version>
+  <version>0.11.2-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>Duniter4j : a Duniter Java Client API</name>
 
-- 
GitLab