You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/03/10 07:24:04 UTC

[43/43] ignite git commit: ignite-4712

ignite-4712


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

Branch: refs/heads/ignite-4712
Commit: 8434edd61bc1cc83a669e373bdb2fe96ebc6c0a7
Parents: 40dbfbd
Author: sboikov <sb...@gridgain.com>
Authored: Fri Mar 10 10:13:01 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Fri Mar 10 10:20:21 2017 +0300

----------------------------------------------------------------------
 .../cache/database/freelist/PagesList.java      | 11 +--
 .../ignite/cache/LargeEntryUpdateTest.java      | 97 ++++++++------------
 .../database/IgniteDbAbstractTest.java          |  1 -
 .../IgniteDbMemoryLeakAbstractTest.java         |  3 +-
 .../database/IgniteDbPutGetAbstractTest.java    | 22 ++---
 .../ignite/testsuites/IgniteCacheTestSuite.java |  3 -
 .../testsuites/IgniteDbMemoryLeakTestSuite.java |  3 +
 7 files changed, 58 insertions(+), 82 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/8434edd6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
index b2c6e9c..b2b4393 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
@@ -201,10 +201,9 @@ public abstract class PagesList extends DataStructure {
                         long tailId = upd[i];
 
                         long pageId = tailId;
-                        int count = 0;
+                        int cnt = 0;
 
                         while (pageId != 0L) {
-
                             try (Page page = page(pageId)) {
                                 long pageAddr = readLock(page);
 
@@ -213,12 +212,12 @@ public abstract class PagesList extends DataStructure {
                                 try {
                                     PagesListNodeIO io = PagesListNodeIO.VERSIONS.forPage(pageAddr);
 
-                                    count += io.getCount(pageAddr);
+                                    cnt += io.getCount(pageAddr);
                                     pageId = io.getPreviousId(pageAddr);
 
                                     // In reuse bucket the page itself can be used as a free page.
                                     if (isReuseBucket(bucket) && pageId != 0L)
-                                        count++;
+                                        cnt++;
                                 }
                                 finally {
                                     readUnlock(page, pageAddr);
@@ -226,9 +225,9 @@ public abstract class PagesList extends DataStructure {
                             }
                         }
 
-                        Stripe stripe = new Stripe(tailId, count == 0);
+                        Stripe stripe = new Stripe(tailId, cnt == 0);
                         tails[i] = stripe;
-                        bucketSize += count;
+                        bucketSize += cnt;
                     }
 
                     boolean ok = casBucket(bucket, null, tails);

http://git-wip-us.apache.org/repos/asf/ignite/blob/8434edd6/modules/core/src/test/java/org/apache/ignite/cache/LargeEntryUpdateTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/cache/LargeEntryUpdateTest.java b/modules/core/src/test/java/org/apache/ignite/cache/LargeEntryUpdateTest.java
index 6b63296..770c67d 100644
--- a/modules/core/src/test/java/org/apache/ignite/cache/LargeEntryUpdateTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/cache/LargeEntryUpdateTest.java
@@ -16,35 +16,34 @@
  */
 package org.apache.ignite.cache;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
-import javax.cache.processor.EntryProcessorException;
 import javax.cache.processor.MutableEntry;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.IgniteCompute;
+import org.apache.ignite.IgniteException;
 import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.configuration.MemoryConfiguration;
-import org.apache.ignite.internal.mem.OutOfMemoryException;
+import org.apache.ignite.lang.IgniteFuture;
 import org.apache.ignite.lang.IgniteRunnable;
 import org.apache.ignite.resources.IgniteInstanceResource;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 
 /**
- * LargeEntryUpdateTest
  *
- * @author Alexandr Kuramshin <ei...@gmail.com>
  */
 public class LargeEntryUpdateTest extends GridCommonAbstractTest {
-
     /**  */
     private static final int THREAD_COUNT = 10;
 
     /**  */
-    private static final int PAGE_SIZE = 1 << 10; // 1 kB
+    private static final int PAGE_SIZE = 1 << 10; // 1 kB.
 
     /**  */
-    private static final int PAGE_CACHE_SIZE = 30 << 20; // 30 MB
+    private static final int PAGE_CACHE_SIZE = 30 << 20; // 30 MB.
 
     /**  */
     private static final String CACHE_PREFIX = "testCache";
@@ -53,17 +52,14 @@ public class LargeEntryUpdateTest extends GridCommonAbstractTest {
     private static final int CACHE_COUNT = 10;
 
     /**  */
-    private static final long WAIT_TIMEOUT = 5 * 60_000L; // 5 min
+    private static final long WAIT_TIMEOUT = 5 * 60_000L; // 5 min.
 
     /**  */
-    private static final long TEST_TIMEOUT = 10 * 60_000L; // 10 min
+    private static final long TEST_TIMEOUT = 10 * 60_000L; // 10 min.
 
     /**  */
     private final AtomicBoolean cacheUpdate = new AtomicBoolean();
 
-    /**  */
-    private OutOfMemoryException outOfMemoryEx;
-
     /** {@inheritDoc} */
     @Override protected long getTestTimeout() {
         return TEST_TIMEOUT;
@@ -72,14 +68,18 @@ public class LargeEntryUpdateTest extends GridCommonAbstractTest {
     /** {@inheritDoc} */
     @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
         IgniteConfiguration cfg = super.getConfiguration(gridName);
+
         cfg.setPublicThreadPoolSize(THREAD_COUNT);
 
         MemoryConfiguration mem = new MemoryConfiguration();
+
         mem.setPageSize(PAGE_SIZE);
         mem.setPageCacheSize(PAGE_CACHE_SIZE);
+
         cfg.setMemoryConfiguration(mem);
 
         CacheConfiguration[] ccfgs = new CacheConfiguration[CACHE_COUNT];
+
         for (int i = 0; i < CACHE_COUNT; ++i) {
             CacheConfiguration ccfg = new CacheConfiguration();
             ccfg.setName(CACHE_PREFIX + i);
@@ -87,33 +87,42 @@ public class LargeEntryUpdateTest extends GridCommonAbstractTest {
             ccfg.setCacheMode(CacheMode.PARTITIONED);
             ccfgs[i] = ccfg;
         }
+
         cfg.setCacheConfiguration(ccfgs);
 
         return cfg;
     }
 
-    /**  */
+    /**
+     * @throws Exception If failed.
+     */
     public void testEntryUpdate() throws Exception {
         try (Ignite ignite = startGrid()) {
             for (int i = 0; i < CACHE_COUNT; ++i) {
                 IgniteCache<Long, byte[]> cache = ignite.cache(CACHE_PREFIX + i);
+
                 cache.put(0L, new byte[PAGE_SIZE * 2]);
             }
+
             cacheUpdate.set(true);
+
             IgniteCompute compute = ignite.compute().withAsync();
-            for (int i = 0; i < THREAD_COUNT; ++i)
-                compute.run(new CacheUpdater());
+
+            long endTime = System.currentTimeMillis() + WAIT_TIMEOUT;
+
             try {
-                long deadline = System.currentTimeMillis() + WAIT_TIMEOUT;
-                while (true)
-                    synchronized (this) {
-                        if (outOfMemoryEx != null)
-                            throw outOfMemoryEx;
-                        long timeout = deadline - System.currentTimeMillis();
-                        if (timeout <= 0)
-                            break;
-                        wait(timeout);
+                while (System.currentTimeMillis() < endTime) {
+                    List<IgniteFuture> futs = new ArrayList<>();
+
+                    for (int i = 0; i < THREAD_COUNT; ++i) {
+                        compute.run(new CacheUpdater());
+
+                        futs.add(compute.future());
                     }
+
+                    for (IgniteFuture fut : futs)
+                        fut.get();
+                }
             }
             finally {
                 cacheUpdate.set(false);
@@ -122,29 +131,20 @@ public class LargeEntryUpdateTest extends GridCommonAbstractTest {
     }
 
     /**  */
-    private synchronized void setOutOfMemoryEx(OutOfMemoryException e) {
-        outOfMemoryEx = e;
-        notifyAll();
-    }
-
-    /**  */
     public static class EntryUpdater implements CacheEntryProcessor<Long, byte[], Void> {
-
         /**  */
         public static final EntryUpdater INSTANCE = new EntryUpdater();
 
         /** {@inheritDoc} */
-        @Override public Void process(MutableEntry<Long, byte[]> entry, Object... arguments)
-            throws EntryProcessorException {
-
+        @Override public Void process(MutableEntry<Long, byte[]> entry, Object... args) {
             entry.setValue(new byte[PAGE_SIZE]);
+
             return null;
         }
     }
 
     /**  */
     public class CacheUpdater implements IgniteRunnable {
-
         /**  */
         @IgniteInstanceResource
         public transient Ignite ignite;
@@ -152,37 +152,18 @@ public class LargeEntryUpdateTest extends GridCommonAbstractTest {
         /** {@inheritDoc} */
         @Override public void run() {
             try {
-                while (cacheUpdate.get())
+                while (cacheUpdate.get()) {
                     for (int i = 0; i < CACHE_COUNT; ++i) {
                         IgniteCache<Long, byte[]> cache = ignite.cache(CACHE_PREFIX + i);
+
                         cache.invoke(0L, EntryUpdater.INSTANCE);
                     }
+                }
             }
             catch (Throwable ex) {
-                OutOfMemoryException e = findOutOfMemoryException(ex);
-                if (e != null)
-                    setOutOfMemoryEx(e);
-                else
-                    ignite.log().error("CacheUpdater failed", ex);
+                throw new IgniteException(ex);
             }
         }
-
-        /**  */
-        private OutOfMemoryException findOutOfMemoryException(Throwable ex) {
-            if (ex instanceof OutOfMemoryException)
-                return (OutOfMemoryException)ex;
-            for (Throwable s : ex.getSuppressed()) {
-                OutOfMemoryException e = findOutOfMemoryException(s);
-                if (e != null)
-                    return e;
-            }
-            if (ex.getCause() != null) {
-                OutOfMemoryException e = findOutOfMemoryException(ex.getCause());
-                if (e != null)
-                    return e;
-            }
-            return null;
-        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/8434edd6/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbAbstractTest.java
index 46efab2..cf26187 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbAbstractTest.java
@@ -68,7 +68,6 @@ public abstract class IgniteDbAbstractTest extends GridCommonAbstractTest {
         else
             dbCfg.setPageSize(1024);
 
-
         dbCfg.setPageCacheSize(200 * 1024 * 1024);
 
         configure(dbCfg);

http://git-wip-us.apache.org/repos/asf/ignite/blob/8434edd6/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakAbstractTest.java
index 06ecb94..2e9d3f9 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakAbstractTest.java
@@ -172,9 +172,8 @@ public abstract class IgniteDbMemoryLeakAbstractTest extends IgniteDbAbstractTes
      */
     public void testMemoryLeak() throws Exception {
         final IgniteEx ignite = grid(0);
-        final IgniteCache<Object, Object> cache = cache(ignite);
-
 
+        final IgniteCache<Object, Object> cache = cache(ignite);
 
         Runnable target = new Runnable() {
             @Override public void run() {

http://git-wip-us.apache.org/repos/asf/ignite/blob/8434edd6/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbPutGetAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbPutGetAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbPutGetAbstractTest.java
index cf98dce..12b0126 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbPutGetAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbPutGetAbstractTest.java
@@ -17,6 +17,16 @@
 
 package org.apache.ignite.internal.processors.database;
 
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.ThreadLocalRandom;
+import javax.cache.Cache;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.IgniteDataStreamer;
@@ -28,24 +38,12 @@ import org.apache.ignite.cache.query.SqlFieldsQuery;
 import org.apache.ignite.cache.query.SqlQuery;
 import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
-import org.apache.ignite.internal.processors.cache.database.tree.BPlusTree;
 import org.apache.ignite.internal.util.GridRandom;
 import org.apache.ignite.internal.util.typedef.PA;
 import org.apache.ignite.internal.util.typedef.X;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.junit.Assert;
 
-import javax.cache.Cache;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-import java.util.UUID;
-import java.util.concurrent.ThreadLocalRandom;
-
 /**
  *
  */

http://git-wip-us.apache.org/repos/asf/ignite/blob/8434edd6/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
index efa3225..1cf2c14 100755
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
@@ -22,7 +22,6 @@ import junit.framework.TestSuite;
 import org.apache.ignite.GridCacheAffinityBackupsSelfTest;
 import org.apache.ignite.IgniteCacheAffinitySelfTest;
 import org.apache.ignite.cache.IgniteWarmupClosureSelfTest;
-import org.apache.ignite.cache.LargeEntryUpdateTest;
 import org.apache.ignite.cache.affinity.AffinityClientNodeSelfTest;
 import org.apache.ignite.cache.affinity.AffinityHistoryCleanupTest;
 import org.apache.ignite.cache.affinity.fair.FairAffinityDynamicCacheSelfTest;
@@ -230,8 +229,6 @@ public class IgniteCacheTestSuite extends TestSuite {
         // Warmup closure tests.
         suite.addTestSuite(IgniteWarmupClosureSelfTest.class);
 
-        suite.addTestSuite(LargeEntryUpdateTest.class);
-
         // Swap tests.
         suite.addTestSuite(GridCacheSwapPreloadSelfTest.class);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/8434edd6/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteDbMemoryLeakTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteDbMemoryLeakTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteDbMemoryLeakTestSuite.java
index 75b31b0..f271bd8 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteDbMemoryLeakTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteDbMemoryLeakTestSuite.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.testsuites;
 
 import junit.framework.TestSuite;
+import org.apache.ignite.cache.LargeEntryUpdateTest;
 import org.apache.ignite.internal.processors.database.IgniteDbMemoryLeakLargeObjectsTest;
 import org.apache.ignite.internal.processors.database.IgniteDbMemoryLeakLargePagesTest;
 import org.apache.ignite.internal.processors.database.IgniteDbMemoryLeakNonTransactionalTest;
@@ -41,6 +42,8 @@ public class IgniteDbMemoryLeakTestSuite extends TestSuite {
         suite.addTestSuite(IgniteDbMemoryLeakLargeObjectsTest.class);
         suite.addTestSuite(IgniteDbMemoryLeakNonTransactionalTest.class);
 
+        suite.addTestSuite(LargeEntryUpdateTest.class);
+
         return suite;
     }
 }