ignite-gg-8.0.2.ea2 fix 
CacheExpiryTest.iteratorNextShouldCallGetExpiryForAccessedEntry TCK test


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/43eefb0c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/43eefb0c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/43eefb0c

Branch: refs/heads/ignite-3477
Commit: 43eefb0c77f448af9b3634414bef0e97cb2d7838
Parents: 2266e2a
Author: Dmitriy Govorukhin <dgovoruk...@gridgain.com>
Authored: Wed Jan 11 15:30:52 2017 +0300
Committer: Dmitriy Govorukhin <dgovoruk...@gridgain.com>
Committed: Wed Jan 11 15:30:52 2017 +0300

----------------------------------------------------------------------
 .../cache/query/GridCacheQueryManager.java      |  23 ++--
 ...QueryNodeRestartDistributedJoinSelfTest.java | 104 +++++++++++--------
 2 files changed, 78 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/43eefb0c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
index c584066..081a27c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
@@ -69,7 +69,6 @@ import 
org.apache.ignite.internal.processors.cache.IgniteCacheExpiryPolicy;
 import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
 import org.apache.ignite.internal.processors.cache.KeyCacheObject;
 import org.apache.ignite.internal.processors.cache.database.CacheDataRow;
-import org.apache.ignite.internal.processors.cache.database.tree.BPlusTree;
 import 
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheAdapter;
 import 
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLocalPartition;
 import 
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtUnreservedPartitionException;
@@ -2897,6 +2896,9 @@ public abstract class GridCacheQueryManager<K, V> extends 
GridCacheManagerAdapte
         /** */
         private GridIterator<CacheDataRow> it;
 
+        /** Need advance. */
+        private boolean needAdvance;
+
         /**
          * @param it Iterator.
          * @param plc Expiry policy.
@@ -2925,24 +2927,31 @@ public abstract class GridCacheQueryManager<K, V> 
extends GridCacheManagerAdapte
             this.keepBinary = keepBinary;
             expiryPlc = cctx.cache().expiryPolicy(plc);
 
-            advance();
+            needAdvance = true;
         }
 
         /** {@inheritDoc} */
         @Override public boolean onHasNext() {
+            if (needAdvance) {
+                advance();
+
+                needAdvance = false;
+            }
+
             return next != null;
         }
 
         /** {@inheritDoc} */
         @Override public IgniteBiTuple<K, V> onNext() {
+            if (needAdvance)
+                advance();
+            else
+                needAdvance = true;
+
             if (next == null)
                 throw new NoSuchElementException();
 
-            IgniteBiTuple<K, V> next0 = next;
-
-            advance();
-
-            return next0;
+            return next;
         }
 
         /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/43eefb0c/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartDistributedJoinSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartDistributedJoinSelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartDistributedJoinSelfTest.java
index ced28bc..d022b0f 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartDistributedJoinSelfTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartDistributedJoinSelfTest.java
@@ -103,72 +103,86 @@ public class 
IgniteCacheQueryNodeRestartDistributedJoinSelfTest extends IgniteCa
         final AtomicInteger qryCnt = new AtomicInteger();
         final AtomicBoolean qrysDone = new AtomicBoolean();
 
+        final AtomicBoolean fail = new AtomicBoolean();
+
         IgniteInternalFuture<?> fut1 = multithreadedAsync(new CAX() {
             @Override public void applyx() throws IgniteCheckedException {
                 GridRandom rnd = new GridRandom();
 
-                while (!qrysDone.get()) {
-                    int g;
+                try {
+                    while (!qrysDone.get()) {
+                        int g;
 
-                    do {
-                        g = rnd.nextInt(locks.length());
-                    }
-                    while (!locks.compareAndSet(g, 0, 1));
+                        do {
+                            g = rnd.nextInt(locks.length());
 
-                    if (rnd.nextBoolean()) {
-                        IgniteCache<?, ?> cache = grid(g).cache("pu");
+                            if (fail.get())
+                                return;
+                        }
+                        while (!locks.compareAndSet(g, 0, 1));
 
-                        SqlFieldsQuery qry;
+                        if (rnd.nextBoolean()) {
+                            IgniteCache<?, ?> cache = grid(g).cache("pu");
 
-                        if (broadcastQry)
-                            qry = new 
SqlFieldsQuery(QRY_0_BROADCAST).setDistributedJoins(true).setEnforceJoinOrder(true);
-                        else
-                            qry = new 
SqlFieldsQuery(QRY_0).setDistributedJoins(true);
+                            SqlFieldsQuery qry;
 
-                        boolean smallPageSize = rnd.nextBoolean();
+                            if (broadcastQry)
+                                qry = new 
SqlFieldsQuery(QRY_0_BROADCAST).setDistributedJoins(true).setEnforceJoinOrder(true);
+                            else
+                                qry = new 
SqlFieldsQuery(QRY_0).setDistributedJoins(true);
 
-                        qry.setPageSize(smallPageSize ? 30 : 1000);
+                            boolean smallPageSize = rnd.nextBoolean();
 
-                        try {
-                            assertEquals(pRes, cache.query(qry).getAll());
-                        }
-                        catch (CacheException e) {
-                            assertTrue("On large page size must retry.", 
smallPageSize);
+                            qry.setPageSize(smallPageSize ? 30 : 1000);
+
+                            try {
+                                assertEquals(pRes, cache.query(qry).getAll());
+                            }
+                            catch (CacheException e) {
+                                assertTrue("On large page size must retry.", 
smallPageSize);
 
-                            boolean failedOnRemoteFetch = false;
+                                boolean failedOnRemoteFetch = false;
 
-                            for (Throwable th = e; th != null; th = 
th.getCause()) {
-                                if (!(th instanceof CacheException))
-                                    continue;
+                                for (Throwable th = e; th != null; th = 
th.getCause()) {
+                                    if (!(th instanceof CacheException))
+                                        continue;
 
-                                if (th.getMessage() != null &&
-                                    th.getMessage().startsWith("Failed to 
fetch data from node:")) {
-                                    failedOnRemoteFetch = true;
+                                    if (th.getMessage() != null &&
+                                        th.getMessage().startsWith("Failed to 
fetch data from node:")) {
+                                        failedOnRemoteFetch = true;
 
-                                    break;
+                                        break;
+                                    }
                                 }
-                            }
 
-                            if (!failedOnRemoteFetch) {
-                                e.printStackTrace();
+                                if (!failedOnRemoteFetch) {
+                                    e.printStackTrace();
 
-                                fail("Must fail inside of 
GridResultPage.fetchNextPage or subclass.");
+                                    fail("Must fail inside of 
GridResultPage.fetchNextPage or subclass.");
+                                }
                             }
                         }
-                    }
-                    else {
-                        IgniteCache<?, ?> cache = grid(g).cache("co");
+                        else {
+                            IgniteCache<?, ?> cache = grid(g).cache("co");
 
-                        assertEquals(rRes, cache.query(qry1).getAll());
-                    }
+                            assertEquals(rRes, cache.query(qry1).getAll());
+                        }
 
-                    locks.set(g, 0);
+                        locks.set(g, 0);
 
-                    int c = qryCnt.incrementAndGet();
+                        int c = qryCnt.incrementAndGet();
 
-                    if (c % logFreq == 0)
-                        info("Executed queries: " + c);
+                        if (c % logFreq == 0)
+                            info("Executed queries: " + c);
+                    }
+                }catch (Throwable e){
+                    e.printStackTrace();
+
+                    error("Got exception: " + e.getMessage());
+
+                    fail.set(true);
                 }
+
             }
         }, qryThreadNum, "query-thread");
 
@@ -186,6 +200,9 @@ public class 
IgniteCacheQueryNodeRestartDistributedJoinSelfTest extends IgniteCa
 
                     do {
                         g = rnd.nextInt(locks.length());
+
+                        if (fail.get())
+                            return null;
                     }
                     while (!locks.compareAndSet(g, 0, -1));
 
@@ -215,7 +232,7 @@ public class 
IgniteCacheQueryNodeRestartDistributedJoinSelfTest extends IgniteCa
 
         Thread.sleep(duration);
 
-        info("Stopping..");
+        info("Stopping...");
 
         restartsDone.set(true);
         qrysDone.set(true);
@@ -223,6 +240,9 @@ public class 
IgniteCacheQueryNodeRestartDistributedJoinSelfTest extends IgniteCa
         fut2.get();
         fut1.get();
 
+        if (fail.get())
+            fail("See message above");
+
         info("Stopped.");
     }
 }
\ No newline at end of file

Reply via email to