# sprint-1 restored check that queue can not be used with atomic cache in CLOCK 
mode


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

Branch: refs/heads/ignite-223
Commit: 5926470450dfe799849f722dadf7e0a100fc6be0
Parents: f27a989
Author: sboikov <sboi...@gridgain.com>
Authored: Mon Feb 16 17:12:03 2015 +0300
Committer: sboikov <sboi...@gridgain.com>
Committed: Mon Feb 16 17:12:03 2015 +0300

----------------------------------------------------------------------
 .../datastructures/IgniteQueueExample.java      |  2 +-
 .../datastructures/DataStructuresProcessor.java | 15 ++++++-
 .../IgniteDataStructureUniqueNameTest.java      | 41 ++++++++++++++++++++
 3 files changed, 56 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/59264704/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteQueueExample.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteQueueExample.java
 
b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteQueueExample.java
index 4219dd1..519d11a 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteQueueExample.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteQueueExample.java
@@ -36,7 +36,7 @@ import java.util.*;
  */
 public class IgniteQueueExample {
     /** Cache name. */
-    private static final String CACHE_NAME = "partitioned";
+    private static final String CACHE_NAME = "partitioned_tx";
 
     /** Number of retries */
     private static final int RETRIES = 20;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/59264704/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
index 2b55ec5..a2d69fb 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
@@ -38,6 +38,7 @@ import java.io.*;
 import java.util.*;
 import java.util.concurrent.*;
 
+import static org.apache.ignite.cache.CacheAtomicWriteOrderMode.*;
 import static org.apache.ignite.internal.processors.cache.CacheFlag.*;
 import static org.apache.ignite.internal.processors.cache.GridCacheOperation.*;
 import static 
org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.DataStructureType.*;
@@ -690,6 +691,8 @@ public final class DataStructuresProcessor extends 
GridProcessorAdapter {
 
             if (ctx.cache().publicCache(cfg.getCacheName()) == null)
                 throw new IgniteCheckedException("Cache for collection is not 
configured: " + cfg.getCacheName());
+
+            
checkSupportsQueue(ctx.cache().internalCache(cfg.getCacheName()).context());
         }
 
         DataStructureInfo dsInfo = new DataStructureInfo(name,
@@ -1191,6 +1194,16 @@ public final class DataStructuresProcessor extends 
GridProcessorAdapter {
     }
 
     /**
+     * @param cctx Cache context.
+     * @throws IgniteCheckedException If {@link IgniteQueue} can with given 
cache.
+     */
+    private void checkSupportsQueue(GridCacheContext cctx) throws 
IgniteCheckedException {
+        if (cctx.atomic() && !cctx.isLocal() && 
cctx.config().getAtomicWriteOrderMode() == CLOCK)
+            throw new IgniteCheckedException("IgniteQueue can not be used with 
ATOMIC cache with CLOCK write order mode" +
+                " (change write order mode to PRIMARY in configuration)");
+    }
+
+    /**
      *
      */
     static enum DataStructureType {
@@ -1261,7 +1274,7 @@ public final class DataStructuresProcessor extends 
GridProcessorAdapter {
             // No-op.
         }
 
-        /*
+        /**
          * @param cacheName Collection cache name.
          * @param collocated Collocated flag.
          */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/59264704/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/IgniteDataStructureUniqueNameTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/IgniteDataStructureUniqueNameTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/IgniteDataStructureUniqueNameTest.java
index 92b88ff..7e5d603 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/IgniteDataStructureUniqueNameTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/IgniteDataStructureUniqueNameTest.java
@@ -28,13 +28,18 @@ import java.io.*;
 import java.util.*;
 import java.util.concurrent.*;
 
+import static org.apache.ignite.cache.CacheAtomicWriteOrderMode.*;
 import static org.apache.ignite.cache.CacheAtomicityMode.*;
 import static org.apache.ignite.cache.CacheMode.*;
+import static org.apache.ignite.cache.CacheWriteSynchronizationMode.*;
 
 /**
  *
  */
 public class IgniteDataStructureUniqueNameTest extends 
IgniteCollectionAbstractTest {
+    /** */
+    private static final String ATOMIC_CLOCK_CACHE_NAME = "atomicClockCache";
+
     /** {@inheritDoc} */
     @Override protected int gridCount() {
         return 3;
@@ -61,12 +66,48 @@ public class IgniteDataStructureUniqueNameTest extends 
IgniteCollectionAbstractT
 
         cfg.setAtomicConfiguration(atomicCfg);
 
+        CacheConfiguration[] ccfgs = cfg.getCacheConfiguration();
+
+        assert ccfgs.length == 1 : ccfgs.length;
+
+        CacheConfiguration ccfg = new CacheConfiguration();
+
+        ccfg.setCacheMode(PARTITIONED);
+        ccfg.setName(ATOMIC_CLOCK_CACHE_NAME);
+        ccfg.setAtomicityMode(ATOMIC);
+        ccfg.setAtomicWriteOrderMode(CLOCK);
+        ccfg.setWriteSynchronizationMode(FULL_SYNC);
+
+        cfg.setCacheConfiguration(ccfgs[0], ccfg);
+
         return cfg;
     }
 
     /**
      * @throws Exception If failed.
      */
+    public void testQueueAtomicClockCache() throws Exception {
+        final String queueName = "testQueueAtomicClockCache";
+
+        GridTestUtils.assertThrows(log, new Callable<Void>() {
+            @Override public Void call() throws Exception {
+                CollectionConfiguration colCfg = new CollectionConfiguration();
+
+                colCfg.setCacheName(ATOMIC_CLOCK_CACHE_NAME);
+
+                ignite(0).queue(queueName, 0, colCfg);
+
+                return null;
+            }
+        }, IgniteException.class, "IgniteQueue can not be used with ATOMIC 
cache with CLOCK write order mode " +
+            "(change write order mode to PRIMARY in configuration)");
+
+        assertNull(ignite(0).queue(queueName, 0, null));
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
     public void testUniqueNameMultithreaded() throws Exception {
         testUniqueName(true);
     }

Reply via email to