From 22bf887a55a8007f72f2a0b4b9bfa34fafa377fb Mon Sep 17 00:00:00 2001 From: blavenie Date: Tue, 21 Jun 2016 19:16:37 +0200 Subject: [PATCH] - Fix market/registry record storage - Disable CORS --- .../elasticsearch/action/RestModule.java | 10 ++++---- .../elasticsearch/node/DuniterNode.java | 23 ++++++++++++------- .../service/BlockchainService.java | 17 +++++++------- .../elasticsearch/service/MarketService.java | 2 +- .../service/RegistryService.java | 6 +++++ .../src/test/es-home/config/elasticsearch.yml | 6 ++--- ...ceTest.java => BlockchainServiceTest.java} | 7 +++--- 7 files changed, 41 insertions(+), 30 deletions(-) rename duniter4j-elasticsearch/src/test/java/org/duniter/elasticsearch/service/{blockchain/BlockIndexerServiceTest.java => BlockchainServiceTest.java} (96%) diff --git a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/action/RestModule.java b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/action/RestModule.java index 99578540..fdbff9e2 100644 --- a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/action/RestModule.java +++ b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/action/RestModule.java @@ -33,13 +33,11 @@ public class RestModule extends AbstractModule implements Module { @Override protected void configure() { - //bind(RestCurrencyIndexAction.class).asEagerSingleton(); - + bind(RestCurrencyIndexAction.class).asEagerSingleton(); bind(RestMarketRecordIndexAction.class).asEagerSingleton(); + bind(RestRegistryRecordIndexAction.class).asEagerSingleton(); - //bind(RestRegistryRecordIndexAction.class).asEagerSingleton(); - - //bind(RestSecurityGetChallengeAction.class).asEagerSingleton(); - //bind(RestSecurityAuthAction.class).asEagerSingleton(); + bind(RestSecurityGetChallengeAction.class).asEagerSingleton(); + bind(RestSecurityAuthAction.class).asEagerSingleton(); } } \ No newline at end of file diff --git a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/node/DuniterNode.java b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/node/DuniterNode.java index e3cef1a0..752f4c7c 100644 --- a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/node/DuniterNode.java +++ b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/node/DuniterNode.java @@ -17,20 +17,23 @@ public class DuniterNode extends AbstractLifecycleComponent { private final PluginSettings pluginSettings; + private final ThreadPool threadPool; + private final Injector injector; @Inject public DuniterNode(Settings settings, PluginSettings pluginSettings, ThreadPool threadPool, final Injector injector) { super(settings); this.pluginSettings = pluginSettings; + this.threadPool = threadPool; + this.injector = injector; - threadPool.scheduleOnStarted(() -> { - createIndices(injector); - }); } @Override protected void doStart() { - + threadPool.scheduleOnStarted(() -> { + createIndices(); + }); } @Override @@ -43,14 +46,14 @@ protected void doClose() { } - protected void createIndices(Injector injector) { - if (logger.isInfoEnabled()) { - logger.info("Creating Duniter indices..."); - } + protected void createIndices() { boolean reloadIndices = pluginSettings.reloadIndices(); Peer peer = pluginSettings.checkAndGetPeer(); if (reloadIndices) { + if (logger.isInfoEnabled()) { + logger.info("Reloading all Duniter indices..."); + } injector.getInstance(RegistryService.class) .deleteIndex() .createIndexIfNotExists() @@ -65,6 +68,10 @@ protected void createIndices(Injector injector) { .indexLastBlocks(peer); } else { + if (logger.isInfoEnabled()) { + logger.info("Checking Duniter indices..."); + } + injector.getInstance(RegistryService.class).createIndexIfNotExists(); injector.getInstance(MarketService.class).createIndexIfNotExists(); diff --git a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/BlockchainService.java b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/BlockchainService.java index 1840ccf6..7d654954 100644 --- a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/BlockchainService.java +++ b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/BlockchainService.java @@ -84,7 +84,7 @@ public class BlockchainService extends AbstractService { private static final int SYNC_MISSING_BLOCK_MAX_RETRY = 5; private BlockchainRemoteService blockchainRemoteService; - //private CurrencyRegistryService currencyRegistryService; + private RegistryService registryService; private Gson gson; @@ -97,6 +97,11 @@ public BlockchainService(Client client, PluginSettings settings, ThreadPool thre }); } + @Inject + public void setRegistryService(RegistryService registryService) { + this.registryService = registryService; + } + public BlockchainService indexLastBlocks(Peer peer) { return indexLastBlocks(peer, new ProgressionModelImpl()); } @@ -124,13 +129,9 @@ public BlockchainService indexLastBlocks(Peer peer, ProgressionModel progression currencyName, pluginSettings.getNodeBmaHost(), pluginSettings.getNodeBmaPort())); // Create index blockchain if need - // FIXME: avoid circular dependency - //currencyRegistryService.createIndexIfNotExists(); - - //Currency currency = currencyRegistryService.getCurrencyById(currencyName); - //if (currency == null) { - // currencyRegistryService.indexCurrencyFromPeer(peer); - //} + if (!registryService.isCurrencyExists(currencyName)) { + registryService.indexCurrencyFromPeer(peer); + } // Check if index exists createIndexIfNotExists(currencyName); diff --git a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/MarketService.java b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/MarketService.java index 393b06eb..1b9ea799 100644 --- a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/MarketService.java +++ b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/MarketService.java @@ -187,7 +187,7 @@ public String indexRecordFromJson(String recordJson) { public void fillRecordCategories() { if (logger.isDebugEnabled()) { - logger.debug(String.format("[%s/%s] fill data", INDEX, RECORD_CATEGORY_TYPE)); + logger.debug(String.format("[%s/%s] Fill data", INDEX, RECORD_CATEGORY_TYPE)); } // Insert categories diff --git a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/RegistryService.java b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/RegistryService.java index 009a031a..c3324b96 100644 --- a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/RegistryService.java +++ b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/RegistryService.java @@ -44,6 +44,7 @@ import org.duniter.core.exception.TechnicalException; import org.duniter.core.service.CryptoService; import org.duniter.core.util.ObjectUtils; +import org.duniter.core.util.StringUtils; import org.duniter.elasticsearch.PluginSettings; import org.duniter.elasticsearch.exception.AccessDeniedException; import org.duniter.elasticsearch.exception.DuplicateIndexIdException; @@ -168,6 +169,11 @@ public RegistryService fillRecordCategories() { return this; } + public boolean isCurrencyExists(String currencyName) { + String pubkey = getSenderPubkeyByCurrencyId(currencyName); + return !StringUtils.isEmpty(pubkey); + } + /** * * @param recordJson diff --git a/duniter4j-elasticsearch/src/test/es-home/config/elasticsearch.yml b/duniter4j-elasticsearch/src/test/es-home/config/elasticsearch.yml index 24bd0f68..e82fb87e 100644 --- a/duniter4j-elasticsearch/src/test/es-home/config/elasticsearch.yml +++ b/duniter4j-elasticsearch/src/test/es-home/config/elasticsearch.yml @@ -57,8 +57,8 @@ cluster.name: duniter4j-elasticsearch # Set a custom port for HTTP: # # http.port: 9200 -#http.port: 9200 -http.cors.enabled: true + +http.cors.enabled: false # # For more information, see the documentation at: # @@ -105,6 +105,6 @@ duniter.host: cgeek.fr duniter.port: 9330 duniter.string.analyzer: french -duniter.indices.reload: true +#duniter.indices.reload: true #duniter.dev.enable: true \ No newline at end of file diff --git a/duniter4j-elasticsearch/src/test/java/org/duniter/elasticsearch/service/blockchain/BlockIndexerServiceTest.java b/duniter4j-elasticsearch/src/test/java/org/duniter/elasticsearch/service/BlockchainServiceTest.java similarity index 96% rename from duniter4j-elasticsearch/src/test/java/org/duniter/elasticsearch/service/blockchain/BlockIndexerServiceTest.java rename to duniter4j-elasticsearch/src/test/java/org/duniter/elasticsearch/service/BlockchainServiceTest.java index dde01c73..70d1553b 100644 --- a/duniter4j-elasticsearch/src/test/java/org/duniter/elasticsearch/service/blockchain/BlockIndexerServiceTest.java +++ b/duniter4j-elasticsearch/src/test/java/org/duniter/elasticsearch/service/BlockchainServiceTest.java @@ -1,4 +1,4 @@ -package org.duniter.elasticsearch.service.blockchain; +package org.duniter.elasticsearch.service; /* * #%L @@ -28,16 +28,15 @@ import org.duniter.core.client.model.local.Peer; import org.duniter.core.client.service.bma.BlockchainRemoteService; import org.duniter.elasticsearch.TestResource; -import org.duniter.elasticsearch.service.BlockchainService; import org.junit.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; -public class BlockIndexerServiceTest { +public class BlockchainServiceTest { - private static final Logger log = LoggerFactory.getLogger(BlockIndexerServiceTest.class); + private static final Logger log = LoggerFactory.getLogger(BlockchainServiceTest.class); @ClassRule public static final TestResource resource = TestResource.create();