#ignite-841: Change igfs exception in case of one client node.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/a33d3d49 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/a33d3d49 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/a33d3d49 Branch: refs/heads/ignite-478 Commit: a33d3d49f675acd10e82100aa5a7f3378d11fdd1 Parents: 4accd3a Author: ivasilinets <ivasilin...@gridgain.com> Authored: Wed May 6 15:27:45 2015 +0300 Committer: ivasilinets <ivasilin...@gridgain.com> Committed: Wed May 6 15:27:45 2015 +0300 ---------------------------------------------------------------------- .../dht/GridPartitionedGetFuture.java | 2 +- .../internal/processors/igfs/IgfsUtils.java | 11 +- .../processors/igfs/IgfsOneClientNodeTest.java | 133 +++++++++++++++++++ .../ignite/testsuites/IgniteIgfsTestSuite.java | 1 + 4 files changed, 143 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a33d3d49/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java index 35ba2a9..2f41e63 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java @@ -270,7 +270,7 @@ public class GridPartitionedGetFuture<K, V> extends GridCompoundIdentityFuture<M AffinityTopologyVersion topVer ) { if (CU.affinityNodes(cctx, topVer).isEmpty()) { - onDone(new ClusterTopologyCheckedException("Failed to map keys for cache " + + onDone(new ClusterTopologyServerNotFoundException("Failed to map keys for cache " + "(all partition nodes left the grid).")); return; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a33d3d49/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java index 2a915ec..4b0234f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java @@ -19,6 +19,7 @@ package org.apache.ignite.internal.processors.igfs; import org.apache.ignite.*; import org.apache.ignite.igfs.*; +import org.apache.ignite.internal.cluster.*; import org.apache.ignite.internal.util.typedef.*; import java.lang.reflect.*; @@ -50,9 +51,13 @@ public class IgfsUtils { if (err0 != null) // Dealing with a kind of IGFS error, wrap it once again, preserving message and root cause. err0 = newIgfsException(err0.getClass(), err0.getMessage(), err0); - else - // Unknown error nature. - err0 = new IgfsException("Generic IGFS error occurred.", err); + else { + if (err instanceof ClusterTopologyServerNotFoundException) + err0 = new IgfsException("Cache server nodes not found.", err); + else + // Unknown error nature. + err0 = new IgfsException("Generic IGFS error occurred.", err); + } } return err0; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a33d3d49/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsOneClientNodeTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsOneClientNodeTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsOneClientNodeTest.java new file mode 100644 index 0000000..49ddb03 --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsOneClientNodeTest.java @@ -0,0 +1,133 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.internal.processors.igfs; + +import org.apache.ignite.cache.*; +import org.apache.ignite.configuration.*; +import org.apache.ignite.igfs.*; +import org.apache.ignite.spi.discovery.tcp.*; +import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*; +import org.apache.ignite.testframework.*; +import org.apache.ignite.testframework.junits.common.*; + +import java.util.concurrent.*; + +import static org.apache.ignite.cache.CacheAtomicityMode.*; +import static org.apache.ignite.cache.CacheMode.*; + +/** + * Test for igfs with one node in client mode. + */ +public class IgfsOneClientNodeTest extends GridCommonAbstractTest { + /** Meta-information cache name. */ + private static final String META_CACHE_NAME = "meta"; + + /** Data cache name. */ + private static final String DATA_CACHE_NAME = null; + + /** Regular cache name. */ + private static final String CACHE_NAME = "cache"; + + /** {@inheritDoc} */ + @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { + IgniteConfiguration cfg = super.getConfiguration(gridName); + + cfg.setCacheConfiguration(cacheConfiguration(META_CACHE_NAME), cacheConfiguration(DATA_CACHE_NAME), + cacheConfiguration(CACHE_NAME)); + + cfg.setClientMode(true); + + TcpDiscoverySpi discoSpi = new TcpDiscoverySpi(); + + discoSpi.setIpFinder(new TcpDiscoveryVmIpFinder(true)); + + cfg.setDiscoverySpi(discoSpi); + + FileSystemConfiguration igfsCfg = new FileSystemConfiguration(); + + igfsCfg.setMetaCacheName(META_CACHE_NAME); + igfsCfg.setDataCacheName(DATA_CACHE_NAME); + igfsCfg.setName("igfs"); + + cfg.setFileSystemConfiguration(igfsCfg); + + return cfg; + } + + /** {@inheritDoc} */ + protected CacheConfiguration cacheConfiguration(String cacheName) { + CacheConfiguration cacheCfg = defaultCacheConfiguration(); + + cacheCfg.setName(cacheName); + + cacheCfg.setCacheMode(PARTITIONED); + + cacheCfg.setBackups(0); + cacheCfg.setAffinityMapper(new IgfsGroupDataBlocksKeyMapper(128)); + + cacheCfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC); + cacheCfg.setAtomicityMode(TRANSACTIONAL); + + return cacheCfg; + } + + /** {@inheritDoc} */ + @Override protected void beforeTest() throws Exception { + startGrids(1); + } + + /** {@inheritDoc} */ + @Override protected void afterTest() throws Exception { + stopAllGrids(); + } + + /** + * @throws Exception If failed. + */ + public void testStartIgfs() throws Exception { + + final IgfsImpl igfs = (IgfsImpl) grid(0).fileSystem("igfs"); + + GridTestUtils.assertThrows(log, new Callable<Object>() { + @Override public Object call() throws Exception { + IgfsAbstractSelfTest.create(igfs, new IgfsPath[]{new IgfsPath("/dir")}, null); + return null; + } + }, IgfsException.class, "Cache server nodes not found."); + + GridTestUtils.assertThrows(log, new Callable<Object>() { + @Override public Object call() throws Exception { + IgfsPath FILE = new IgfsPath(new IgfsPath("/dir"), "file"); + + igfs.delete(FILE, false); + + return null; + } + }, IgfsException.class, "Cache server nodes not found."); + + GridTestUtils.assertThrows(log, new Callable<Object>() { + @Override public Object call() throws Exception { + IgfsPath FILE = new IgfsPath(new IgfsPath("/dir"), "file"); + + igfs.append(FILE, true); + + return null; + } + }, IgfsException.class, "Cache server nodes not found."); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a33d3d49/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java index 4f3178e..f8dac3d 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java @@ -60,6 +60,7 @@ public class IgniteIgfsTestSuite extends TestSuite { suite.addTest(new TestSuite(IgfsDualAsyncSelfTest.class)); suite.addTest(new TestSuite(IgfsClientCacheSelfTest.class)); + suite.addTest(new TestSuite(IgfsOneClientNodeTest.class)); suite.addTest(new TestSuite(IgfsModeResolverSelfTest.class));