You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2016/03/09 07:48:49 UTC
[16/18] ignite git commit: IGNITE-2753 - Binary object might be
deserialized unexpectedly when cache store is enabled. Added test.
IGNITE-2753 - Binary object might be deserialized unexpectedly when cache store is enabled. Added test.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/32966678
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/32966678
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/32966678
Branch: refs/heads/ignite-2753
Commit: 3296667810b83a6547cdb8980bf208d6c2ec2bf9
Parents: 87c38c1
Author: dkarachentsev <dk...@gridgain.com>
Authored: Fri Mar 4 17:44:48 2016 +0300
Committer: dkarachentsev <dk...@gridgain.com>
Committed: Fri Mar 4 17:44:48 2016 +0300
----------------------------------------------------------------------
.../cache/GridCacheStreamLocalStoreTest.java | 79 +++++++++++++++++++-
1 file changed, 75 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/32966678/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStreamLocalStoreTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStreamLocalStoreTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStreamLocalStoreTest.java
index 4d68ff4..48c103b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStreamLocalStoreTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStreamLocalStoreTest.java
@@ -20,13 +20,17 @@ package org.apache.ignite.internal.processors.cache;
import org.apache.ignite.*;
import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.binary.BinaryObjectBuilder;
+import org.apache.ignite.cache.CacheAtomicWriteOrderMode;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.cache.CacheWriteSynchronizationMode;
import org.apache.ignite.cache.store.CacheStoreAdapter;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.binary.BinaryMarshaller;
+import org.apache.ignite.internal.processors.cache.extras.GridCacheObsoleteEntryExtras;
import org.apache.ignite.internal.processors.cache.store.CacheLocalStore;
+import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
@@ -39,9 +43,12 @@ import javax.cache.integration.CacheLoaderException;
import javax.cache.integration.CacheWriterException;
import java.io.Serializable;
import java.util.Map;
+import java.util.concurrent.CyclicBarrier;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicInteger;
import static org.apache.ignite.cache.CacheRebalanceMode.SYNC;
-import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
/**
* Checks whether storing to local store doesn't cause binary objects unmarshalling,
@@ -66,6 +73,16 @@ public class GridCacheStreamLocalStoreTest extends GridCommonAbstractTest {
return CacheMode.PARTITIONED;
}
+ /** Cache write order mode. */
+ protected CacheAtomicWriteOrderMode cacheAtomicWriteOrderMode() {
+ return CacheAtomicWriteOrderMode.PRIMARY;
+ }
+
+ /** Cache synchronization mode. */
+ private CacheWriteSynchronizationMode cacheWriteSynchronizationMode() {
+ return CacheWriteSynchronizationMode.PRIMARY_SYNC;
+ }
+
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
@Override protected IgniteConfiguration getConfiguration(final String gridName) throws Exception {
@@ -82,9 +99,15 @@ public class GridCacheStreamLocalStoreTest extends GridCommonAbstractTest {
c.setDiscoverySpi(disco);
+ c.setCacheConfiguration(cacheConfiguration());
+
+ return c;
+ }
+
+ /** Cache configuration */
+ protected CacheConfiguration cacheConfiguration() {
CacheConfiguration cc = defaultCacheConfiguration();
- cc.setWriteSynchronizationMode(FULL_SYNC);
cc.setSwapEnabled(false);
cc.setRebalanceMode(SYNC);
@@ -95,12 +118,19 @@ public class GridCacheStreamLocalStoreTest extends GridCommonAbstractTest {
cc.setStoreKeepBinary(true);
cc.setCacheMode(cacheMode());
+ cc.setAtomicWriteOrderMode(cacheAtomicWriteOrderMode());
+ cc.setWriteSynchronizationMode(cacheWriteSynchronizationMode());
+
+ cc.setBackups(0);
cc.setAtomicityMode(CacheAtomicityMode.ATOMIC);
- c.setCacheConfiguration(cc);
+ return cc;
+ }
- return c;
+ /** {@inheritDoc} */
+ @Override protected void beforeTest() throws Exception {
+ store.map.clear();
}
/** {@inheritDoc} */
@@ -132,6 +162,47 @@ public class GridCacheStreamLocalStoreTest extends GridCommonAbstractTest {
}
/**
+ * Simulate case where is called
+ * {@link org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheEntry#clearInternal(
+ * GridCacheVersion, boolean, GridCacheObsoleteEntryExtras)}
+ *
+ * @throws Exception
+ */
+ public void testPartitionMove() throws Exception {
+ final Ignite grid = startGrid("binaryGrid1");
+
+ grid.createCache(CACHE_NAME);
+
+ final BinaryObjectBuilder builder = grid.binary().builder("custom_type");
+
+ final IgniteDataStreamer<BinaryObject, BinaryObject> streamer = grid.dataStreamer(CACHE_NAME);
+
+ streamer.keepBinary(true);
+
+ final int itemsNum = 10_000;
+
+ for (int i = 0; i < itemsNum; i++) {
+ final BinaryObject key = builder.setField("id", i).build();
+
+ streamer.addData(key, key);
+ }
+
+ streamer.close();
+
+ streamer.future().get();
+
+ assert store.map.size() == itemsNum;
+
+ startGrid("binaryGrid2");
+ startGrid("binaryGrid3");
+ startGrid("binaryGrid4");
+
+ Thread.sleep(10_000);
+
+ assert store.map.size() == 0; // tested method removes items from store
+ }
+
+ /**
* Check whether binary objects are stored without unmarshalling via stream API.
*
* @throws Exception