/** {@inheritDoc} */ @Override protected GridConfiguration getConfiguration(String gridName) throws Exception { GridConfiguration cfg = super.getConfiguration(gridName); GridTcpDiscoverySpi disco = new GridTcpDiscoverySpi(); disco.setMaxMissedHeartbeats(Integer.MAX_VALUE); disco.setIpFinder(IP_FINDER); cfg.setDiscoverySpi(disco); if (gridName.endsWith("1")) cfg.setCacheConfiguration(); // Empty cache configuration. else { assert gridName.endsWith("2"); GridCacheConfiguration cacheCfg = defaultCacheConfiguration(); cacheCfg.setCacheMode(PARTITIONED); cacheCfg.setBackups(1); cfg.setCacheConfiguration(cacheCfg); } return cfg; }
/** {@inheritDoc} */ @Override protected GridConfiguration getConfiguration(String gridName) throws Exception { GridConfiguration cfg = super.getConfiguration(gridName); cfg.setCacheConfiguration( cacheConfiguration(META_CACHE_NAME), cacheConfiguration(DATA_CACHE_NAME)); GridTcpDiscoverySpi discoSpi = new GridTcpDiscoverySpi(); discoSpi.setIpFinder(IP_FINDER); cfg.setDiscoverySpi(discoSpi); GridGgfsConfiguration ggfsCfg = new GridGgfsConfiguration(); ggfsCfg.setMetaCacheName(META_CACHE_NAME); ggfsCfg.setDataCacheName(DATA_CACHE_NAME); ggfsCfg.setName("ggfs"); ggfsCfg.setBlockSize(CFG_BLOCK_SIZE); ggfsCfg.setFragmentizerEnabled(true); cfg.setGgfsConfiguration(ggfsCfg); return cfg; }
/** * Resolves host for REST TCP server using grid configuration. * * @param cfg Grid configuration. * @return REST host. * @throws IOException If failed to resolve REST host. */ private InetAddress resolveRestTcpHost(GridConfiguration cfg) throws IOException { String host = cfg.getRestTcpHost(); if (host == null) host = cfg.getLocalHost(); return U.resolveLocalHost(host); }
/** * Creates grid configuration. * * @param gridName Grid name. * @return Grid configuration. * @throws Exception If error occurred. */ private static GridConfiguration getConfiguration(String gridName) throws Exception { GridConfiguration cfg = new GridConfiguration(); cfg.setGridName(gridName); cfg.setGridLogger(new GridLog4jLogger()); cfg.setRestEnabled(false); return cfg; }
/** * Starts new grid node. * * @param gridName name of new node. * @param springCfg file with spring configuration to use for this node. * @return a grid instance local to new node {@link GridGain#start(GridConfiguration)}. * @throws Exception if node run failed. */ protected Grid startNode(String gridName, File springCfg) throws Exception { assert springCfg != null; ListableBeanFactory springCtx = new FileSystemXmlApplicationContext("file:///" + springCfg.getAbsolutePath()); Map cfgMap = springCtx.getBeansOfType(GridConfiguration.class); assert cfgMap != null; assert !cfgMap.isEmpty(); GridConfiguration cfg = (GridConfiguration) cfgMap.values().iterator().next(); cfg.setGridName(gridName + "-" + getNextNodeNum()); return G.start(cfg); }
/** * Tries to start server with given parameters. * * @param hostAddr Host on which server should be bound. * @param port Port on which server should be bound. * @param lsnr Server message listener. * @param parser Server message parser. * @param sslCtx SSL context in case if SSL is enabled. * @param cfg Configuration for other parameters. * @return {@code True} if server successfully started, {@code false} if port is used and server * was unable to start. */ private boolean startTcpServer( InetAddress hostAddr, int port, GridNioServerListener<GridClientMessage> lsnr, GridNioParser parser, @Nullable SSLContext sslCtx, GridConfiguration cfg) { try { GridNioFilter codec = new GridNioCodecFilter(parser, log, false); GridNioFilter[] filters; if (sslCtx != null) { GridNioSslFilter sslFilter = new GridNioSslFilter(sslCtx, log); boolean auth = cfg.isRestTcpSslClientAuth(); sslFilter.wantClientAuth(auth); sslFilter.needClientAuth(auth); filters = new GridNioFilter[] {codec, sslFilter}; } else filters = new GridNioFilter[] {codec}; srv = GridNioServer.<GridClientMessage>builder() .address(hostAddr) .port(port) .listener(lsnr) .logger(log) .selectorCount(cfg.getRestTcpSelectorCount()) .gridName(ctx.gridName()) .tcpNoDelay(cfg.isRestTcpNoDelay()) .directBuffer(cfg.isRestTcpDirectBuffer()) .byteOrder(ByteOrder.nativeOrder()) .socketSendBufferSize(cfg.getRestTcpSendBufferSize()) .socketReceiveBufferSize(cfg.getRestTcpReceiveBufferSize()) .sendQueueLimit(cfg.getRestTcpSendQueueLimit()) .filters(filters) .build(); srv.idleTimeout(cfg.getRestIdleTimeout()); srv.start(); ctx.ports().registerPort(port, GridPortProtocol.TCP, getClass()); return true; } catch (GridException e) { if (log.isDebugEnabled()) log.debug( "Failed to start " + name() + " protocol on port " + port + ": " + e.getMessage()); return false; } }
/** {@inheritDoc} */ @Override protected GridConfiguration getConfiguration(String gridName) throws Exception { GridConfiguration cfg = super.getConfiguration(gridName); GridTcpDiscoverySpi discoSpi = new GridTcpDiscoverySpi(); discoSpi.setIpFinder(ipFinder); cfg.setDiscoverySpi(discoSpi); cfg.setCommunicationSpi(new CommunicationSpi()); cfg.setMarshaller(new GridOptimizedMarshaller(false)); GridCacheConfiguration ccfg = defaultCacheConfiguration(); ccfg.setCacheMode(PARTITIONED); cfg.setCacheConfiguration(ccfg); return cfg; }
/** {@inheritDoc} */ @Override protected GridConfiguration getConfiguration(String gridName) throws Exception { GridConfiguration c = super.getConfiguration(gridName); GridTcpDiscoverySpi discoSpi = new GridTcpDiscoverySpi(); discoSpi.setIpFinder(new GridTcpDiscoveryVmIpFinder(true)); c.setDiscoverySpi(discoSpi); c.setExecutorService( new ThreadPoolExecutor( SPLIT_COUNT, SPLIT_COUNT, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>())); c.setExecutorServiceShutdown(true); return c; }
/** {@inheritDoc} */ @Override protected GridConfiguration getConfiguration(String gridName) throws Exception { GridConfiguration cfg = super.getConfiguration(gridName); GridTcpDiscoverySpi discoSpi = new GridTcpDiscoverySpi(); discoSpi.setIpFinder(IP_FINDER); cfg.setDiscoverySpi(discoSpi); GridGgfsConfiguration ggfsCfg = new GridGgfsConfiguration(); ggfsCfg.setDataCacheName("partitioned"); ggfsCfg.setMetaCacheName("replicated"); ggfsCfg.setName("ggfs"); ggfsCfg.setManagementPort(GridGgfsConfiguration.DFLT_MGMT_PORT + cnt); ggfsCfg.setIpcEndpointConfiguration( new HashMap<String, String>() { { put("type", "shmem"); put("port", String.valueOf(GridIpcSharedMemoryServerEndpoint.DFLT_IPC_PORT + cnt)); } }); ggfsCfg.setBlockSize( 512 * 1024); // Together with group blocks mapper will yield 64M per node groups. cfg.setGgfsConfiguration(ggfsCfg); cfg.setCacheConfiguration(cacheConfiguration()); cfg.setIncludeEventTypes(EVT_TASK_FAILED, EVT_TASK_FINISHED, EVT_JOB_MAPPED); GridTcpCommunicationSpi commSpi = new GridTcpCommunicationSpi(); commSpi.setSharedMemoryPort(-1); cfg.setCommunicationSpi(commSpi); cnt++; return cfg; }
/** {@inheritDoc} */ @SuppressWarnings("BusyWait") @Override public void start(final GridRestProtocolHandler hnd) throws GridException { assert hnd != null; GridConfiguration cfg = ctx.config(); GridNioServerListener<GridClientMessage> lsnr = new GridTcpRestNioListener(log, hnd); GridNioParser parser = new GridTcpRestParser(log); try { host = resolveRestTcpHost(cfg); SSLContext sslCtx = null; if (cfg.isRestTcpSslEnabled()) { GridSslContextFactory factory = cfg.getRestTcpSslContextFactory(); if (factory == null) // Thrown SSL exception instead of GridException for writing correct warning message into // log. throw new SSLException("SSL is enabled, but SSL context factory is not specified."); sslCtx = factory.createSslContext(); } int lastPort = cfg.getRestTcpPort() + cfg.getRestPortRange() - 1; for (port = cfg.getRestTcpPort(); port <= lastPort; port++) { if (startTcpServer(host, port, lsnr, parser, sslCtx, cfg)) { if (log.isInfoEnabled()) log.info(startInfo()); return; } } U.warn( log, "Failed to start TCP binary REST server (possibly all ports in range are in use) " + "[firstPort=" + cfg.getRestTcpPort() + ", lastPort=" + lastPort + ", host=" + host + ']'); } catch (SSLException e) { U.warn( log, "Failed to start " + name() + " protocol on port " + port + ": " + e.getMessage(), "Failed to start " + name() + " protocol on port " + port + ". Check if SSL context factory is " + "properly configured."); } catch (IOException e) { U.warn( log, "Failed to start " + name() + " protocol on port " + port + ": " + e.getMessage(), "Failed to start " + name() + " protocol on port " + port + ". " + "Check restTcpHost configuration property."); } }