/** * Remove one random node. */ public void failNode() { if (srvs.isEmpty()) throw new IllegalStateException("Cannot remove node from empty cluster"); Ignite srv = srvs.get(rnd.nextInt(srvs.size())); IgniteConfiguration cfg = srv.configuration(); NodeConfiguration nodeCfg = new NodeConfiguration( ((TcpDiscoverySpi)cfg.getDiscoverySpi()).getIpFinder().getRegisteredAddresses().iterator().next().getPort(), Objects.requireNonNull(cfg.getClientConnectorConfiguration()).getPort() ); srv.close(); srvs.remove(srv); failedCfgs.add(nodeCfg); }
/** Private constructor: use {@link #start(int)} to create instances of {@link LocalIgniteCluster}. */ private LocalIgniteCluster(int initSize) { if (initSize < 1) throw new IllegalArgumentException("Cluster must have at least one node."); this.initSize = initSize; for (int i = 0; i < initSize; i++) { IgniteConfiguration cfg = getConfiguration( new NodeConfiguration(TcpDiscoverySpi.DFLT_PORT + i, ClientConnectorConfiguration.DFLT_PORT + i) ); Ignite ignite = Ignition.start(cfg); srvs.add(ignite); } }
/** */ private static IgniteConfiguration getConfiguration(NodeConfiguration nodeCfg) { IgniteConfiguration igniteCfg = Config.getServerConfiguration(); ((TcpDiscoverySpi)igniteCfg.getDiscoverySpi()).getIpFinder().registerAddresses( Collections.singletonList(new InetSocketAddress(HOST, nodeCfg.getDiscoveryPort())) ); igniteCfg.setClientConnectorConfiguration(new ClientConnectorConfiguration() .setHost(HOST) .setPort(nodeCfg.getClientPort()) ); return igniteCfg; }