# IGNITE-45 - Fixing examples.

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

Branch: refs/heads/ignite-459
Commit: eb2e68199907025545be1ad312364410f4cdbdcb
Parents: aa98990
Author: Alexey Goncharuk <agoncha...@gridgain.com>
Authored: Thu Mar 12 22:30:02 2015 -0700
Committer: Alexey Goncharuk <agoncha...@gridgain.com>
Committed: Thu Mar 12 22:30:02 2015 -0700

----------------------------------------------------------------------
 examples/config/filesystem/example-igfs.xml     |  1 -
 .../datagrid/CachePopularNumbersExample.java    |  8 +++
 .../examples/datagrid/CacheQueryExample.java    |  1 +
 .../discovery/GridDiscoveryManager.java         | 10 +++-
 .../affinity/GridAffinityProcessor.java         |  4 +-
 .../processors/cache/GridCacheProcessor.java    | 24 +++++----
 .../cache/query/GridCacheQueryAdapter.java      |  1 -
 .../processors/igfs/IgfsDataManager.java        | 56 ++++++++++----------
 .../processors/igfs/IgfsMetaManager.java        | 43 +++++++--------
 .../internal/processors/igfs/IgfsProcessor.java | 43 ++++++++++-----
 .../processors/query/GridQueryProcessor.java    |  9 ++++
 11 files changed, 121 insertions(+), 79 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eb2e6819/examples/config/filesystem/example-igfs.xml
----------------------------------------------------------------------
diff --git a/examples/config/filesystem/example-igfs.xml 
b/examples/config/filesystem/example-igfs.xml
index d8ccd34..b2fc17f 100644
--- a/examples/config/filesystem/example-igfs.xml
+++ b/examples/config/filesystem/example-igfs.xml
@@ -119,7 +119,6 @@
                     <property name="atomicityMode" value="TRANSACTIONAL"/>
                     <property name="queryIndexEnabled" value="false"/>
                     <property name="writeSynchronizationMode" 
value="FULL_SYNC"/>
-                    <property name="distributionMode" 
value="PARTITIONED_ONLY"/>
                     <property name="backups" value="0"/>
                     <property name="affinityMapper">
                         <bean 
class="org.apache.ignite.igfs.IgfsGroupDataBlocksKeyMapper">

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eb2e6819/examples/src/main/java/org/apache/ignite/examples/datagrid/CachePopularNumbersExample.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/datagrid/CachePopularNumbersExample.java
 
b/examples/src/main/java/org/apache/ignite/examples/datagrid/CachePopularNumbersExample.java
index fcb09e1..addca78 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/datagrid/CachePopularNumbersExample.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/datagrid/CachePopularNumbersExample.java
@@ -70,6 +70,14 @@ public class CachePopularNumbersExample {
 
             cfg.setCacheMode(CacheMode.PARTITIONED);
             cfg.setName(CACHE_NAME);
+            cfg.setQueryIndexEnabled(true);
+
+            CacheQueryConfiguration qCfg = new CacheQueryConfiguration();
+
+            qCfg.setIndexPrimitiveKey(true);
+            qCfg.setIndexPrimitiveValue(true);
+
+            cfg.setQueryConfiguration(qCfg);
 
             try (IgniteCache<Integer, Long> cache = ignite.createCache(cfg)) {
                 ClusterGroup prj = ignite.cluster().forCacheNodes(CACHE_NAME);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eb2e6819/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheQueryExample.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheQueryExample.java
 
b/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheQueryExample.java
index 6120cba..84c5dbf 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheQueryExample.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheQueryExample.java
@@ -88,6 +88,7 @@ public class CacheQueryExample {
 
             cfg.setCacheMode(CacheMode.PARTITIONED);
             cfg.setName(CACHE_NAME);
+            cfg.setQueryIndexEnabled(true);
 
             try (IgniteCache<?, ?> cache = ignite.createCache(cfg)) {
                 // Populate cache.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eb2e6819/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index 1543df2..4e1c5cf 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -373,7 +373,8 @@ public class GridDiscoveryManager extends 
GridManagerAdapter<DiscoverySpi> {
                     return;
                 }
 
-                if (topVer > 0 && (type == EVT_NODE_JOINED || type == 
EVT_NODE_FAILED || type == EVT_NODE_LEFT)) {
+                if (topVer > 0 && (type == EVT_NODE_JOINED || type == 
EVT_NODE_FAILED || type == EVT_NODE_LEFT ||
+                    type == DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT)) {
                     boolean set = updateTopologyVersionIfGreater(nextTopVer);
 
                     assert set : "Topology version has not been updated 
[this.topVer=" +
@@ -1264,6 +1265,13 @@ public class GridDiscoveryManager extends 
GridManagerAdapter<DiscoverySpi> {
         return topVer.get().topologyVersion();
     }
 
+    /**
+     * @return Topology version.
+     */
+    public AffinityTopologyVersion topologyVersionEx() {
+        return topVer.get();
+    }
+
     /** @return Event that represents a local node joined to topology. */
     public DiscoveryEvent localJoinEvent() {
         try {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eb2e6819/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
index d90aa81..a214257 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
@@ -217,7 +217,7 @@ public class GridAffinityProcessor extends 
GridProcessorAdapter {
         if (key == null)
             return null;
 
-        AffinityInfo affInfo = affinityCache(cacheName, new 
AffinityTopologyVersion(ctx.discovery().topologyVersion()));
+        AffinityInfo affInfo = affinityCache(cacheName, 
ctx.discovery().topologyVersionEx());
 
         if (affInfo == null || affInfo.mapper == null)
             return null;
@@ -252,7 +252,7 @@ public class GridAffinityProcessor extends 
GridProcessorAdapter {
      */
     private <K> Map<ClusterNode, Collection<K>> keysToNodes(@Nullable final 
String cacheName,
         Collection<? extends K> keys) throws IgniteCheckedException {
-        return keysToNodes(cacheName, keys, new 
AffinityTopologyVersion(ctx.discovery().topologyVersion()));
+        return keysToNodes(cacheName, keys, 
ctx.discovery().topologyVersionEx());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eb2e6819/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 9d613a5..402a784 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
@@ -752,8 +752,12 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
         if (ctx.config().isDaemon())
             return;
 
-        for (String cacheName : stopSeq)
-            stopCache(caches.get(cacheName), cancel);
+        for (String cacheName : stopSeq) {
+            GridCacheAdapter<?, ?> cache = caches.get(cacheName);
+
+            if (cache != null)
+                stopCache(cache, cancel);
+        }
 
         List<? extends GridCacheSharedManager<?, ?>> mgrs = 
sharedCtx.managers();
 
@@ -775,8 +779,12 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
         if (ctx.config().isDaemon())
             return;
 
-        for (String cacheName : stopSeq)
-            onKernalStop(caches.get(cacheName), cancel);
+        for (String cacheName : stopSeq) {
+            GridCacheAdapter<?, ?> cache = caches.get(cacheName);
+
+            if (cache != null)
+                onKernalStop(cache, cancel);
+        }
 
         List<? extends GridCacheSharedManager<?, ?>> sharedMgrs = 
sharedCtx.managers();
 
@@ -869,13 +877,7 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
                 mgr.stop(cancel);
         }
 
-        try {
-            ctx.kernalContext().query().onCacheStopped(cache.context());
-        }
-        catch (IgniteCheckedException e) {
-            // TODO implement.
-            e.printStackTrace();
-        }
+        ctx.kernalContext().query().onCacheStopped(cache.context());
 
         U.stopLifecycleAware(log, lifecycleAwares(cache.configuration(), 
ctx.jta().tmLookup(),
             ctx.store().configuredStore()));

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eb2e6819/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
index 6e2e462..14f84f2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
@@ -122,7 +122,6 @@ public class GridCacheQueryAdapter<T> implements 
CacheQuery<T> {
 
     /**
      * @param cctx Context.
-     * @param prjPred Cache projection filter.
      * @param type Query type.
      * @param log Logger.
      * @param pageSize Page size.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eb2e6819/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
index e3c2c0e..e238c15 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
@@ -52,11 +52,9 @@ import java.util.concurrent.*;
 import java.util.concurrent.atomic.*;
 import java.util.concurrent.locks.*;
 
-import static org.apache.ignite.cache.CacheAtomicityMode.*;
 import static org.apache.ignite.events.EventType.*;
 import static org.apache.ignite.internal.GridTopic.*;
 import static org.apache.ignite.internal.managers.communication.GridIoPolicy.*;
-import static org.apache.ignite.internal.processors.cache.GridCacheUtils.*;
 import static org.apache.ignite.transactions.TransactionConcurrency.*;
 import static org.apache.ignite.transactions.TransactionIsolation.*;
 
@@ -74,7 +72,7 @@ public class IgfsDataManager extends IgfsManager {
     private GridCache<Object, Object> dataCache;
 
     /** */
-    private IgniteInternalFuture<?> dataCacheStartFut;
+    private CountDownLatch dataCacheStartLatch;
 
     /** Local IGFS metrics. */
     private IgfsLocalMetrics metrics;
@@ -138,13 +136,11 @@ public class IgfsDataManager extends IgfsManager {
      *
      */
     void awaitInit() {
-        if (!dataCacheStartFut.isDone()) {
-            try {
-                dataCacheStartFut.get();
-            }
-            catch (IgniteCheckedException e) {
-                throw new IgniteException(e);
-            }
+        try {
+            dataCacheStartLatch.await();
+        }
+        catch (InterruptedException e) {
+            throw new IgniteInterruptedException(e);
         }
     }
 
@@ -152,25 +148,7 @@ public class IgfsDataManager extends IgfsManager {
     @Override protected void start0() throws IgniteCheckedException {
         igfs = igfsCtx.igfs();
 
-        dataCachePrj = 
igfsCtx.kernalContext().cache().internalCache(igfsCtx.configuration().getDataCacheName());
-        dataCache = 
igfsCtx.kernalContext().cache().internalCache(igfsCtx.configuration().getDataCacheName());
-
-        dataCacheStartFut = 
igfsCtx.kernalContext().cache().internalCache(igfsCtx.configuration().getDataCacheName())
-            .preloader().startFuture();
-
-        if (dataCache.configuration().getAtomicityMode() != TRANSACTIONAL)
-            throw new IgniteCheckedException("Data cache should be 
transactional: " +
-                igfsCtx.configuration().getDataCacheName());
-
-        metrics = igfsCtx.igfs().localMetrics();
-
-        assert dataCachePrj != null;
-
-        CacheAffinityKeyMapper mapper = igfsCtx.kernalContext().cache()
-            
.internalCache(igfsCtx.configuration().getDataCacheName()).configuration().getAffinityMapper();
-
-        grpSize = mapper instanceof IgfsGroupDataBlocksKeyMapper ?
-            ((IgfsGroupDataBlocksKeyMapper)mapper).groupSize() : 1;
+        dataCacheStartLatch = new CountDownLatch(1);
 
         grpBlockSize = igfsCtx.configuration().getBlockSize() * grpSize;
 
@@ -227,6 +205,26 @@ public class IgfsDataManager extends IgfsManager {
 
     /** {@inheritDoc} */
     @Override protected void onKernalStart0() throws IgniteCheckedException {
+        dataCachePrj = 
igfsCtx.kernalContext().cache().internalCache(igfsCtx.configuration().getDataCacheName());
+        dataCache = 
igfsCtx.kernalContext().cache().internalCache(igfsCtx.configuration().getDataCacheName());
+
+        metrics = igfsCtx.igfs().localMetrics();
+
+        assert dataCachePrj != null;
+
+        CacheAffinityKeyMapper mapper = igfsCtx.kernalContext().cache()
+            
.internalCache(igfsCtx.configuration().getDataCacheName()).configuration().getAffinityMapper();
+
+        grpSize = mapper instanceof IgfsGroupDataBlocksKeyMapper ?
+            ((IgfsGroupDataBlocksKeyMapper)mapper).groupSize() : 1;
+
+        
igfsCtx.kernalContext().cache().internalCache(igfsCtx.configuration().getDataCacheName()).preloader()
+            .startFuture().listen(new CI1<IgniteInternalFuture<Object>>() {
+            @Override public void apply(IgniteInternalFuture<Object> f) {
+                dataCacheStartLatch.countDown();
+            }
+        });
+
         new Thread(delWorker).start();
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eb2e6819/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
index 53fadd9..834e8c0 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
@@ -40,8 +40,8 @@ import org.jetbrains.annotations.*;
 import javax.cache.processor.*;
 import java.io.*;
 import java.util.*;
+import java.util.concurrent.*;
 
-import static org.apache.ignite.cache.CacheAtomicityMode.*;
 import static org.apache.ignite.events.EventType.*;
 import static org.apache.ignite.internal.processors.igfs.IgfsFileInfo.*;
 import static org.apache.ignite.transactions.TransactionConcurrency.*;
@@ -59,7 +59,7 @@ public class IgfsMetaManager extends IgfsManager {
     private GridCache<Object, Object> metaCache;
 
     /** */
-    private IgniteInternalFuture<?> metaCacheStartFut;
+    private CountDownLatch metaCacheStartLatch;
 
     /** File ID to file info projection. */
     private GridCacheProjectionEx<IgniteUuid, IgfsFileInfo> id2InfoPrj;
@@ -86,41 +86,42 @@ public class IgfsMetaManager extends IgfsManager {
      *
      */
     void awaitInit() {
-        if (!metaCacheStartFut.isDone()) {
-            try {
-                metaCacheStartFut.get();
-            }
-            catch (IgniteCheckedException e) {
-                throw new IgniteException(e);
-            }
+        try {
+            metaCacheStartLatch.await();
+        }
+        catch (InterruptedException e) {
+            throw new IgniteInterruptedException(e);
         }
     }
 
     /** {@inheritDoc} */
     @Override protected void start0() throws IgniteCheckedException {
-        cfg = igfsCtx.configuration();
-
-        metaCache = 
igfsCtx.kernalContext().cache().cache(cfg.getMetaCacheName());
+        metaCacheStartLatch = new CountDownLatch(1);
 
-        metaCacheStartFut = 
igfsCtx.kernalContext().cache().internalCache(cfg.getMetaCacheName()).preloader()
-            .startFuture();
-
-        if (metaCache.configuration().getAtomicityMode() != TRANSACTIONAL)
-            throw new IgniteCheckedException("Meta cache should be 
transactional: " + cfg.getMetaCacheName());
+        cfg = igfsCtx.configuration();
 
         evts = igfsCtx.kernalContext().event();
 
         sampling = new IgfsSamplingKey(cfg.getName());
 
-        assert metaCache != null;
-
-        id2InfoPrj = (GridCacheProjectionEx<IgniteUuid, 
IgfsFileInfo>)metaCache.<IgniteUuid, IgfsFileInfo>cache();
-
         log = igfsCtx.kernalContext().log(IgfsMetaManager.class);
     }
 
     /** {@inheritDoc} */
     @Override protected void onKernalStart0() throws IgniteCheckedException {
+        metaCache = 
igfsCtx.kernalContext().cache().cache(cfg.getMetaCacheName());
+
+        assert metaCache != null;
+
+        
igfsCtx.kernalContext().cache().internalCache(cfg.getMetaCacheName()).preloader().startFuture()
+            .listen(new CI1<IgniteInternalFuture<Object>>() {
+                @Override public void apply(IgniteInternalFuture<Object> f) {
+                    metaCacheStartLatch.countDown();
+                }
+            });
+
+        id2InfoPrj = (GridCacheProjectionEx<IgniteUuid, 
IgfsFileInfo>)metaCache.<IgniteUuid, IgfsFileInfo>cache();
+
         locNode = igfsCtx.kernalContext().discovery().localNode();
 
         // Start background delete worker.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eb2e6819/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsProcessor.java
index 941eb80..fd59174 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsProcessor.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.internal.processors.igfs;
 
 import org.apache.ignite.*;
-import org.apache.ignite.cache.*;
 import org.apache.ignite.cache.affinity.*;
 import org.apache.ignite.cluster.*;
 import org.apache.ignite.compute.*;
@@ -26,7 +25,6 @@ import org.apache.ignite.configuration.*;
 import org.apache.ignite.igfs.*;
 import org.apache.ignite.igfs.mapreduce.*;
 import org.apache.ignite.internal.*;
-import org.apache.ignite.internal.processors.cache.*;
 import org.apache.ignite.internal.util.ipc.*;
 import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
@@ -38,6 +36,7 @@ import java.util.*;
 import java.util.concurrent.*;
 
 import static org.apache.ignite.IgniteSystemProperties.*;
+import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
 import static org.apache.ignite.cache.CacheMemoryMode.*;
 import static org.apache.ignite.cache.CacheMode.*;
 import static org.apache.ignite.igfs.IgfsMode.*;
@@ -262,26 +261,31 @@ public class IgfsProcessor extends IgfsProcessorAdapter {
                 throw new IgniteCheckedException("Duplicate IGFS name found 
(check configuration and " +
                     "assign unique name to each): " + name);
 
-            GridCacheAdapter<Object, Object> dataCache = 
ctx.cache().internalCache(cfg.getDataCacheName());
+            CacheConfiguration dataCacheCfg = config(cfg.getDataCacheName());
+            CacheConfiguration metaCacheCfg = config(cfg.getMetaCacheName());
 
-            if (dataCache == null)
+            if (dataCacheCfg == null)
                 throw new IgniteCheckedException("Data cache is not configured 
locally for IGFS: " + cfg);
 
-            if (dataCache.configuration().isQueryIndexEnabled())
+            if (dataCacheCfg.isQueryIndexEnabled())
                 throw new IgniteCheckedException("IGFS data cache cannot start 
with enabled query indexing.");
 
-            GridCache<Object, Object> metaCache = 
ctx.cache().cache(cfg.getMetaCacheName());
+            if (dataCacheCfg.getAtomicityMode() != TRANSACTIONAL)
+                throw new IgniteCheckedException("Data cache should be 
transactional: " + cfg.getDataCacheName());
 
-            if (metaCache == null)
+            if (metaCacheCfg == null)
                 throw new IgniteCheckedException("Metadata cache is not 
configured locally for IGFS: " + cfg);
 
-            if (metaCache.configuration().isQueryIndexEnabled())
+            if (metaCacheCfg.isQueryIndexEnabled())
                 throw new IgniteCheckedException("IGFS metadata cache cannot 
start with enabled query indexing.");
 
+            if (metaCacheCfg.getAtomicityMode() != TRANSACTIONAL)
+                throw new IgniteCheckedException("Meta cache should be 
transactional: " + cfg.getMetaCacheName());
+
             if (F.eq(cfg.getDataCacheName(), cfg.getMetaCacheName()))
                 throw new IgniteCheckedException("Cannot use same cache as 
both data and meta cache: " + cfg.getName());
 
-            if (!(dataCache.configuration().getAffinityMapper() instanceof 
IgfsGroupDataBlocksKeyMapper))
+            if (!(dataCacheCfg.getAffinityMapper() instanceof 
IgfsGroupDataBlocksKeyMapper))
                 throw new IgniteCheckedException("Invalid IGFS data cache 
configuration (key affinity mapper class should be " +
                     IgfsGroupDataBlocksKeyMapper.class.getSimpleName() + "): " 
+ cfg);
 
@@ -290,7 +294,7 @@ public class IgfsProcessor extends IgfsProcessorAdapter {
             if (maxSpaceSize > 0) {
                 // Max space validation.
                 long maxHeapSize = Runtime.getRuntime().maxMemory();
-                long offHeapSize = 
dataCache.configuration().getOffHeapMaxMemory();
+                long offHeapSize = dataCacheCfg.getOffHeapMaxMemory();
 
                 if (offHeapSize < 0 && maxSpaceSize > maxHeapSize)
                     // Offheap is disabled.
@@ -303,15 +307,15 @@ public class IgfsProcessor extends IgfsProcessorAdapter {
                         ", maxIgfsSpaceSize=" + maxSpaceSize + ']');
             }
 
-            if (dataCache.configuration().getCacheMode() == PARTITIONED) {
-                int backups = dataCache.configuration().getBackups();
+            if (dataCacheCfg.getCacheMode() == PARTITIONED) {
+                int backups = dataCacheCfg.getBackups();
 
                 if (backups != 0)
                     throw new IgniteCheckedException("IGFS data cache cannot 
be used with backups (set backup count " +
                         "to 0 and restart the grid): " + 
cfg.getDataCacheName());
             }
 
-            if (cfg.getMaxSpaceSize() == 0 && 
dataCache.configuration().getMemoryMode() == OFFHEAP_VALUES)
+            if (cfg.getMaxSpaceSize() == 0 && dataCacheCfg.getMemoryMode() == 
OFFHEAP_VALUES)
                 U.warn(log, "IGFS max space size is not specified but data 
cache values are stored off-heap (max " +
                     "space will be limited to 80% of max JVM heap size): " + 
cfg.getName());
 
@@ -335,6 +339,19 @@ public class IgfsProcessor extends IgfsProcessorAdapter {
     }
 
     /**
+     * @param cacheName Cache name.
+     * @return Configuration.
+     */
+    private CacheConfiguration config(String cacheName) {
+        for (CacheConfiguration ccfg : ctx.config().getCacheConfiguration()) {
+            if (F.eq(cacheName, ccfg.getName()))
+                return ccfg;
+        }
+
+        return null;
+    }
+
+    /**
      * Check IGFS config on remote node.
      *
      * @param rmtNode Remote node.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eb2e6819/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
index 202aed0..90cb4ae 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
@@ -171,6 +171,15 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
 
         try {
             idx.onCacheStopped(cctx);
+
+            Iterator<Map.Entry<TypeId, TypeDescriptor>> it = 
types.entrySet().iterator();
+
+            while (it.hasNext()) {
+                Map.Entry<TypeId, TypeDescriptor> entry = it.next();
+
+                if (F.eq(cctx.name(), entry.getKey().space))
+                    it.remove();
+            }
         }
         catch (IgniteCheckedException e) {
             U.error(log, "Failed to clear indexing on cache stop (will 
ignore): " + cctx.name(), e);

Reply via email to