IGNITE-2575: Added validation of IGFS endpoint port value. This closes #469.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/b7475f09 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b7475f09 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b7475f09 Branch: refs/heads/ignite-1786 Commit: b7475f09b1727e5cc93681ee229b60ad8e188732 Parents: a4d8a04 Author: dkarachentsev <[email protected]> Authored: Wed Feb 10 12:38:43 2016 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Wed Feb 10 12:38:43 2016 +0300 ---------------------------------------------------------------------- .../internal/processors/igfs/IgfsProcessor.java | 14 ++++++++++ .../igfs/IgfsProcessorValidationSelfTest.java | 27 ++++++++++++++++++++ 2 files changed, 41 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/b7475f09/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsProcessor.java index 21446e1..1b60252 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsProcessor.java @@ -67,6 +67,12 @@ public class IgfsProcessor extends IgfsProcessorAdapter { /** Null IGFS name. */ private static final String NULL_NAME = UUID.randomUUID().toString(); + /** Min available TCP port. */ + private static final int MIN_TCP_PORT = 1; + + /** Max available TCP port. */ + private static final int MAX_TCP_PORT = 0xFFFF; + /** Converts context to IGFS. */ private static final IgniteClosure<IgfsContext,IgniteFileSystem> CTX_TO_IGFS = new C1<IgfsContext, IgniteFileSystem>() { @Override public IgniteFileSystem apply(IgfsContext igfsCtx) { @@ -307,6 +313,14 @@ public class IgfsProcessor extends IgfsProcessorAdapter { throw new IgniteCheckedException("Invalid IGFS data cache configuration (key affinity mapper class should be " + IgfsGroupDataBlocksKeyMapper.class.getSimpleName() + "): " + cfg); + if (cfg.getIpcEndpointConfiguration() != null) { + final int tcpPort = cfg.getIpcEndpointConfiguration().getPort(); + + if (!(tcpPort >= MIN_TCP_PORT && tcpPort <= MAX_TCP_PORT)) + throw new IgniteCheckedException("IGFS endpoint TCP port is out of range [" + MIN_TCP_PORT + + ".." + MAX_TCP_PORT + "]: " + tcpPort); + } + long maxSpaceSize = cfg.getMaxSpaceSize(); if (maxSpaceSize > 0) { http://git-wip-us.apache.org/repos/asf/ignite/blob/b7475f09/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorValidationSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorValidationSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorValidationSelfTest.java index 11a80af..27f47e8 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorValidationSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorValidationSelfTest.java @@ -23,6 +23,7 @@ import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.configuration.FileSystemConfiguration; import org.apache.ignite.configuration.IgniteConfiguration; import org.apache.ignite.igfs.IgfsGroupDataBlocksKeyMapper; +import org.apache.ignite.igfs.IgfsIpcEndpointConfiguration; import org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper; import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.G; @@ -442,6 +443,32 @@ public class IgfsProcessorValidationSelfTest extends IgfsCommonAbstractTest { } /** + * @throws Exception If failed. + */ + public void testInvalidEndpointTcpPort() throws Exception { + final String failMsg = "IGFS endpoint TCP port is out of range"; + g1Cfg.setCacheConfiguration(concat(dataCaches(1024), metaCaches(), CacheConfiguration.class)); + + final String igfsCfgName = "igfs-cfg"; + final IgfsIpcEndpointConfiguration igfsEndpointCfg = new IgfsIpcEndpointConfiguration(); + igfsEndpointCfg.setPort(0); + g1IgfsCfg1.setName(igfsCfgName); + g1IgfsCfg1.setIpcEndpointConfiguration(igfsEndpointCfg); + + checkGridStartFails(g1Cfg, failMsg, true); + + igfsEndpointCfg.setPort(-1); + g1IgfsCfg1.setIpcEndpointConfiguration(igfsEndpointCfg); + + checkGridStartFails(g1Cfg, failMsg, true); + + igfsEndpointCfg.setPort(65536); + g1IgfsCfg1.setIpcEndpointConfiguration(igfsEndpointCfg); + + checkGridStartFails(g1Cfg, failMsg, true); + } + + /** * Checks that the given grid configuration will lead to {@link IgniteCheckedException} upon grid startup. * * @param cfg Grid configuration to check.
