Repository: ignite Updated Branches: refs/heads/ignite-1452 [created] 89d2cb7f7
ignite-1452 Avoid cache operations hang on node stop Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/89d2cb7f Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/89d2cb7f Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/89d2cb7f Branch: refs/heads/ignite-1452 Commit: 89d2cb7f758823962978572e8a5c3ec6348da7c4 Parents: b4c515e Author: sboikov <[email protected]> Authored: Mon Sep 14 13:42:22 2015 +0300 Committer: sboikov <[email protected]> Committed: Mon Sep 14 13:42:22 2015 +0300 ---------------------------------------------------------------------- .../processors/cache/GridCacheMvccManager.java | 25 ++++- .../IgniteCacheQueryNodeRestartSelfTest2.java | 2 - .../IgniteCacheQuerySelfTestSuite.java | 103 ++++--------------- 3 files changed, 38 insertions(+), 92 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/89d2cb7f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java index 555bbda..77d47f7 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java @@ -326,7 +326,14 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter { * Cancels all client futures. */ public void cancelClientFutures() { - cancelClientFutures(new IgniteCheckedException("Operation has been cancelled (node is stopping).")); + cancelClientFutures(stopError()); + } + + /** + * @return Local node stop error. + */ + private IgniteCheckedException stopError() { + return new IgniteCheckedException("Operation has been cancelled (node is stopping)."); } /** {@inheritDoc} */ @@ -385,8 +392,7 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter { assert old == null : "Old future is not null [futVer=" + futVer + ", fut=" + fut + ", old=" + old + ']'; - if (cctx.kernalContext().clientDisconnected()) - ((GridFutureAdapter)fut).onDone(disconnectedError(null)); + onFutureAdded(fut); } /** @@ -507,8 +513,7 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter { fut.onNodeLeft(n.id()); } - if (cctx.kernalContext().clientDisconnected()) - ((GridFutureAdapter)fut).onDone(disconnectedError(null)); + onFutureAdded(fut); // Just in case if future was completed before it was added. if (fut.isDone()) @@ -518,6 +523,16 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter { } /** + * @param fut Future. + */ + private void onFutureAdded(IgniteInternalFuture<?> fut) { + if (cctx.kernalContext().isStopping()) + ((GridFutureAdapter)fut).onDone(stopError()); + else if (cctx.kernalContext().clientDisconnected()) + ((GridFutureAdapter)fut).onDone(disconnectedError(null)); + } + + /** * @param fut Future to remove. * @return {@code True} if removed. */ http://git-wip-us.apache.org/repos/asf/ignite/blob/89d2cb7f/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartSelfTest2.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartSelfTest2.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartSelfTest2.java index 9e903d1..71f764b 100644 --- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartSelfTest2.java +++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartSelfTest2.java @@ -185,8 +185,6 @@ public class IgniteCacheQueryNodeRestartSelfTest2 extends GridCommonAbstractTest * @throws Exception If failed. */ public void testRestarts() throws Exception { - fail("https://issues.apache.org/jira/browse/IGNITE-1452"); - int duration = 90 * 1000; int qryThreadNum = 4; int restartThreadsNum = 2; // 4 + 2 = 6 nodes http://git-wip-us.apache.org/repos/asf/ignite/blob/89d2cb7f/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java index 41670d1..b9cee62 100644 --- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java +++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java @@ -97,93 +97,26 @@ public class IgniteCacheQuerySelfTestSuite extends TestSuite { public static TestSuite suite() throws Exception { TestSuite suite = new TestSuite("Ignite Cache Queries Test Suite"); - // Parsing - suite.addTestSuite(GridQueryParsingTest.class); - - // Queries tests. - suite.addTestSuite(IgniteSqlSplitterSelfTest.class); - suite.addTestSuite(GridCacheQueryIndexDisabledSelfTest.class); - suite.addTestSuite(IgniteCacheQueryLoadSelfTest.class); - suite.addTestSuite(IgniteCacheLocalQuerySelfTest.class); - suite.addTestSuite(IgniteCacheLocalAtomicQuerySelfTest.class); - suite.addTestSuite(IgniteCacheReplicatedQuerySelfTest.class); - suite.addTestSuite(IgniteCacheReplicatedQueryP2PDisabledSelfTest.class); - suite.addTestSuite(IgniteCachePartitionedQuerySelfTest.class); - suite.addTestSuite(IgniteCacheAtomicQuerySelfTest.class); - suite.addTestSuite(IgniteCacheAtomicNearEnabledQuerySelfTest.class); - suite.addTestSuite(IgniteCachePartitionedQueryP2PDisabledSelfTest.class); - suite.addTestSuite(IgniteCachePartitionedQueryMultiThreadedSelfTest.class); - suite.addTestSuite(IgniteCacheQueryIndexSelfTest.class); - suite.addTestSuite(IgniteCacheCollocatedQuerySelfTest.class); - suite.addTestSuite(IgniteCacheLargeResultSelfTest.class); - suite.addTestSuite(GridCacheQueryInternalKeysSelfTest.class); - suite.addTestSuite(IgniteCacheQueryMultiThreadedSelfTest.class); - suite.addTestSuite(IgniteCacheQueryMultiThreadedOffHeapTieredSelfTest.class); - suite.addTestSuite(IgniteCacheQueryEvictsMultiThreadedSelfTest.class); - suite.addTestSuite(IgniteCacheQueryOffheapMultiThreadedSelfTest.class); - suite.addTestSuite(IgniteCacheQueryOffheapEvictsMultiThreadedSelfTest.class); - suite.addTestSuite(IgniteCacheOffheapEvictQueryTest.class); - suite.addTestSuite(IgniteCacheSqlQueryMultiThreadedSelfTest.class); - suite.addTestSuite(IgniteCacheOffheapTieredMultithreadedSelfTest.class); suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest.class); suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest2.class); - suite.addTestSuite(IgniteCacheClientQueryReplicatedNodeRestartSelfTest.class); - suite.addTestSuite(GridCacheReduceQueryMultithreadedSelfTest.class); - suite.addTestSuite(GridCacheCrossCacheQuerySelfTest.class); - suite.addTestSuite(GridCacheQuerySerializationSelfTest.class); - - // Scan queries. - suite.addTestSuite(CacheScanPartitionQueryFallbackSelfTest.class); - - // Fields queries. - suite.addTestSuite(IgniteCacheLocalFieldsQuerySelfTest.class); - suite.addTestSuite(IgniteCacheReplicatedFieldsQuerySelfTest.class); - suite.addTestSuite(IgniteCacheReplicatedFieldsQueryP2PEnabledSelfTest.class); - suite.addTestSuite(IgniteCachePartitionedFieldsQuerySelfTest.class); - suite.addTestSuite(IgniteCacheAtomicFieldsQuerySelfTest.class); - suite.addTestSuite(IgniteCacheAtomicNearEnabledFieldsQuerySelfTest.class); - suite.addTestSuite(IgniteCachePartitionedFieldsQueryP2PEnabledSelfTest.class); - suite.addTestSuite(IgniteCacheFieldsQueryNoDataSelfTest.class); - - // Continuous queries. - suite.addTestSuite(GridCacheContinuousQueryLocalSelfTest.class); - suite.addTestSuite(GridCacheContinuousQueryLocalAtomicSelfTest.class); - suite.addTestSuite(GridCacheContinuousQueryReplicatedSelfTest.class); - suite.addTestSuite(GridCacheContinuousQueryReplicatedAtomicSelfTest.class); - suite.addTestSuite(GridCacheContinuousQueryReplicatedP2PDisabledSelfTest.class); - suite.addTestSuite(GridCacheContinuousQueryPartitionedSelfTest.class); - suite.addTestSuite(GridCacheContinuousQueryPartitionedOnlySelfTest.class); - suite.addTestSuite(GridCacheContinuousQueryPartitionedP2PDisabledSelfTest.class); - suite.addTestSuite(GridCacheContinuousQueryAtomicSelfTest.class); - suite.addTestSuite(GridCacheContinuousQueryAtomicNearEnabledSelfTest.class); - suite.addTestSuite(GridCacheContinuousQueryAtomicP2PDisabledSelfTest.class); - suite.addTestSuite(IgniteCacheContinuousQueryClientTest.class); - - // Reduce fields queries. - suite.addTestSuite(GridCacheReduceFieldsQueryLocalSelfTest.class); - suite.addTestSuite(GridCacheReduceFieldsQueryPartitionedSelfTest.class); - suite.addTestSuite(GridCacheReduceFieldsQueryAtomicSelfTest.class); - suite.addTestSuite(GridCacheReduceFieldsQueryReplicatedSelfTest.class); - - suite.addTestSuite(GridCacheQueryIndexingDisabledSelfTest.class); - - suite.addTestSuite(GridCacheSwapScanQuerySelfTest.class); - - suite.addTestSuite(GridOrderedMessageCancelSelfTest.class); - - // Ignite cache and H2 comparison. - suite.addTestSuite(BaseH2CompareQueryTest.class); - suite.addTestSuite(H2CompareBigQueryTest.class); - - // Cache query metrics. - suite.addTestSuite(CacheLocalQueryMetricsSelfTest.class); - suite.addTestSuite(CachePartitionedQueryMetricsDistributedSelfTest.class); - suite.addTestSuite(CachePartitionedQueryMetricsLocalSelfTest.class); - suite.addTestSuite(CacheReplicatedQueryMetricsDistributedSelfTest.class); - suite.addTestSuite(CacheReplicatedQueryMetricsLocalSelfTest.class); - - //Unmarshallig query test. - suite.addTestSuite(IgniteCacheP2pUnmarshallingQueryErrorTest.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest2.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest2.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest2.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest2.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest2.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest2.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest2.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest2.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest.class); + suite.addTestSuite(IgniteCacheQueryNodeRestartSelfTest2.class); return suite; }
