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