private void publishNode(NodeAndClient nodeAndClient) { assert !nodeAndClient.node().isClosed(); NodeEnvironment nodeEnv = getInstanceFromNode(NodeEnvironment.class, nodeAndClient.node); if (nodeEnv.hasNodeFile()) { dataDirToClean.addAll(Arrays.asList(nodeEnv.nodeDataLocations())); } nodes.put(nodeAndClient.name, nodeAndClient); }
/** * Ensures that at least <code>n</code> nodes are present in the cluster. if more nodes than * <code>n</code> are present this method will not stop any of the running nodes. */ public synchronized void ensureAtLeastNumNodes(int n) { int size = nodes.size(); for (int i = size; i < n; i++) { logger.info("increasing cluster size from {} to {}", size, n); NodeAndClient buildNode = buildNode(); buildNode.node().start(); publishNode(buildNode); } }
private synchronized NodeAndClient getOrBuildRandomNode() { ensureOpen(); NodeAndClient randomNodeAndClient = getRandomNodeAndClient(); if (randomNodeAndClient != null) { return randomNodeAndClient; } NodeAndClient buildNode = buildNode(); buildNode.node().start(); publishNode(buildNode); return buildNode; }
/** Starts a node with the given settings and returns it's name. */ public String startNode(Settings settings) { NodeAndClient buildNode = buildNode(settings); buildNode.node().start(); publishNode(buildNode); return buildNode.name; }