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;
}
}