private void createNewNode(final Settings newSettings) { final long newIdSeed = NodeEnvironment.NODE_ID_SEED_SETTING.get(node.settings()) + 1; // use a new seed to make sure we have new node id Settings finalSettings = Settings.builder().put(node.settings()).put(newSettings).put(NodeEnvironment.NODE_ID_SEED_SETTING.getKey(), newIdSeed).build(); if (DISCOVERY_ZEN_MINIMUM_MASTER_NODES_SETTING.exists(finalSettings) == false) { throw new IllegalStateException(DISCOVERY_ZEN_MINIMUM_MASTER_NODES_SETTING.getKey() + " is not configured after restart of [" + name + "]"); } Collection<Class<? extends Plugin>> plugins = node.getClasspathPlugins(); node = new MockNode(finalSettings, plugins); markNodeDataDirsAsNotEligableForWipe(node); }
void startNode() { try { node.start(); } catch (NodeValidationException e) { throw new RuntimeException(e); } }
private Client getOrBuildNodeClient() { if (nodeClient == null) { nodeClient = node.client(); } return clientWrapper.apply(nodeClient); }
TermsByQueryBenchmark() { Settings settings = Settings.builder() .put(FilterJoinCache.SIREN_FILTERJOIN_CACHE_ENABLED, false) .put("index.engine.robin.refreshInterval", "-1") .put("path.home", "./target/elasticsearch-benchmark/home/") .put("node.local", true) .put(SETTING_NUMBER_OF_SHARDS, NUM_SHARDS) .put(SETTING_NUMBER_OF_REPLICAS, NUM_REPLICAS) .build(); this.nodes = new MockNode[2]; this.nodes[0] = new MockNode(Settings.builder().put(settings).put("name", "node1").build(), Version.CURRENT, Collections.<Class<? extends Plugin>>singletonList(SirenJoinPlugin.class)).start(); this.nodes[1] = new MockNode(Settings.builder().put(settings).put("name", "node2").build(), Version.CURRENT, Collections.<Class<? extends Plugin>>singletonList(SirenJoinPlugin.class)).start(); this.client = nodes[0].client(); this.random = new Random(System.currentTimeMillis()); }
@Override protected void processRecoverySettings(ClusterSettings clusterSettings, RecoverySettings recoverySettings) { if (false == getPluginsService().filterPlugins(RecoverySettingsChunkSizePlugin.class).isEmpty()) { clusterSettings.addSettingsUpdateConsumer(RecoverySettingsChunkSizePlugin.CHUNK_SIZE_SETTING, recoverySettings::setChunkSize); } }
MockNode node = new MockNode(finalSettings.build(), plugins, nodeConfigurationSource.nodeConfigPath(nodeId)); try { IOUtils.close(secureSettings);
void closeNode() throws IOException { markNodeDataDirsAsPendingForWipe(node); node.close(); }
private void clearDataIfNeeded(RestartCallback callback) throws IOException { if (callback.clearData(name)) { NodeEnvironment nodeEnv = node.getNodeEnvironment(); if (nodeEnv.hasNodeFile()) { final Path[] locations = nodeEnv.nodeDataPaths(); logger.debug("removing node data paths: [{}]", Arrays.toString(locations)); IOUtils.rm(locations); } } }
/** * closes the current node if not already closed, builds a new node object using the current node settings and starts it */ void restart(RestartCallback callback, boolean clearDataIfNeeded, int minMasterNodes) throws Exception { if (!node.isClosed()) { closeNode(); } recreateNodeOnRestart(callback, clearDataIfNeeded, minMasterNodes); startNode(); }
private synchronized void reset(boolean wipeData) throws IOException { TransportService transportService = nodeAndClient.node.injector().getInstance(TransportService.class); if (transportService instanceof MockTransportService) { final MockTransportService mockTransportService = (MockTransportService) transportService;
FilterJoinBenchmark() { Settings settings = Settings.builder() .put(FilterJoinCache.SIREN_FILTERJOIN_CACHE_ENABLED, false) .put("index.engine.robin.refreshInterval", "-1") .put("path.home", "./target/elasticsearch-benchmark/home/") .put("node.local", true) .put(SETTING_NUMBER_OF_SHARDS, NUM_SHARDS) .put(SETTING_NUMBER_OF_REPLICAS, NUM_REPLICAS) .put(IndexCacheModule.QUERY_CACHE_EVERYTHING, true) .build(); this.nodes = new MockNode[2]; this.nodes[0] = new MockNode(Settings.builder().put(settings).put("name", "node1").build(), Version.CURRENT, Collections.<Class<? extends Plugin>>singletonList(SirenJoinPlugin.class)).start(); this.nodes[1] = new MockNode(Settings.builder().put(settings).put("name", "node2").build(), Version.CURRENT, Collections.<Class<? extends Plugin>>singletonList(SirenJoinPlugin.class)).start(); this.client = nodes[0].client(); this.random = new Random(System.currentTimeMillis()); }
@Override protected SearchService newSearchService(ClusterService clusterService, IndicesService indicesService, ThreadPool threadPool, ScriptService scriptService, BigArrays bigArrays, FetchPhase fetchPhase, ResponseCollectorService responseCollectorService) { if (getPluginsService().filterPlugins(MockSearchService.TestPlugin.class).isEmpty()) { return super.newSearchService(clusterService, indicesService, threadPool, scriptService, bigArrays, fetchPhase, responseCollectorService); } return new MockSearchService(clusterService, indicesService, threadPool, scriptService, bigArrays, fetchPhase); }
@Override public boolean test(NodeAndClient nodeAndClient) { return DiscoveryNode.isDataNode(nodeAndClient.node.settings()); } }
@Override PageCacheRecycler createPageCacheRecycler(Settings settings) { if (getPluginsService().filterPlugins(NodeMocksPlugin.class).isEmpty()) { return super.createPageCacheRecycler(settings); } return new MockPageCacheRecycler(settings); }
public boolean isMasterEligible() { return Node.NODE_MASTER_SETTING.get(node.settings()); }
@Override protected ClusterInfoService newClusterInfoService(Settings settings, ClusterService clusterService, ThreadPool threadPool, NodeClient client, Consumer<ClusterInfo> listener) { if (getPluginsService().filterPlugins(MockInternalClusterInfoService.TestPlugin.class).isEmpty()) { return super.newClusterInfoService(settings, clusterService, threadPool, client, listener); } else { return new MockInternalClusterInfoService(settings, clusterService, threadPool, client, listener); } } }
/** * Stops a random node in the cluster that applies to the given filter or non if the non of the nodes applies to the * filter. */ public synchronized void stopRandomNode(final Predicate<Settings> filter) throws IOException { ensureOpen(); NodeAndClient nodeAndClient = getRandomNodeAndClient(nc -> filter.test(nc.node.settings())); if (nodeAndClient != null) { logger.info("Closing filtered random node [{}] ", nodeAndClient.name); stopNodesAndClient(nodeAndClient); } }
@Override protected BigArrays createBigArrays(PageCacheRecycler pageCacheRecycler, CircuitBreakerService circuitBreakerService) { if (getPluginsService().filterPlugins(NodeMocksPlugin.class).isEmpty()) { return super.createBigArrays(pageCacheRecycler, circuitBreakerService); } return new MockBigArrays(pageCacheRecycler, circuitBreakerService); }