Return-Path: X-Original-To: apmail-ignite-commits-archive@minotaur.apache.org Delivered-To: apmail-ignite-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id CCC1717805 for ; Fri, 19 Jun 2015 09:37:13 +0000 (UTC) Received: (qmail 19573 invoked by uid 500); 19 Jun 2015 09:37:13 -0000 Delivered-To: apmail-ignite-commits-archive@ignite.apache.org Received: (qmail 19524 invoked by uid 500); 19 Jun 2015 09:37:13 -0000 Mailing-List: contact commits-help@ignite.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.incubator.apache.org Delivered-To: mailing list commits@ignite.incubator.apache.org Received: (qmail 19505 invoked by uid 99); 19 Jun 2015 09:37:13 -0000 Received: from Unknown (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 19 Jun 2015 09:37:13 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 41B53CEF90 for ; Fri, 19 Jun 2015 09:37:13 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.446 X-Spam-Level: * X-Spam-Status: No, score=1.446 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.335, URIBL_BLOCKED=0.001] autolearn=disabled Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id c1AyFrlukINa for ; Fri, 19 Jun 2015 09:37:05 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with SMTP id 917AE275F0 for ; Fri, 19 Jun 2015 09:37:05 +0000 (UTC) Received: (qmail 19182 invoked by uid 99); 19 Jun 2015 09:37:05 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 19 Jun 2015 09:37:05 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 565EFE0428; Fri, 19 Jun 2015 09:37:05 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: vozerov@apache.org To: commits@ignite.incubator.apache.org Date: Fri, 19 Jun 2015 09:37:05 -0000 Message-Id: <95fde239d4964a29ac5806b591e10f9b@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [01/50] incubator-ignite git commit: ignite-484-1 - small page test + race fix Repository: incubator-ignite Updated Branches: refs/heads/ignite-gg-10411 28adb89e7 -> 0759fc9eb ignite-484-1 - small page test + race fix Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/8e8433b6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/8e8433b6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/8e8433b6 Branch: refs/heads/ignite-gg-10411 Commit: 8e8433b6cc07afcdd88a0a570887fe0353e59ee7 Parents: 7e3f924 Author: S.Vladykin Authored: Tue Jun 16 13:37:19 2015 +0300 Committer: S.Vladykin Committed: Tue Jun 16 13:37:19 2015 +0300 ---------------------------------------------------------------------- .../query/h2/twostep/GridMergeIndex.java | 17 +++++++--- .../h2/twostep/GridMergeIndexUnsorted.java | 5 +-- .../h2/twostep/GridReduceQueryExecutor.java | 4 +-- .../query/h2/twostep/GridResultPage.java | 19 ++++++----- .../IgniteCacheQueryNodeRestartSelfTest2.java | 34 +++++++++++++++++++- 5 files changed, 59 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8e8433b6/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndex.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndex.java index 9136821..af29647 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndex.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndex.java @@ -96,7 +96,11 @@ public abstract class GridMergeIndex extends BaseIndex { * @param nodeId Node ID. */ public void fail(UUID nodeId) { - addPage0(new GridResultPage(null, nodeId, null, false)); + addPage0(new GridResultPage(null, nodeId, null) { + @Override public boolean isFail() { + return true; + } + }); } /** @@ -134,10 +138,13 @@ public abstract class GridMergeIndex extends BaseIndex { } } - if (last) - last = lastSubmitted.compareAndSet(false, true); - - addPage0(new GridResultPage(null, page.source(), null, last)); + if (last && lastSubmitted.compareAndSet(false, true)) { + addPage0(new GridResultPage(null, page.source(), null) { + @Override public boolean isLast() { + return true; + } + }); + } } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8e8433b6/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexUnsorted.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexUnsorted.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexUnsorted.java index fdee17a..e0a07ec 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexUnsorted.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexUnsorted.java @@ -44,8 +44,9 @@ public class GridMergeIndexUnsorted extends GridMergeIndex { /** {@inheritDoc} */ @Override protected void addPage0(GridResultPage page) { - if (page.rowsInPage() != 0 || page.isLast() || queue.isEmpty()) - queue.add(page); + assert page.rowsInPage() > 0 || page.isLast() || page.isFail(); + + queue.add(page); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8e8433b6/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java index 343a439..c570d24 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java @@ -229,7 +229,7 @@ public class GridReduceQueryExecutor { GridResultPage page; try { - page = new GridResultPage(ctx, node.id(), msg, false) { + page = new GridResultPage(ctx, node.id(), msg) { @Override public void fetchNextPage() { Object errState = r.state.get(); @@ -251,7 +251,7 @@ public class GridReduceQueryExecutor { ctx.io().send(node, GridTopic.TOPIC_QUERY, msg0, GridIoPolicy.PUBLIC_POOL); } catch (IgniteCheckedException e) { - throw new CacheException(e); + throw new CacheException("Failed to fetch data from node: " + node.id(), e); } } }; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8e8433b6/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridResultPage.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridResultPage.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridResultPage.java index 35bfab9..c9a7e48 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridResultPage.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridResultPage.java @@ -43,27 +43,19 @@ public class GridResultPage { private final int rowsInPage; /** */ - private final boolean last; - - /** */ private Iterator rows; /** * @param ctx Kernal context. * @param src Source. * @param res Response. - * @param last If this is the globally last page. */ @SuppressWarnings("unchecked") - public GridResultPage(final GridKernalContext ctx, UUID src, GridQueryNextPageResponse res, boolean last) { + public GridResultPage(final GridKernalContext ctx, UUID src, GridQueryNextPageResponse res) { assert src != null; this.src = src; this.res = res; - this.last = last; - - if (last) - assert res == null : "The last page must be dummy."; // res == null means that it is a terminating dummy page for the given source node ID. if (res != null) { @@ -117,10 +109,17 @@ public class GridResultPage { } /** + * @return {@code true} If this is a dummy fail page. + */ + public boolean isFail() { + return false; + } + + /** * @return {@code true} If this is a dummy last page for all the sources. */ public boolean isLast() { - return last; + return false; } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8e8433b6/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 e65cc13..d440b13 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 @@ -32,6 +32,7 @@ import org.apache.ignite.spi.discovery.tcp.ipfinder.*; import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*; import org.apache.ignite.testframework.junits.common.*; +import javax.cache.*; import java.io.*; import java.util.*; import java.util.concurrent.*; @@ -215,7 +216,38 @@ public class IgniteCacheQueryNodeRestartSelfTest2 extends GridCommonAbstractTest if (rnd.nextBoolean()) { // Partitioned query. IgniteCache cache = grid(g).cache("pu"); - assertEquals(pRes, cache.query(new SqlFieldsQuery(PARTITIONED_QRY)).getAll()); + SqlFieldsQuery qry = new SqlFieldsQuery(PARTITIONED_QRY); + + boolean smallPageSize = rnd.nextBoolean(); + + if (smallPageSize) + qry.setPageSize(3); + + try { + assertEquals(pRes, cache.query(qry).getAll()); + } + catch (CacheException e) { + assertTrue("On large page size must retry.", smallPageSize); + + boolean failedOnRemoteFetch = false; + + for (Throwable th = e; th != null; th = th.getCause()) { + if (!(th instanceof CacheException)) + continue; + + if (th.getMessage().startsWith("Failed to fetch data from node:")) { + failedOnRemoteFetch = true; + + break; + } + } + + if (!failedOnRemoteFetch) { + e.printStackTrace(); + + fail("Must fail inside of GridResultPage.fetchNextPage or subclass."); + } + } } else { // Replicated query. IgniteCache cache = grid(g).cache("co");