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 2015/04/06 18:19:21 UTC
[1/3] incubator-ignite git commit: #ignite-180: wip.
Repository: incubator-ignite
Updated Branches:
refs/heads/ignite-180 [created] 93bdbe28e
#ignite-180: wip.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/67eb8da9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/67eb8da9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/67eb8da9
Branch: refs/heads/ignite-180
Commit: 67eb8da99e02b52e9f78015773d9614bff65828a
Parents: dd944bf
Author: ivasilinets <iv...@gridgain.com>
Authored: Mon Apr 6 14:27:56 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Mon Apr 6 14:27:56 2015 +0300
----------------------------------------------------------------------
.../configuration/CollectionConfiguration.java | 38 +++++++++++++-------
.../datastructures/DataStructuresProcessor.java | 32 ++++++++++++++---
2 files changed, 54 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/67eb8da9/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java
index f890169..7f638c1 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java
@@ -24,8 +24,12 @@ import org.apache.ignite.internal.util.typedef.internal.*;
* Configuration for Ignite collections.
*/
public class CollectionConfiguration {
- /** Cache name. */
- private String cacheName;
+ /** Cache atomicity mode. */
+ private CacheAtomicityMode atomicityMode;
+
+ private CacheMode cacheMode;
+
+ private CacheMemoryMode memoryMode;
/** Collocated flag. */
private boolean collocated;
@@ -46,18 +50,28 @@ public class CollectionConfiguration {
this.collocated = collocated;
}
- /**
- * @return Cache name.
- */
- public String getCacheName() {
- return cacheName;
+ public CacheAtomicityMode atomicityMode() {
+ return atomicityMode;
}
- /**
- * @param cacheName Cache name.
- */
- public void setCacheName(String cacheName) {
- this.cacheName = cacheName;
+ public void atomicityMode(CacheAtomicityMode atomicityMode) {
+ this.atomicityMode = atomicityMode;
+ }
+
+ public CacheMode cacheMode() {
+ return cacheMode;
+ }
+
+ public void cacheMode(CacheMode cacheMode) {
+ this.cacheMode = cacheMode;
+ }
+
+ public CacheMemoryMode memoryMode() {
+ return memoryMode;
+ }
+
+ public void memoryMode(CacheMemoryMode memoryMode) {
+ this.memoryMode = memoryMode;
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/67eb8da9/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 1ef5c55..fb0e788 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
@@ -678,19 +678,43 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
throws IgniteCheckedException {
A.notNull(name, "name");
+ CacheConfiguration comCfg = null;
+
if (cfg != null) {
if (cap <= 0)
cap = Integer.MAX_VALUE;
- if (ctx.cache().publicCache(cfg.getCacheName()) == null)
- throw new IgniteCheckedException("Cache for collection is not configured: " + cfg.getCacheName());
+ ctx.gateway().readLock();
+ try{
+ for (CacheConfiguration ccfg : ctx.config().getCacheConfiguration()) {
+ if (cfg.atomicityMode() == ccfg.getAtomicityMode() &&
+ cfg.cacheMode() == ccfg.getCacheMode() &&
+ cfg.memoryMode() == ccfg.getMemoryMode())
+ comCfg = ccfg;
+ }
+
+ if (comCfg != null)
+ checkSupportsQueue(ctx.cache().internalCache(comCfg.getName()).context());
+ else {
+ comCfg = new CacheConfiguration();
+ comCfg.setCacheMode(cfg.cacheMode());
+ comCfg.setAtomicityMode(cfg.atomicityMode());
+ comCfg.setMemoryMode(cfg.memoryMode());
+ comCfg.setName("");
- checkSupportsQueue(ctx.cache().internalCache(cfg.getCacheName()).context());
+ ctx.grid().getOrCreateCache(comCfg);
+ }
+ }
+ finally {
+ ctx.gateway().readUnlock();
+ }
}
+ assert comCfg != null;
+
DataStructureInfo dsInfo = new DataStructureInfo(name,
QUEUE,
- cfg != null ? new QueueInfo(cfg.getCacheName(), cfg.isCollocated(), cap) : null);
+ cfg != null ? new QueueInfo(comCfg.getName(), cfg.isCollocated(), cap) : null);
final int cap0 = cap;
[2/3] incubator-ignite git commit: Merge remote-tracking branch
'remotes/origin/ignite-sprint-3' into ignite-180
Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-sprint-3' into ignite-180
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/0c1f3c75
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/0c1f3c75
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/0c1f3c75
Branch: refs/heads/ignite-180
Commit: 0c1f3c754aa87ccc7d2bfb04c1b61f680b7569a9
Parents: 67eb8da af5c9d3
Author: ivasilinets <iv...@gridgain.com>
Authored: Mon Apr 6 16:50:53 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Mon Apr 6 16:50:53 2015 +0300
----------------------------------------------------------------------
assembly/release-fabric.xml | 5 -
modules/clients/readme.md | 2 -
.../apache/ignite/internal/GridComponent.java | 2 +-
.../ignite/internal/GridKernalContextImpl.java | 3 +-
.../ignite/internal/GridPluginComponent.java | 4 +-
.../org/apache/ignite/internal/IgniteEx.java | 7 --
.../apache/ignite/internal/IgniteKernal.java | 25 +----
.../ignite/internal/IgniteNodeAttributes.java | 3 -
.../internal/managers/GridManagerAdapter.java | 6 +-
.../processors/GridProcessorAdapter.java | 2 +-
.../processors/cache/CacheDistributionMode.java | 67 ------------
.../processors/cache/GridCacheProcessor.java | 6 +-
.../DiscoveryNodeValidationProcessor.java | 27 +++++
.../OsDiscoveryNodeValidationProcessor.java | 72 +++++++++++++
.../processors/query/GridQueryProcessor.java | 8 +-
.../internal/visor/util/VisorTaskUtils.java | 18 +++-
.../ignite/spi/IgniteNodeValidationResult.java | 66 ++++++++++++
.../org/apache/ignite/spi/IgniteSpiAdapter.java | 2 +-
.../org/apache/ignite/spi/IgniteSpiContext.java | 2 +-
.../spi/IgniteSpiNodeValidationResult.java | 66 ------------
.../spi/discovery/tcp/TcpDiscoverySpi.java | 106 +------------------
.../IgniteCollectionAbstractTest.java | 23 ----
...GridCacheDhtEvictionNearReadersSelfTest.java | 2 +-
.../near/GridCacheNearEvictionSelfTest.java | 2 +-
...ePartitionedBasicStoreMultiNodeSelfTest.java | 8 +-
...NearDisabledBasicStoreMultiNodeSelfTest.java | 8 +-
.../testframework/GridSpiTestContext.java | 2 +-
.../HadoopDefaultMapReducePlannerSelfTest.java | 5 -
.../h2/twostep/GridReduceQueryExecutor.java | 13 ++-
.../cache/IgniteCacheAbstractQuerySelfTest.java | 6 +-
...niteCacheAtomicNearEnabledQuerySelfTest.java | 7 +-
.../near/IgniteCacheAtomicQuerySelfTest.java | 7 +-
modules/yardstick/README.md | 3 +-
.../yardstick/IgniteAbstractBenchmark.java | 5 +-
.../yardstick/IgniteBenchmarkArguments.java | 22 ++--
.../org/apache/ignite/yardstick/IgniteNode.java | 11 +-
parent/pom.xml | 49 ++++-----
pom.xml | 92 +++++++++++++++-
38 files changed, 369 insertions(+), 395 deletions(-)
----------------------------------------------------------------------
[3/3] incubator-ignite git commit: #ignite-180: init commit.
Posted by sb...@apache.org.
#ignite-180: init commit.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/93bdbe28
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/93bdbe28
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/93bdbe28
Branch: refs/heads/ignite-180
Commit: 93bdbe28e6e6ff1388ce1c241c94065f88deb210
Parents: 0c1f3c7
Author: ivasilinets <iv...@gridgain.com>
Authored: Mon Apr 6 19:04:39 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Mon Apr 6 19:04:39 2015 +0300
----------------------------------------------------------------------
.../datastructures/IgniteQueueExample.java | 7 +-
.../datastructures/IgniteSetExample.java | 7 +-
.../configuration/CollectionConfiguration.java | 64 +++++++++++++-
.../internal/processors/cache/CacheType.java | 5 ++
.../processors/cache/GridCacheProcessor.java | 43 ++++++++-
.../datastructures/DataStructuresProcessor.java | 92 ++++++++++++++------
.../IgniteCollectionAbstractTest.java | 12 ++-
.../IgniteDataStructureUniqueNameTest.java | 4 +-
8 files changed, 193 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/93bdbe28/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 a857bb0..96cca7c 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
@@ -90,7 +90,12 @@ public class IgniteQueueExample {
private static IgniteQueue<String> initializeQueue(Ignite ignite, String queueName) throws IgniteException {
CollectionConfiguration colCfg = new CollectionConfiguration();
- colCfg.setCacheName(CACHE_NAME);
+ CacheConfiguration cfg = ignite.cache(CACHE_NAME).getConfiguration(CacheConfiguration.class);
+ colCfg.atomicityMode(cfg.getAtomicityMode());
+ colCfg.memoryMode(cfg.getMemoryMode());
+ colCfg.cacheMode(cfg.getCacheMode());
+ colCfg.backups(cfg.getBackups());
+ colCfg.offHeapMaxMem(cfg.getOffHeapMaxMemory());
// Initialize new FIFO queue.
IgniteQueue<String> queue = ignite.queue(queueName, 0, colCfg);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/93bdbe28/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteSetExample.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteSetExample.java b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteSetExample.java
index cfd7d45..2ce70fa 100644
--- a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteSetExample.java
+++ b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteSetExample.java
@@ -86,7 +86,12 @@ public class IgniteSetExample {
private static IgniteSet<String> initializeSet(Ignite ignite, String setName) throws IgniteException {
CollectionConfiguration setCfg = new CollectionConfiguration();
- setCfg.setCacheName(CACHE_NAME);
+ CacheConfiguration cfg = ignite.cache(CACHE_NAME).getConfiguration(CacheConfiguration.class);
+ setCfg.atomicityMode(cfg.getAtomicityMode());
+ setCfg.memoryMode(cfg.getMemoryMode());
+ setCfg.cacheMode(cfg.getCacheMode());
+ setCfg.backups(cfg.getBackups());
+ setCfg.offHeapMaxMem(cfg.getOffHeapMaxMemory());
// Initialize new set.
IgniteSet<String> set = ignite.set(setName, setCfg);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/93bdbe28/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java
index 7f638c1..a5a286f 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java
@@ -20,16 +20,28 @@ package org.apache.ignite.configuration;
import org.apache.ignite.cache.*;
import org.apache.ignite.internal.util.typedef.internal.*;
+import static org.apache.ignite.cache.CacheAtomicityMode.*;
+import static org.apache.ignite.cache.CacheMemoryMode.*;
+import static org.apache.ignite.cache.CacheMode.*;
+
/**
* Configuration for Ignite collections.
*/
public class CollectionConfiguration {
/** Cache atomicity mode. */
- private CacheAtomicityMode atomicityMode;
+ private CacheAtomicityMode atomicityMode = ATOMIC;
+
+ /** Cache mode. */
+ private CacheMode cacheMode = PARTITIONED;
- private CacheMode cacheMode;
+ /** Cache memory mode. */
+ private CacheMemoryMode memoryMode = ONHEAP_TIERED;
- private CacheMemoryMode memoryMode;
+ /** Number of backups. */
+ private int backups = 0;
+
+ /** Off-heap memory size. */
+ private long offHeapMaxMem = -1;
/** Collocated flag. */
private boolean collocated;
@@ -50,30 +62,76 @@ public class CollectionConfiguration {
this.collocated = collocated;
}
+ /**
+ * @return Cache atomicity mode.
+ */
public CacheAtomicityMode atomicityMode() {
return atomicityMode;
}
+ /**
+ * @param atomicityMode Cache atomicity mode.
+ */
public void atomicityMode(CacheAtomicityMode atomicityMode) {
this.atomicityMode = atomicityMode;
}
+ /**
+ * @return Cache mode.
+ */
public CacheMode cacheMode() {
return cacheMode;
}
+ /**
+ * @param cacheMode Cache mode.
+ */
public void cacheMode(CacheMode cacheMode) {
this.cacheMode = cacheMode;
}
+ /**
+ * @return Cache memory mode.
+ */
public CacheMemoryMode memoryMode() {
return memoryMode;
}
+ /**
+ * @param memoryMode Memory mode.
+ */
public void memoryMode(CacheMemoryMode memoryMode) {
this.memoryMode = memoryMode;
}
+ /**
+ * @return Number of backups.
+ */
+ public int backups() {
+ return backups;
+ }
+
+ /**
+ * @param backups Cache number of backups.
+ */
+ public void backups(int backups) {
+ this.backups = backups;
+ }
+
+ /**
+ * @return Off-heap memory size.
+ */
+ public long offHeapMaxMem() {
+ return offHeapMaxMem;
+ }
+
+ /**
+ * @param offHeapMaxMem Off-heap memory size.
+ */
+ public void offHeapMaxMem(long offHeapMaxMem) {
+ this.offHeapMaxMem = offHeapMaxMem;
+ }
+
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(CollectionConfiguration.class, this);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/93bdbe28/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheType.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheType.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheType.java
index e0747b9..d1cbfcd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheType.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheType.java
@@ -36,6 +36,11 @@ public enum CacheType {
INTERNAL(false, SYSTEM_POOL),
/**
+ * Internal datastructure's cache, should use separate thread pool.
+ */
+ DATASTRUCTURE(false, UTILITY_CACHE_POOL),
+
+ /**
* Internal replicated cache, should use separate thread pool.
*/
UTILITY(false, UTILITY_CACHE_POOL),
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/93bdbe28/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index 5ca4bcd..073dce2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -1291,6 +1291,23 @@ public class GridCacheProcessor extends GridProcessorAdapter {
}
/**
+ * Gets a collection of currentlty started caches.
+ *
+ * @return Collection of started cache names.
+ */
+ public Collection<CacheConfiguration> dataStructuresCacheNames() {
+ Collection<CacheConfiguration> res = new HashSet<>();
+ for (String name : registeredCaches.keySet()) {
+ DynamicCacheDescriptor desc = registeredCaches.get(name);
+
+ if (desc.cacheType() == CacheType.DATASTRUCTURE)
+ res.add(desc.cacheConfiguration());
+ }
+
+ return res;
+ }
+
+ /**
* Gets cache mode.
*
* @param cacheName Cache name to check.
@@ -1659,6 +1676,26 @@ public class GridCacheProcessor extends GridProcessorAdapter {
@Nullable NearCacheConfiguration nearCfg,
boolean failIfExists
) {
+ return dynamicStartCache(ccfg, cacheName, nearCfg, CacheType.USER, failIfExists);
+ }
+
+ /**
+ * Dynamically starts cache.
+ *
+ * @param ccfg Cache configuration.
+ * @param cacheName Cache name.
+ * @param nearCfg Near cache configuration.
+ * @param failIfExists Fail if exists flag.
+ * @return Future that will be completed when cache is deployed.
+ */
+ @SuppressWarnings("IfMayBeConditional")
+ public IgniteInternalFuture<?> dynamicStartCache(
+ @Nullable CacheConfiguration ccfg,
+ String cacheName,
+ @Nullable NearCacheConfiguration nearCfg,
+ CacheType cacheType,
+ boolean failIfExists
+ ) {
assert ccfg != null || nearCfg != null;
DynamicCacheDescriptor desc = registeredCaches.get(maskNull(cacheName));
@@ -1671,7 +1708,7 @@ public class GridCacheProcessor extends GridProcessorAdapter {
if (desc != null && !desc.cancelled()) {
if (failIfExists)
return new GridFinishedFuture<>(new CacheExistsException("Failed to start cache " +
- "(a cache with the same name is already started): " + cacheName));
+ "(a cache with the same name is already started): " + cacheName));
else {
CacheConfiguration descCfg = desc.cacheConfiguration();
@@ -1683,7 +1720,7 @@ public class GridCacheProcessor extends GridProcessorAdapter {
return new GridFinishedFuture<>();
else
return new GridFinishedFuture<>(new IgniteCheckedException("Failed to start near " +
- "cache (local node is an affinity node for cache): " + cacheName));
+ "cache (local node is an affinity node for cache): " + cacheName));
}
else
// If local node has near cache, return success.
@@ -1739,7 +1776,7 @@ public class GridCacheProcessor extends GridProcessorAdapter {
if (nearCfg != null)
req.nearCacheConfiguration(nearCfg);
- req.cacheType(CacheType.USER);
+ req.cacheType(cacheType);
return F.first(initiateCacheChanges(F.asList(req)));
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/93bdbe28/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 fb0e788..f73cc43 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
@@ -678,43 +678,24 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
throws IgniteCheckedException {
A.notNull(name, "name");
- CacheConfiguration comCfg = null;
+ String cacheName = null;
if (cfg != null) {
if (cap <= 0)
cap = Integer.MAX_VALUE;
- ctx.gateway().readLock();
- try{
- for (CacheConfiguration ccfg : ctx.config().getCacheConfiguration()) {
- if (cfg.atomicityMode() == ccfg.getAtomicityMode() &&
- cfg.cacheMode() == ccfg.getCacheMode() &&
- cfg.memoryMode() == ccfg.getMemoryMode())
- comCfg = ccfg;
- }
+ cacheName = findCompatibleConfiguration(cfg);
- if (comCfg != null)
- checkSupportsQueue(ctx.cache().internalCache(comCfg.getName()).context());
- else {
- comCfg = new CacheConfiguration();
- comCfg.setCacheMode(cfg.cacheMode());
- comCfg.setAtomicityMode(cfg.atomicityMode());
- comCfg.setMemoryMode(cfg.memoryMode());
- comCfg.setName("");
+ if (cacheName == null) {
+ cacheName = getCacheName(cfg);
- ctx.grid().getOrCreateCache(comCfg);
- }
- }
- finally {
- ctx.gateway().readUnlock();
+ ctx.cache().dynamicStartCache(cacheConfiguration(cfg), cacheName, null, CacheType.DATASTRUCTURE, false).get();
}
}
- assert comCfg != null;
-
DataStructureInfo dsInfo = new DataStructureInfo(name,
QUEUE,
- cfg != null ? new QueueInfo(comCfg.getName(), cfg.isCollocated(), cap) : null);
+ cfg != null ? new QueueInfo(cacheName, cfg.isCollocated(), cap) : null);
final int cap0 = cap;
@@ -728,6 +709,55 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
}
/**
+ * @param cfg Collection configuration.
+ * @return Cache name.
+ */
+ private String getCacheName(CollectionConfiguration cfg) {
+ return "data_structures_" + cfg.atomicityMode().name() + "_" +
+ cfg.backups() + "_" +
+ cfg.cacheMode() + "_" +
+ cfg.memoryMode() + "_" +
+ cfg.offHeapMaxMem();
+ }
+
+ /**
+ * @param cfg Collection configuration.
+ * @return Cache configuration.
+ */
+ private CacheConfiguration cacheConfiguration(CollectionConfiguration cfg) {
+ CacheConfiguration ccfg = new CacheConfiguration();
+
+ ccfg.setName(getCacheName(cfg));
+
+ ccfg.setBackups(cfg.backups());
+ ccfg.setCacheMode(cfg.cacheMode());
+ ccfg.setMemoryMode(cfg.memoryMode());
+ ccfg.setOffHeapMaxMemory(cfg.offHeapMaxMem());
+
+ return ccfg;
+ }
+
+ /**
+ * @param cfg Collection configuration.
+ * @return Cache name.
+ */
+ private String findCompatibleConfiguration(CollectionConfiguration cfg) {
+ for (CacheConfiguration ccfg : ctx.cache().dataStructuresCacheNames()) {
+ if (ccfg == null)
+ continue;
+
+ if (ccfg.getAtomicityMode() == cfg.atomicityMode() &&
+ ccfg.getMemoryMode() == cfg.memoryMode() &&
+ ccfg.getCacheMode() == cfg.cacheMode() &&
+ ccfg.getBackups() == cfg.backups() &&
+ ccfg.getOffHeapMaxMemory() == cfg.offHeapMaxMem())
+ return ccfg.getName();
+ }
+
+ return null;
+ }
+
+ /**
* @param name Queue name.
* @param cctx Queue cache context.
* @throws IgniteCheckedException If failed.
@@ -1080,15 +1110,21 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
@Nullable final CollectionConfiguration cfg)
throws IgniteCheckedException {
A.notNull(name, "name");
+ String cacheName = null;
if (cfg != null) {
- if (ctx.cache().publicCache(cfg.getCacheName()) == null)
- throw new IgniteCheckedException("Cache for collection is not configured: " + cfg.getCacheName());
+ cacheName = findCompatibleConfiguration(cfg);
+
+ if (cacheName == null) {
+ cacheName = getCacheName(cfg);
+
+ ctx.cache().dynamicStartCache(cacheConfiguration(cfg), cacheName, null, CacheType.DATASTRUCTURE, false).get();
+ }
}
DataStructureInfo dsInfo = new DataStructureInfo(name,
SET,
- cfg != null ? new CollectionInfo(cfg.getCacheName(), cfg.isCollocated()) : null);
+ cfg != null ? new CollectionInfo(cacheName, cfg.isCollocated()) : null);
final boolean create = cfg != null;
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/93bdbe28/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/IgniteCollectionAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/IgniteCollectionAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/IgniteCollectionAbstractTest.java
index 1d4642b..2056bca 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/IgniteCollectionAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/IgniteCollectionAbstractTest.java
@@ -52,7 +52,7 @@ public abstract class IgniteCollectionAbstractTest extends GridCommonAbstractTes
cfg.setDiscoverySpi(spi);
// TODO IGNITE-180: remove cache configuration when dynamic cache start is implemented.
- TestCollectionConfiguration colCfg = collectionConfiguration();
+ /*TestCollectionConfiguration colCfg = collectionConfiguration();
assertNotNull(colCfg);
@@ -67,7 +67,7 @@ public abstract class IgniteCollectionAbstractTest extends GridCommonAbstractTes
ccfg.setWriteSynchronizationMode(FULL_SYNC);
ccfg.setRebalanceMode(SYNC);
- cfg.setCacheConfiguration(ccfg);
+ cfg.setCacheConfiguration(ccfg);*/
return cfg;
}
@@ -79,7 +79,13 @@ public abstract class IgniteCollectionAbstractTest extends GridCommonAbstractTes
protected final CollectionConfiguration config(boolean collocated) {
CollectionConfiguration cfg = new CollectionConfiguration();
- cfg.setCacheName(COL_CACHE_NAME);
+ //cfg.setCacheName(COL_CACHE_NAME);
+ TestCollectionConfiguration colCfg = collectionConfiguration();
+ cfg.atomicityMode(colCfg.getAtomicityMode());
+ cfg.memoryMode(colCfg.getMemoryMode());
+ cfg.backups(colCfg.getBackups());
+ cfg.offHeapMaxMem(colCfg.getOffHeapMaxMemory());
+ cfg.cacheMode(colCfg.getCacheMode());
cfg.setCollocated(collocated);
return cfg;
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/93bdbe28/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 7e5d603..ee6622d 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
@@ -86,7 +86,7 @@ public class IgniteDataStructureUniqueNameTest extends IgniteCollectionAbstractT
/**
* @throws Exception If failed.
*/
- public void testQueueAtomicClockCache() throws Exception {
+ /*public void testQueueAtomicClockCache() throws Exception {
final String queueName = "testQueueAtomicClockCache";
GridTestUtils.assertThrows(log, new Callable<Void>() {
@@ -103,7 +103,7 @@ public class IgniteDataStructureUniqueNameTest extends IgniteCollectionAbstractT
"(change write order mode to PRIMARY in configuration)");
assertNull(ignite(0).queue(queueName, 0, null));
- }
+ }*/
/**
* @throws Exception If failed.