ignite-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sboi...@apache.org
Subject [16/51] [abbrv] incubator-ignite git commit: # ignite-42
Date Fri, 23 Jan 2015 14:03:50 GMT
# ignite-42


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

Branch: refs/heads/ignite-86
Commit: 3f082cf61573457b4c1286473f12d4af756823e9
Parents: 4295961
Author: sboikov <sboikov@gridgain.com>
Authored: Thu Jan 22 10:07:55 2015 +0300
Committer: sboikov <sboikov@gridgain.com>
Committed: Thu Jan 22 11:42:09 2015 +0300

----------------------------------------------------------------------
 .../java/org/apache/ignite/IgniteCache.java     |  42 ++---
 .../java/org/apache/ignite/IgnitePortables.java |   3 +-
 .../org/apache/ignite/IgniteTransactions.java   |   3 +-
 .../apache/ignite/cache/CacheConfiguration.java |  37 ++++-
 .../processors/cache/IgniteCacheProxy.java      |  43 ++---
 .../resources/IgniteCacheNameResource.java      |   8 +-
 .../apache/ignite/transactions/IgniteTx.java    |   3 +-
 .../gridgain/grid/GridBasicWarmupClosure.java   |   2 +
 .../grid/cache/GridCacheProjection.java         | 158 ++++++++++---------
 .../fair/GridCachePartitionFairAffinity.java    |   2 +-
 .../GridCacheRendezvousAffinityFunction.java    |   3 +-
 .../org/gridgain/grid/kernal/GridGainEx.java    |   1 +
 .../processors/cache/GridCacheAdapter.java      |   4 +-
 .../processors/cache/GridCacheProcessor.java    |   2 +-
 .../processors/cache/GridCacheProjectionEx.java |  17 +-
 .../processors/cache/GridCacheStoreManager.java |  44 ++++--
 .../processors/cache/GridCacheTtlManager.java   |   3 +-
 .../cache/GridCacheWriteBehindStore.java        |   4 +-
 .../distributed/dht/GridDhtCacheAdapter.java    |   2 +
 .../cache/distributed/dht/GridDhtGetFuture.java |   1 +
 .../dht/GridPartitionedGetFuture.java           |   1 +
 .../dht/atomic/GridDhtAtomicCache.java          |   5 +-
 .../dht/colocated/GridDhtColocatedCache.java    |   1 +
 .../distributed/near/GridNearGetFuture.java     |   1 +
 .../near/GridNearTransactionalCache.java        |   1 +
 .../cache/transactions/IgniteTxLocalEx.java     |   1 +
 .../processors/ggfs/GridNoopGgfsHelper.java     |   1 -
 .../cache/VisorCacheDefaultConfiguration.java   |   6 +-
 .../cache/VisorCacheEvictionConfiguration.java  |   6 +-
 .../cache/VisorCacheStoreConfiguration.java     |   6 +-
 .../GridCacheQueryIndexingDisabledSelfTest.java |   1 +
 31 files changed, 233 insertions(+), 179 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/apache/ignite/IgniteCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteCache.java b/modules/core/src/main/java/org/apache/ignite/IgniteCache.java
index fc8c217..e5904d6 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteCache.java
@@ -19,8 +19,8 @@ package org.apache.ignite;
 
 import org.apache.ignite.cache.*;
 import org.apache.ignite.cache.query.*;
+import org.apache.ignite.cache.store.*;
 import org.apache.ignite.lang.*;
-import org.apache.ignite.transactions.*;
 import org.gridgain.grid.cache.*;
 import org.jetbrains.annotations.*;
 
@@ -94,20 +94,20 @@ public interface IgniteCache<K, V> extends javax.cache.Cache<K, V>, IgniteAsyncS
      * @param p Optional predicate (may be {@code null}). If provided, will be used to
      *      filter values to be put into cache.
      * @param args Optional user arguments to be passed into
-     *      {@link org.apache.ignite.cache.store.CacheStore#loadCache(IgniteBiInClosure, Object...)} method.
+     *      {@link CacheStore#loadCache(IgniteBiInClosure, Object...)} method.
      * @throws CacheException If loading failed.
      */
     public void loadCache(@Nullable IgniteBiPredicate<K, V> p, @Nullable Object... args) throws CacheException;
 
     /**
-     * Delegates to {@link org.apache.ignite.cache.store.CacheStore#loadCache(IgniteBiInClosure,Object...)} method
+     * Delegates to {@link CacheStore#loadCache(IgniteBiInClosure,Object...)} method
      * to load state from the underlying persistent storage. The loaded values
      * will then be given to the optionally passed in predicate, and, if the predicate returns
      * {@code true}, will be stored in cache. If predicate is {@code null}, then
      * all loaded values will be stored in cache.
      * <p>
      * Note that this method does not receive keys as a parameter, so it is up to
-     * {@link org.apache.ignite.cache.store.CacheStore} implementation to provide all the data to be loaded.
+     * {@link CacheStore} implementation to provide all the data to be loaded.
      * <p>
      * This method is not transactional and may end up loading a stale value into
      * cache if another thread has updated the value immediately after it has been
@@ -117,7 +117,7 @@ public interface IgniteCache<K, V> extends javax.cache.Cache<K, V>, IgniteAsyncS
      * @param p Optional predicate (may be {@code null}). If provided, will be used to
      *      filter values to be put into cache.
      * @param args Optional user arguments to be passed into
-     *      {@link org.apache.ignite.cache.store.CacheStore#loadCache(IgniteBiInClosure, Object...)} method.
+     *      {@link CacheStore#loadCache(IgniteBiInClosure, Object...)} method.
      * @throws CacheException If loading failed.
      */
     public void localLoadCache(@Nullable IgniteBiPredicate<K, V> p, @Nullable Object... args) throws CacheException;
@@ -129,14 +129,14 @@ public interface IgniteCache<K, V> extends javax.cache.Cache<K, V>, IgniteAsyncS
      * the value will be loaded from the primary node, which in its turn may load the value
      * from the swap storage, and consecutively, if it's not in swap,
      * from the underlying persistent storage. If value has to be loaded from persistent
-     * storage, {@link org.apache.ignite.cache.store.CacheStore#load(IgniteTx, Object)} method will be used.
+     * storage, {@link CacheStore#load(Object)} method will be used.
      * <p>
      * If the returned value is not needed, method {@link #putIfAbsent(Object, Object)} should
      * always be used instead of this one to avoid the overhead associated with returning of the
      * previous value.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#write(Cache.Entry)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -163,8 +163,8 @@ public interface IgniteCache<K, V> extends javax.cache.Cache<K, V>, IgniteAsyncS
      * are acquired in undefined order, so it may cause a deadlock when used with
      * other concurrent transactional updates.
      * <p>
-     * If write-through is enabled, the values will be removed from {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#removeAll(IgniteTx, java.util.Collection)} method.
+     * If write-through is enabled, the values will be removed from {@link CacheStore}
+     * via {@link CacheStore#deleteAll(Collection)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -264,7 +264,7 @@ public interface IgniteCache<K, V> extends javax.cache.Cache<K, V>, IgniteAsyncS
      * This method does not participate in any transactions, however, it will
      * peek at transactional value according to the {@link org.gridgain.grid.cache.GridCachePeekMode#SMART} mode
      * semantics. If you need to look at global cached value even from within transaction,
-     * you can use {@link GridCache#peek(Object, java.util.Collection)} method.
+     * you can use {@link GridCache#peek(Object, Collection)} method.
      *
      * @param key Entry key.
      * @return Peeked value.
@@ -336,13 +336,13 @@ public interface IgniteCache<K, V> extends javax.cache.Cache<K, V>, IgniteAsyncS
      * the value will be loaded from the primary node, which in its turn may load the value
      * from the swap storage, and consecutively, if it's not in swap,
      * from the underlying persistent storage. If value has to be loaded from persistent
-     * storage,  {@link org.apache.ignite.cache.store.CacheStore#load(IgniteTx, Object)} method will be used.
+     * storage,  {@link CacheStore#load(Object)} method will be used.
      * <p>
      * If the returned value is not needed, method {@link #putIf(Object, Object, IgnitePredicate)} should
      * always be used instead of this one to avoid the overhead associated with returning of the previous value.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#write(Cache.Entry)}  method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -373,8 +373,8 @@ public interface IgniteCache<K, V> extends javax.cache.Cache<K, V>, IgniteAsyncS
      * value and, therefore, does not have any overhead associated with returning a value. It
      * should be used whenever return value is not required.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#write(Cache.Entry)}  method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -401,14 +401,14 @@ public interface IgniteCache<K, V> extends javax.cache.Cache<K, V>, IgniteAsyncS
      * caches, the value will be loaded from the primary node, which in its turn may load the value
      * from the disk-based swap storage, and consecutively, if it's not in swap,
      * from the underlying persistent storage. If value has to be loaded from persistent
-     * storage, {@link org.apache.ignite.cache.store.CacheStore#load(IgniteTx, Object)} method will be used.
+     * storage, {@link CacheStore#load(Object)} method will be used.
      * <p>
      * If the returned value is not needed, method {@link #removeIf(Object, IgnitePredicate)} should
      * always be used instead of this one to avoid the overhead associated with returning of the
      * previous value.
      * <p>
-     * If write-through is enabled, the value will be removed from {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#remove(IgniteTx, Object)} method.
+     * If write-through is enabled, the value will be removed from {@link CacheStore}
+     * via {@link CacheStore#delete(Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -433,8 +433,8 @@ public interface IgniteCache<K, V> extends javax.cache.Cache<K, V>, IgniteAsyncS
      * This method will return {@code true} if remove did occur, which means that all optionally
      * provided filters have passed and there was something to remove, {@code false} otherwise.
      * <p>
-     * If write-through is enabled, the value will be removed from {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#remove(IgniteTx, Object)} method.
+     * If write-through is enabled, the value will be removed from {@link CacheStore}
+     * via {@link CacheStore#delete(Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/apache/ignite/IgnitePortables.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgnitePortables.java b/modules/core/src/main/java/org/apache/ignite/IgnitePortables.java
index bbd9f44..ec311c9 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgnitePortables.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgnitePortables.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite;
 
+import org.apache.ignite.cache.*;
 import org.apache.ignite.portables.*;
 import org.gridgain.grid.cache.*;
 import org.gridgain.grid.cache.query.*;
@@ -255,7 +256,7 @@ import java.util.Date;
  * or for a specific type via {@link org.apache.ignite.portables.PortableTypeConfiguration} instance.
  * <h1 class="header">Query Indexing</h1>
  * Portable objects can be indexed for querying by specifying index fields in
- * {@link GridCacheQueryTypeMetadata} inside of specific {@link org.apache.ignite.cache.CacheConfiguration} instance,
+ * {@link GridCacheQueryTypeMetadata} inside of specific {@link CacheConfiguration} instance,
  * like so:
  * <pre name=code class=xml>
  * ...

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/apache/ignite/IgniteTransactions.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteTransactions.java b/modules/core/src/main/java/org/apache/ignite/IgniteTransactions.java
index 6158d99..a046f2b 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteTransactions.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteTransactions.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite;
 
+import org.apache.ignite.cache.*;
 import org.apache.ignite.configuration.*;
 import org.apache.ignite.transactions.*;
 import org.gridgain.grid.cache.*;
@@ -28,7 +29,7 @@ import org.jetbrains.annotations.*;
 public interface IgniteTransactions {
     /**
      * Starts transaction with default isolation, concurrency, timeout, and invalidation policy.
-     * All defaults are set in {@link org.apache.ignite.cache.CacheConfiguration} at startup.
+     * All defaults are set in {@link CacheConfiguration} at startup.
      *
      * @return New transaction
      * @throws IllegalStateException If transaction is already started by this thread.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/apache/ignite/cache/CacheConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/CacheConfiguration.java b/modules/core/src/main/java/org/apache/ignite/cache/CacheConfiguration.java
index 7aaeeef..8898c64 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/CacheConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/CacheConfiguration.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.cache;
 
 import org.apache.ignite.Ignite;
+import org.apache.ignite.*;
 import org.apache.ignite.cache.store.*;
 import org.apache.ignite.configuration.*;
 import org.apache.ignite.portables.PortableObject;
@@ -159,6 +160,9 @@ public class CacheConfiguration extends MutableConfiguration {
     /** Default maximum number of query iterators that can be stored. */
     public static final int DFLT_MAX_QUERY_ITERATOR_CNT = 1024;
 
+    /** Default value for load previous value flag. */
+    public static final boolean DFLT_LOAD_PREV_VAL = false;
+
     /** Default continuous query buffers queue size. */
     @SuppressWarnings("UnusedDeclaration")
     @Deprecated
@@ -242,7 +246,7 @@ public class CacheConfiguration extends MutableConfiguration {
     private Factory storeFactory;
 
     /** */
-    private boolean loadPrevVal;
+    private boolean loadPrevVal = DFLT_LOAD_PREV_VAL;
 
     /** Node group resolver. */
     private GridCacheAffinityFunction aff;
@@ -803,14 +807,41 @@ public class CacheConfiguration extends MutableConfiguration {
     }
 
     /**
-     * @return
+     * Gets flag indicating whether value should be loaded from store if it is not in the cache
+     * for following cache operations:
+     * <ul>
+     *     <li>{@link IgniteCache#putIfAbsent(Object, Object)}</li>
+     *     <li>{@link IgniteCache#replace(Object, Object)}</li>
+     *     <li>{@link IgniteCache#replace(Object, Object, Object)}</li>
+     *     <li>{@link IgniteCache#remove(Object, Object)}</li>
+     *     <li>{@link IgniteCache#getAndPut(Object, Object)}</li>
+     *     <li>{@link IgniteCache#getAndRemove(Object)}</li>
+     *     <li>{@link IgniteCache#getAndReplace(Object, Object)}</li>
+     *     <li>{@link IgniteCache#getAndPutIfAbsent(Object, Object)}</li>
+     *</ul>
+     *
+     * @return Load previous value flag.
      */
     public boolean isLoadPreviousValue() {
         return loadPrevVal;
     }
 
     /**
-     * @param loadPrevVal
+     * Sets flag indicating whether value should be loaded from store if it is not in the cache
+     * for following cache operations:
+     * <ul>
+     *     <li>{@link IgniteCache#putIfAbsent(Object, Object)}</li>
+     *     <li>{@link IgniteCache#replace(Object, Object)}</li>
+     *     <li>{@link IgniteCache#replace(Object, Object, Object)}</li>
+     *     <li>{@link IgniteCache#remove(Object, Object)}</li>
+     *     <li>{@link IgniteCache#getAndPut(Object, Object)}</li>
+     *     <li>{@link IgniteCache#getAndRemove(Object)}</li>
+     *     <li>{@link IgniteCache#getAndReplace(Object, Object)}</li>
+     *     <li>{@link IgniteCache#getAndPutIfAbsent(Object, Object)}</li>
+     *</ul>
+     * When not set, default value is {@link #DFLT_LOAD_PREV_VAL}.
+     *
+     * @param loadPrevVal Load previous value flag.
      */
     public void setLoadPreviousValue(boolean loadPrevVal) {
         this.loadPrevVal = loadPrevVal;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
index 20599db..cc88eb2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
@@ -899,38 +899,23 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements
         GridCacheProjectionImpl<K, V> prev = gate.enter(prj);
 
         try {
-            final Iterator<GridCacheEntry<K, V>> it = delegate.iterator();
-
-            return new Iterator<Entry<K, V>>() {
-                private CacheEntryImpl e;
-
-                @Override
-                public boolean hasNext() {
-                    return it.hasNext();
-                }
-
-                @Override
-                public Entry<K, V> next() {
-                    if (!hasNext())
-                        throw new NoSuchElementException();
-
-                    GridCacheEntry<K, V> e0 = it.next();
-
-                    e = new CacheEntryImpl(e0.getKey(), e0.getValue());
-
-                    return e;
-                }
-
-                @Override
-                public void remove() {
-                    if (e == null)
-                        throw new IllegalStateException();
+            return F.iterator(delegate, new C1<GridCacheEntry<K, V>, Entry<K, V>>() {
+                @Override public Entry<K, V> apply(final GridCacheEntry<K, V> e) {
+                    return new Entry<K, V>() {
+                        @Override public K getKey() {
+                            return e.getKey();
+                        }
 
-                    IgniteCacheProxy.this.remove((K) e.getKey());
+                        @Override public V getValue() {
+                            return e.getValue();
+                        }
 
-                    e = null;
+                        @Override public <T> T unwrap(Class<T> clazz) {
+                            throw new IllegalArgumentException();
+                        }
+                    };
                 }
-            };
+            }, false);
         }
         finally {
             gate.leave(prev);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/apache/ignite/resources/IgniteCacheNameResource.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/resources/IgniteCacheNameResource.java b/modules/core/src/main/java/org/apache/ignite/resources/IgniteCacheNameResource.java
index 3f16f2e..14c0531 100644
--- a/modules/core/src/main/java/org/apache/ignite/resources/IgniteCacheNameResource.java
+++ b/modules/core/src/main/java/org/apache/ignite/resources/IgniteCacheNameResource.java
@@ -17,13 +17,15 @@
 
 package org.apache.ignite.resources;
 
+import org.apache.ignite.cache.*;
+
 import java.lang.annotation.*;
 
 /**
  * Annotates a field or a setter method for injection of grid cache name.
- * Grid cache name is provided to cache via {@link org.apache.ignite.cache.CacheConfiguration#getName()} method.
+ * Grid cache name is provided to cache via {@link CacheConfiguration#getName()} method.
  * <p>
- * Cache name can be injected into components provided in the {@link org.apache.ignite.cache.CacheConfiguration},
+ * Cache name can be injected into components provided in the {@link CacheConfiguration},
  * if {@link IgniteCacheNameResource} annotation is used in another classes it is no-op.
  * <p>
  * Here is how injection would typically happen:
@@ -49,7 +51,7 @@ import java.lang.annotation.*;
  * }
  * </pre>
  * <p>
- * See {@link org.apache.ignite.cache.CacheConfiguration#getName()} for cache configuration details.
+ * See {@link CacheConfiguration#getName()} for cache configuration details.
  */
 @Documented
 @Retention(RetentionPolicy.RUNTIME)

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/apache/ignite/transactions/IgniteTx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/transactions/IgniteTx.java b/modules/core/src/main/java/org/apache/ignite/transactions/IgniteTx.java
index 263747a..0244e9b 100644
--- a/modules/core/src/main/java/org/apache/ignite/transactions/IgniteTx.java
+++ b/modules/core/src/main/java/org/apache/ignite/transactions/IgniteTx.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.transactions;
 
 import org.apache.ignite.*;
+import org.apache.ignite.cache.*;
 import org.apache.ignite.lang.*;
 import org.gridgain.grid.cache.*;
 
@@ -66,7 +67,7 @@ import java.util.*;
  *  all nodes reply {@code 'OK'} (i.e. {@code Phase 1} completes successfully), a one-way' {@code 'COMMIT'}
  *  message is sent without waiting for reply. If it is necessary to know whenever remote nodes have committed
  *  as well, synchronous commit or synchronous rollback should be enabled via
- *  {@link org.apache.ignite.cache.CacheConfiguration#setWriteSynchronizationMode}
+ *  {@link CacheConfiguration#setWriteSynchronizationMode}
  *  or by setting proper flags on cache projection, such as {@link GridCacheFlag#SYNC_COMMIT}.
  *  <p>
  *  Note that in this mode, optimistic failures are only possible in conjunction with

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/GridBasicWarmupClosure.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/GridBasicWarmupClosure.java b/modules/core/src/main/java/org/gridgain/grid/GridBasicWarmupClosure.java
index 51ab98a..330cc68 100644
--- a/modules/core/src/main/java/org/gridgain/grid/GridBasicWarmupClosure.java
+++ b/modules/core/src/main/java/org/gridgain/grid/GridBasicWarmupClosure.java
@@ -422,6 +422,7 @@ public class GridBasicWarmupClosure implements IgniteInClosure<IgniteConfigurati
             this.cache = cache;
         }
 
+        /** {@inheritDoc} */
         @Override public Object call() throws Exception {
             ThreadLocalRandom rnd = ThreadLocalRandom.current();
 
@@ -435,6 +436,7 @@ public class GridBasicWarmupClosure implements IgniteInClosure<IgniteConfigurati
          * Runs operation.
          *
          * @param key Key.
+         * @throws Exception If failed.
          */
         protected abstract void operation(int key) throws Exception;
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/cache/GridCacheProjection.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/cache/GridCacheProjection.java b/modules/core/src/main/java/org/gridgain/grid/cache/GridCacheProjection.java
index c9d0405..3714701 100644
--- a/modules/core/src/main/java/org/gridgain/grid/cache/GridCacheProjection.java
+++ b/modules/core/src/main/java/org/gridgain/grid/cache/GridCacheProjection.java
@@ -18,6 +18,8 @@
 package org.gridgain.grid.cache;
 
 import org.apache.ignite.*;
+import org.apache.ignite.cache.*;
+import org.apache.ignite.cache.store.*;
 import org.apache.ignite.cluster.*;
 import org.apache.ignite.lang.*;
 import org.apache.ignite.transactions.*;
@@ -311,7 +313,7 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * </pre>
      * <p>
      * Note that this method makes sense only if cache is working in portable mode
-     * ({@link org.apache.ignite.cache.CacheConfiguration#isPortableEnabled()} returns {@code true}. If not,
+     * ({@link CacheConfiguration#isPortableEnabled()} returns {@code true}. If not,
      * this method is no-op and will return current projection.
      *
      * @return Projection for portable objects.
@@ -377,7 +379,7 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
 
     /**
      * Reloads a single key from persistent storage. This method
-     * delegates to {@link org.apache.ignite.cache.store.CacheStore#load(IgniteTx, Object)}
+     * delegates to {@link CacheStore#load(IgniteTx, Object)}
      * method.
      * <h2 class="header">Transactions</h2>
      * This method does not participate in transactions, however it does not violate
@@ -391,7 +393,7 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
 
     /**
      * Asynchronously reloads a single key from persistent storage. This method
-     * delegates to {@link org.apache.ignite.cache.store.CacheStore#load(IgniteTx, Object)}
+     * delegates to {@link CacheStore#load(IgniteTx, Object)}
      * method.
      * <h2 class="header">Transactions</h2>
      * This method does not participate in transactions, however it does not violate
@@ -491,8 +493,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * <p>
      * If the value is not present in cache, then it will be looked up from swap storage. If
      * it's not present in swap, or if swap is disable, and if read-through is allowed, value
-     * will be loaded from {@link org.apache.ignite.cache.store.CacheStore} persistent storage via
-     * {@link org.apache.ignite.cache.store.CacheStore#load(IgniteTx, Object)} method.
+     * will be loaded from {@link CacheStore} persistent storage via
+     * {@link CacheStore#load(IgniteTx, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -516,8 +518,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * <p>
      * If the value is not present in cache, then it will be looked up from swap storage. If
      * it's not present in swap, or if swap is disabled, and if read-through is allowed, value
-     * will be loaded from {@link org.apache.ignite.cache.store.CacheStore} persistent storage via
-     * {@link org.apache.ignite.cache.store.CacheStore#load(IgniteTx, Object)} method.
+     * will be loaded from {@link CacheStore} persistent storage via
+     * {@link CacheStore#load(IgniteTx, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -540,8 +542,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * <p>
      * If some value is not present in cache, then it will be looked up from swap storage. If
      * it's not present in swap, or if swap is disabled, and if read-through is allowed, value
-     * will be loaded from {@link org.apache.ignite.cache.store.CacheStore} persistent storage via
-     * {@link org.apache.ignite.cache.store.CacheStore#loadAll(IgniteTx, Collection, org.apache.ignite.lang.IgniteBiInClosure)} method.
+     * will be loaded from {@link CacheStore} persistent storage via
+     * {@link CacheStore#loadAll(IgniteTx, Collection, org.apache.ignite.lang.IgniteBiInClosure)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -564,8 +566,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * <p>
      * If some value is not present in cache, then it will be looked up from swap storage. If
      * it's not present in swap, or if swap is disabled, and if read-through is allowed, value
-     * will be loaded from {@link org.apache.ignite.cache.store.CacheStore} persistent storage via
-     * {@link org.apache.ignite.cache.store.CacheStore#loadAll(IgniteTx, Collection, org.apache.ignite.lang.IgniteBiInClosure)} method.
+     * will be loaded from {@link CacheStore} persistent storage via
+     * {@link CacheStore#loadAll(IgniteTx, Collection, org.apache.ignite.lang.IgniteBiInClosure)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -587,13 +589,13 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * the value will be loaded from the primary node, which in its turn may load the value
      * from the swap storage, and consecutively, if it's not in swap,
      * from the underlying persistent storage. If value has to be loaded from persistent
-     * storage,  {@link org.apache.ignite.cache.store.CacheStore#load(IgniteTx, Object)} method will be used.
+     * storage,  {@link CacheStore#load(IgniteTx, Object)} method will be used.
      * <p>
      * If the returned value is not needed, method {@link #putx(Object, Object, org.apache.ignite.lang.IgnitePredicate[])} should
      * always be used instead of this one to avoid the overhead associated with returning of the previous value.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -622,17 +624,17 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * previously contained value for the given key, then this value is returned. Otherwise,
      * in case of {@link GridCacheMode#REPLICATED} caches, the value will be loaded from swap
      * and, if it's not there, and read-through is allowed, from the underlying
-     * {@link org.apache.ignite.cache.store.CacheStore} storage. In case of {@link GridCacheMode#PARTITIONED} caches,
+     * {@link CacheStore} storage. In case of {@link GridCacheMode#PARTITIONED} caches,
      * the value will be loaded from the primary node, which in its turn may load the value
      * from the swap storage, and consecutively, if it's not in swap and read-through is allowed,
      * from the underlying persistent storage. If value has to be loaded from persistent
-     * storage,  {@link org.apache.ignite.cache.store.CacheStore#load(IgniteTx, Object)} method will be used.
+     * storage,  {@link CacheStore#load(IgniteTx, Object)} method will be used.
      * <p>
      * If the returned value is not needed, method {@link #putx(Object, Object, org.apache.ignite.lang.IgnitePredicate[])} should
      * always be used instead of this one to avoid the overhead associated with returning of the previous value.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -660,8 +662,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * value and, therefore, does not have any overhead associated with returning a value. It
      * should be used whenever return value is not required.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -693,8 +695,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * value and, therefore, does not have any overhead associated with returning of a value. It
      * should always be used whenever return value is not required.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -721,14 +723,14 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * the value will be loaded from the primary node, which in its turn may load the value
      * from the swap storage, and consecutively, if it's not in swap,
      * from the underlying persistent storage. If value has to be loaded from persistent
-     * storage, {@link org.apache.ignite.cache.store.CacheStore#load(IgniteTx, Object)} method will be used.
+     * storage, {@link CacheStore#load(IgniteTx, Object)} method will be used.
      * <p>
      * If the returned value is not needed, method {@link #putxIfAbsent(Object, Object)} should
      * always be used instead of this one to avoid the overhead associated with returning of the
      * previous value.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -752,14 +754,14 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * the value will be loaded from the primary node, which in its turn may load the value
      * from the swap storage, and consecutively, if it's not in swap,
      * from the underlying persistent storage. If value has to be loaded from persistent
-     * storage, {@link org.apache.ignite.cache.store.CacheStore#load(IgniteTx, Object)} method will be used.
+     * storage, {@link CacheStore#load(IgniteTx, Object)} method will be used.
      * <p>
      * If the returned value is not needed, method {@link #putxIfAbsentAsync(Object, Object)} should
      * always be used instead of this one to avoid the overhead associated with returning of the
      * previous value.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -784,8 +786,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * value and, therefore, does not have any overhead associated with returning of a value. It
      * should always be used whenever return value is not required.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -810,8 +812,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * value and, therefore, does not have any overhead associated with returning of a value. It
      * should always be used whenever return value is not required.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -833,14 +835,14 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * the value will be loaded from the primary node, which in its turn may load the value
      * from the swap storage, and consecutively, if it's not in swap,
      * from the underlying persistent storage. If value has to be loaded from persistent
-     * storage, {@link org.apache.ignite.cache.store.CacheStore#load(IgniteTx, Object)} method will be used.
+     * storage, {@link CacheStore#load(IgniteTx, Object)} method will be used.
      * <p>
      * If the returned value is not needed, method {@link #replacex(Object, Object)} should
      * always be used instead of this one to avoid the overhead associated with returning of the
      * previous value.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -863,14 +865,14 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * {@link GridCacheMode#PARTITIONED} caches, the value will be loaded from the primary node,
      * which in its turn may load the value from the swap storage, and consecutively, if it's not in swap,
      * from the underlying persistent storage. If value has to be loaded from persistent
-     * storage, {@link org.apache.ignite.cache.store.CacheStore#load(IgniteTx, Object)} method will be used.
+     * storage, {@link CacheStore#load(IgniteTx, Object)} method will be used.
      * <p>
      * If the returned value is not needed, method {@link #replacex(Object, Object)} should
      * always be used instead of this one to avoid the overhead associated with returning of the
      * previous value.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -894,8 +896,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * value and, therefore, does not have any overhead associated with returning of a value. It
      * should always be used whenever return value is not required.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -920,8 +922,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * value and, therefore, does not have any overhead associated with returning of a value. It
      * should always be used whenever return value is not required.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -943,8 +945,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * <p>
      * This method will return {@code true} if value is stored in cache and {@code false} otherwise.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -968,8 +970,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * <p>
      * This method will return {@code true} if value is stored in cache and {@code false} otherwise.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -991,8 +993,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * be stored in cache only if they pass the filter. Note that filter check is atomic,
      * so value stored in cache is guaranteed to be consistent with the filters.
      * <p>
-     * If write-through is enabled, the stored values will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#putAll(IgniteTx, Map)} method.
+     * If write-through is enabled, the stored values will be persisted to {@link CacheStore}
+     * via {@link CacheStore#putAll(IgniteTx, Map)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -1014,8 +1016,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * be stored in cache only if they pass the filter. Note that filter check is atomic,
      * so value stored in cache is guaranteed to be consistent with the filters.
      * <p>
-     * If write-through is enabled, the stored values will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#putAll(IgniteTx, Map)} method.
+     * If write-through is enabled, the stored values will be persisted to {@link CacheStore}
+     * via {@link CacheStore#putAll(IgniteTx, Map)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -1138,7 +1140,7 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
 
     /**
      * Starts transaction with default isolation, concurrency, timeout, and invalidation policy.
-     * All defaults are set in {@link org.apache.ignite.cache.CacheConfiguration} at startup.
+     * All defaults are set in {@link CacheConfiguration} at startup.
      *
      * @return New transaction
      * @throws IllegalStateException If transaction is already started by this thread.
@@ -1271,7 +1273,7 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * Evicts entry associated with given key from cache. Note, that entry will be evicted
      * only if it's not used (not participating in any locks or transactions).
      * <p>
-     * If {@link org.apache.ignite.cache.CacheConfiguration#isSwapEnabled()} is set to {@code true} and
+     * If {@link CacheConfiguration#isSwapEnabled()} is set to {@code true} and
      * {@link GridCacheFlag#SKIP_SWAP} is not enabled, the evicted entry will
      * be swapped to offheap, and then to disk.
      * <h2 class="header">Cache Flags</h2>
@@ -1288,7 +1290,7 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * evicted only if it's not used (not participating in any locks or
      * transactions).
      * <p>
-     * If {@link org.apache.ignite.cache.CacheConfiguration#isSwapEnabled()} is set to {@code true} and
+     * If {@link CacheConfiguration#isSwapEnabled()} is set to {@code true} and
      * {@link GridCacheFlag#SKIP_SWAP} is not enabled, the evicted entry will
      * be swapped to offheap, and then to disk.
      * <h2 class="header">Cache Flags</h2>
@@ -1302,7 +1304,7 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * that entry will be evicted only if it's not used (not
      * participating in any locks or transactions).
      * <p>
-     * If {@link org.apache.ignite.cache.CacheConfiguration#isSwapEnabled()} is set to {@code true} and
+     * If {@link CacheConfiguration#isSwapEnabled()} is set to {@code true} and
      * {@link GridCacheFlag#SKIP_SWAP} is not enabled, the evicted entry will
      * be swapped to offheap, and then to disk.
      * <h2 class="header">Cache Flags</h2>
@@ -1317,7 +1319,7 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * Clears all entries from this cache only if the entry is not
      * currently locked or participating in a transaction.
      * <p>
-     * If {@link org.apache.ignite.cache.CacheConfiguration#isSwapEnabled()} is set to {@code true} and
+     * If {@link CacheConfiguration#isSwapEnabled()} is set to {@code true} and
      * {@link GridCacheFlag#SKIP_SWAP} is not enabled, the evicted entries will
      * also be cleared from swap.
      * <p>
@@ -1334,7 +1336,7 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * Clears an entry from this cache and swap storage only if the entry
      * is not currently locked, and is not participating in a transaction.
      * <p>
-     * If {@link org.apache.ignite.cache.CacheConfiguration#isSwapEnabled()} is set to {@code true} and
+     * If {@link CacheConfiguration#isSwapEnabled()} is set to {@code true} and
      * {@link GridCacheFlag#SKIP_SWAP} is not enabled, the evicted entries will
      * also be cleared from swap.
      * <p>
@@ -1403,14 +1405,14 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * caches, the value will be loaded from the primary node, which in its turn may load the value
      * from the disk-based swap storage, and consecutively, if it's not in swap,
      * from the underlying persistent storage. If value has to be loaded from persistent
-     * storage, {@link org.apache.ignite.cache.store.CacheStore#load(IgniteTx, Object)} method will be used.
+     * storage, {@link CacheStore#load(IgniteTx, Object)} method will be used.
      * <p>
      * If the returned value is not needed, method {@link #removex(Object, org.apache.ignite.lang.IgnitePredicate[])} should
      * always be used instead of this one to avoid the overhead associated with returning of the
      * previous value.
      * <p>
-     * If write-through is enabled, the value will be removed from {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#remove(IgniteTx, Object)} method.
+     * If write-through is enabled, the value will be removed from {@link CacheStore}
+     * via {@link CacheStore#remove(IgniteTx, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -1436,14 +1438,14 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * caches, the value will be loaded from the primary node, which in its turn may load the value
      * from the swap storage, and consecutively, if it's not in swap,
      * from the underlying persistent storage. If value has to be loaded from persistent
-     * storage, {@link org.apache.ignite.cache.store.CacheStore#load(IgniteTx, Object)} method will be used.
+     * storage, {@link CacheStore#load(IgniteTx, Object)} method will be used.
      * <p>
      * If the returned value is not needed, method {@link #removex(Object, org.apache.ignite.lang.IgnitePredicate[])} should
      * always be used instead of this one to avoid the overhead associated with returning of the
      * previous value.
      * <p>
-     * If write-through is enabled, the value will be removed from {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#remove(IgniteTx, Object)} method.
+     * If write-through is enabled, the value will be removed from {@link CacheStore}
+     * via {@link CacheStore#remove(IgniteTx, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -1466,8 +1468,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * This method will return {@code true} if remove did occur, which means that all optionally
      * provided filters have passed and there was something to remove, {@code false} otherwise.
      * <p>
-     * If write-through is enabled, the value will be removed from {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#remove(IgniteTx, Object)} method.
+     * If write-through is enabled, the value will be removed from {@link CacheStore}
+     * via {@link CacheStore#remove(IgniteTx, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -1493,8 +1495,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * This method will return {@code true} if remove did occur, which means that all optionally
      * provided filters have passed and there was something to remove, {@code false} otherwise.
      * <p>
-     * If write-through is enabled, the value will be removed from {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#remove(IgniteTx, Object)} method.
+     * If write-through is enabled, the value will be removed from {@link CacheStore}
+     * via {@link CacheStore#remove(IgniteTx, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -1517,8 +1519,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
     /**
      * Removes given key mapping from cache if one exists and value is equal to the passed in value.
      * <p>
-     * If write-through is enabled, the value will be removed from {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#remove(IgniteTx, Object)} method.
+     * If write-through is enabled, the value will be removed from {@link CacheStore}
+     * via {@link CacheStore#remove(IgniteTx, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -1542,8 +1544,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * This method will return {@code true} if remove did occur, which means that all optionally
      * provided filters have passed and there was something to remove, {@code false} otherwise.
      * <p>
-     * If write-through is enabled, the value will be removed from {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#remove(IgniteTx, Object)} method.
+     * If write-through is enabled, the value will be removed from {@link CacheStore}
+     * via {@link CacheStore#remove(IgniteTx, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -1564,8 +1566,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * Removes given key mappings from cache for entries for which the optionally passed in filters do
      * pass.
      * <p>
-     * If write-through is enabled, the values will be removed from {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#removeAll(IgniteTx, Collection)} method.
+     * If write-through is enabled, the values will be removed from {@link CacheStore}
+     * via {@link CacheStore#removeAll(IgniteTx, Collection)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -1586,8 +1588,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * Asynchronously removes given key mappings from cache for entries for which the optionally
      * passed in filters do pass.
      * <p>
-     * If write-through is enabled, the values will be removed from {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#removeAll(IgniteTx, Collection)} method.
+     * If write-through is enabled, the values will be removed from {@link CacheStore}
+     * via {@link CacheStore#removeAll(IgniteTx, Collection)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -1615,8 +1617,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * are acquired in undefined order, so it may cause a deadlock when used with
      * other concurrent transactional updates.
      * <p>
-     * If write-through is enabled, the values will be removed from {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#removeAll(IgniteTx, Collection)} method.
+     * If write-through is enabled, the values will be removed from {@link CacheStore}
+     * via {@link CacheStore#removeAll(IgniteTx, Collection)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -1640,8 +1642,8 @@ public interface GridCacheProjection<K, V> extends Iterable<GridCacheEntry<K, V>
      * <b>USE WITH CARE</b> - if your cache has many entries that pass through the filter or if filter
      * is empty, then transaction will quickly become very heavy and slow.
      * <p>
-     * If write-through is enabled, the values will be removed from {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#removeAll(IgniteTx, Collection)} method.
+     * If write-through is enabled, the values will be removed from {@link CacheStore}
+     * via {@link CacheStore#removeAll(IgniteTx, Collection)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/cache/affinity/fair/GridCachePartitionFairAffinity.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/cache/affinity/fair/GridCachePartitionFairAffinity.java b/modules/core/src/main/java/org/gridgain/grid/cache/affinity/fair/GridCachePartitionFairAffinity.java
index 188de50..1986eb1 100644
--- a/modules/core/src/main/java/org/gridgain/grid/cache/affinity/fair/GridCachePartitionFairAffinity.java
+++ b/modules/core/src/main/java/org/gridgain/grid/cache/affinity/fair/GridCachePartitionFairAffinity.java
@@ -17,7 +17,7 @@
 
 package org.gridgain.grid.cache.affinity.fair;
 
-import org.apache.ignite.cache.CacheConfiguration;
+import org.apache.ignite.cache.*;
 import org.apache.ignite.cluster.*;
 import org.apache.ignite.events.*;
 import org.apache.ignite.lang.*;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/cache/affinity/rendezvous/GridCacheRendezvousAffinityFunction.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/cache/affinity/rendezvous/GridCacheRendezvousAffinityFunction.java b/modules/core/src/main/java/org/gridgain/grid/cache/affinity/rendezvous/GridCacheRendezvousAffinityFunction.java
index a58bd76..695fd9d 100644
--- a/modules/core/src/main/java/org/gridgain/grid/cache/affinity/rendezvous/GridCacheRendezvousAffinityFunction.java
+++ b/modules/core/src/main/java/org/gridgain/grid/cache/affinity/rendezvous/GridCacheRendezvousAffinityFunction.java
@@ -18,6 +18,7 @@
 package org.gridgain.grid.cache.affinity.rendezvous;
 
 import org.apache.ignite.*;
+import org.apache.ignite.cache.*;
 import org.apache.ignite.cluster.*;
 import org.apache.ignite.lang.*;
 import org.apache.ignite.marshaller.*;
@@ -51,7 +52,7 @@ import java.util.*;
  * </li>
  * </ul>
  * <p>
- * Cache affinity can be configured for individual caches via {@link org.apache.ignite.cache.CacheConfiguration#getAffinity()} method.
+ * Cache affinity can be configured for individual caches via {@link CacheConfiguration#getAffinity()} method.
  */
 public class GridCacheRendezvousAffinityFunction implements GridCacheAffinityFunction, Externalizable {
     /** */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/kernal/GridGainEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/GridGainEx.java b/modules/core/src/main/java/org/gridgain/grid/kernal/GridGainEx.java
index e6e10c8..04418f5 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/GridGainEx.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/GridGainEx.java
@@ -2065,6 +2065,7 @@ public class GridGainEx {
         /**
          * Creates utility system cache configuration.
          *
+         * @param client If {@code true} creates client-only cache configuration.
          * @return Utility system cache configuration.
          */
         private CacheConfiguration utilitySystemCache(boolean client) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheAdapter.java
index e355cf6..116cefd 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheAdapter.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheAdapter.java
@@ -4670,9 +4670,7 @@ public abstract class GridCacheAdapter<K, V> extends GridMetadataAwareAdapter im
         ctx.denyOnFlag(READ);
 
         return ctx.closures().callLocalSafe(ctx.projectSafe(new GPC() {
-            @Nullable
-            @Override
-            public Object call() throws IgniteCheckedException {
+            @Nullable @Override public Object call() throws IgniteCheckedException {
                 reloadAll(filter);
 
                 return null;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProcessor.java
index 793db4e..b129ac6 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProcessor.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProcessor.java
@@ -373,7 +373,7 @@ public class GridCacheProcessor extends GridProcessorAdapter {
 
         if (cc.isWriteBehindEnabled()) {
             if (cfgStore == null)
-                throw new IgniteCheckedException("Cannot enable write-behind (write or store is not provided) " +
+                throw new IgniteCheckedException("Cannot enable write-behind (writer or store is not provided) " +
                     "for cache: " + cc.getName());
 
             assertParameter(cc.getWriteBehindBatchSize() > 0, "writeBehindBatchSize > 0");

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProjectionEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProjectionEx.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProjectionEx.java
index df309e4..93e630a 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProjectionEx.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProjectionEx.java
@@ -18,6 +18,7 @@
 package org.gridgain.grid.kernal.processors.cache;
 
 import org.apache.ignite.*;
+import org.apache.ignite.cache.store.*;
 import org.apache.ignite.lang.*;
 import org.apache.ignite.transactions.*;
 import org.gridgain.grid.cache.*;
@@ -192,8 +193,8 @@ public interface GridCacheProjectionEx<K, V> extends GridCacheProjection<K, V> {
      * <p>
      * This method will return {@code true} if value is stored in cache and {@code false} otherwise.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -217,8 +218,8 @@ public interface GridCacheProjectionEx<K, V> extends GridCacheProjection<K, V> {
      * <p>
      * This method will return {@code true} if value is stored in cache and {@code false} otherwise.
      * <p>
-     * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#put(IgniteTx, Object, Object)} method.
+     * If write-through is enabled, the stored value will be persisted to {@link CacheStore}
+     * via {@link CacheStore#put(IgniteTx, Object, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -239,8 +240,8 @@ public interface GridCacheProjectionEx<K, V> extends GridCacheProjection<K, V> {
     /**
      * Removes given key mapping from cache if one exists and value is equal to the passed in value.
      * <p>
-     * If write-through is enabled, the value will be removed from {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#remove(IgniteTx, Object)} method.
+     * If write-through is enabled, the value will be removed from {@link CacheStore}
+     * via {@link CacheStore#remove(IgniteTx, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.
@@ -263,8 +264,8 @@ public interface GridCacheProjectionEx<K, V> extends GridCacheProjection<K, V> {
      * This method will return {@code true} if remove did occur, which means that all optionally
      * provided filters have passed and there was something to remove, {@code false} otherwise.
      * <p>
-     * If write-through is enabled, the value will be removed from {@link org.apache.ignite.cache.store.CacheStore}
-     * via {@link org.apache.ignite.cache.store.CacheStore#remove(IgniteTx, Object)} method.
+     * If write-through is enabled, the value will be removed from {@link CacheStore}
+     * via {@link CacheStore#remove(IgniteTx, Object)} method.
      * <h2 class="header">Transactions</h2>
      * This method is transactional and will enlist the entry into ongoing transaction
      * if there is one.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheStoreManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheStoreManager.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheStoreManager.java
index 2791f26..728dd57 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheStoreManager.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheStoreManager.java
@@ -37,8 +37,6 @@ import javax.cache.integration.*;
 import java.lang.reflect.*;
 import java.util.*;
 
-import static org.gridgain.grid.cache.GridCacheAtomicityMode.*;
-
 /**
  * Store manager.
  */
@@ -47,6 +45,9 @@ public class GridCacheStoreManager<K, V> extends GridCacheManagerAdapter<K, V> {
     private static final String SES_ATTR = "STORE_SES";
 
     /** */
+    private static final String SES_FIELD_NAME = "ses";
+
+    /** */
     private final CacheStore<K, Object> store;
 
     /** */
@@ -95,7 +96,7 @@ public class GridCacheStoreManager<K, V> extends GridCacheManagerAdapter<K, V> {
                 if (!sesHolders.containsKey(cfgStore)) {
                     sesHolder0 = new ThreadLocal<>();
 
-                    Field sesField = CacheStore.class.getDeclaredField("ses");
+                    Field sesField = CacheStore.class.getDeclaredField(SES_FIELD_NAME);
 
                     sesField.setAccessible(true);
 
@@ -244,7 +245,10 @@ public class GridCacheStoreManager<K, V> extends GridCacheManagerAdapter<K, V> {
      * @return Loaded value, possibly <tt>null</tt>.
      * @throws IgniteCheckedException If data loading failed.
      */
-    @Nullable public Object loadFromStore(@Nullable IgniteTx tx, K key, boolean convert) throws IgniteCheckedException {
+    @Nullable private Object loadFromStore(@Nullable IgniteTx tx,
+        K key,
+        boolean convert)
+        throws IgniteCheckedException {
         if (store != null) {
             if (key instanceof GridCacheInternal)
                 // Never load internal keys from store as they are never persisted.
@@ -317,11 +321,12 @@ public class GridCacheStoreManager<K, V> extends GridCacheManagerAdapter<K, V> {
      */
     public void localStoreLoadAll(@Nullable IgniteTx tx,
         Collection<? extends K> keys,
-        final GridInClosure3<K, V, GridCacheVersion> vis) throws IgniteCheckedException {
+        final GridInClosure3<K, V, GridCacheVersion> vis)
+        throws IgniteCheckedException {
         assert store != null;
         assert locStore;
 
-        loadAllFromStore(null, keys, null, vis);
+        loadAllFromStore(tx, keys, null, vis);
     }
 
     /**
@@ -361,7 +366,8 @@ public class GridCacheStoreManager<K, V> extends GridCacheManagerAdapter<K, V> {
     private void loadAllFromStore(@Nullable IgniteTx tx,
         Collection<? extends K> keys,
         final @Nullable IgniteBiInClosure<K, V> vis,
-        final @Nullable GridInClosure3<K, V, GridCacheVersion> verVis) throws IgniteCheckedException {
+        final @Nullable GridInClosure3<K, V, GridCacheVersion> verVis)
+        throws IgniteCheckedException {
         assert vis != null ^ verVis != null;
         assert verVis == null || locStore;
 
@@ -482,12 +488,12 @@ public class GridCacheStoreManager<K, V> extends GridCacheManagerAdapter<K, V> {
                     }
                 }, args);
             }
-            catch (Exception e) {
-                throw U.cast(e);
-            }
-            catch (AssertionError e) {
+            catch (CacheLoaderException e) {
                 throw new IgniteCheckedException(e);
             }
+            catch (Exception e) {
+                throw new IgniteCheckedException(new CacheLoaderException(e));
+            }
 
             if (log.isDebugEnabled())
                 log.debug("Loaded all values from store.");
@@ -534,9 +540,12 @@ public class GridCacheStoreManager<K, V> extends GridCacheManagerAdapter<K, V> {
             catch (ClassCastException e) {
                 handleClassCastException(e);
             }
-            catch (Exception e) {
+            catch (CacheWriterException e) {
                 throw new IgniteCheckedException(e);
             }
+            catch (Exception e) {
+                throw new IgniteCheckedException(new CacheWriterException(e));
+            }
             finally {
                 sesHolder.set(null);
             }
@@ -612,6 +621,9 @@ public class GridCacheStoreManager<K, V> extends GridCacheManagerAdapter<K, V> {
                         throw new CacheStorePartialUpdateException(keys, e);
                     }
 
+                    if (!(e instanceof CacheWriterException))
+                        e = new CacheWriterException(e);
+
                     throw new IgniteCheckedException(e);
                 }
                 finally {
@@ -654,9 +666,12 @@ public class GridCacheStoreManager<K, V> extends GridCacheManagerAdapter<K, V> {
             catch (ClassCastException e) {
                 handleClassCastException(e);
             }
-            catch (Exception e) {
+            catch (CacheWriterException e) {
                 throw new IgniteCheckedException(e);
             }
+            catch (Exception e) {
+                throw new IgniteCheckedException(new CacheWriterException(e));
+            }
             finally {
                 sesHolder.set(null);
             }
@@ -706,6 +721,9 @@ public class GridCacheStoreManager<K, V> extends GridCacheManagerAdapter<K, V> {
                 if (!keys0.isEmpty())
                     throw new CacheStorePartialUpdateException(keys0, e);
 
+                if (!(e instanceof CacheWriterException))
+                    e = new CacheWriterException(e);
+
                 throw new IgniteCheckedException(e);
             }
             finally {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTtlManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTtlManager.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTtlManager.java
index d8785e9..cb4bb2e 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTtlManager.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTtlManager.java
@@ -18,6 +18,7 @@
 package org.gridgain.grid.kernal.processors.cache;
 
 import org.apache.ignite.*;
+import org.apache.ignite.cache.*;
 import org.apache.ignite.thread.*;
 import org.gridgain.grid.*;
 import org.gridgain.grid.util.*;
@@ -28,7 +29,7 @@ import org.gridgain.grid.util.worker.*;
 import java.util.*;
 
 /**
- * Eagerly removes expired entries from cache when {@link org.apache.ignite.cache.CacheConfiguration#isEagerTtl()} flag is set.
+ * Eagerly removes expired entries from cache when {@link CacheConfiguration#isEagerTtl()} flag is set.
  */
 @SuppressWarnings("NakedNotify")
 public class GridCacheTtlManager<K, V> extends GridCacheManagerAdapter<K, V> {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheWriteBehindStore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheWriteBehindStore.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheWriteBehindStore.java
index 9fb9ac2..88de4c1 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheWriteBehindStore.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheWriteBehindStore.java
@@ -43,7 +43,7 @@ import java.util.concurrent.locks.*;
 import static javax.cache.Cache.Entry;
 
 /**
- * Internal wrapper for a {@link org.apache.ignite.cache.store.CacheStore} that enables write-behind logic.
+ * Internal wrapper for a {@link CacheStore} that enables write-behind logic.
  * <p/>
  * The general purpose of this approach is to reduce cache store load under high
  * store update rate. The idea is to cache all write and remove operations in a pending
@@ -160,7 +160,7 @@ public class GridCacheWriteBehindStore<K, V> extends CacheStore<K, V> implements
      * <p/>
      * If this value is {@code 0}, then flush is performed only on time-elapsing basis. However,
      * when this value is {@code 0}, the cache critical size is set to
-     * {@link org.apache.ignite.cache.CacheConfiguration#DFLT_WRITE_BEHIND_CRITICAL_SIZE}
+     * {@link CacheConfiguration#DFLT_WRITE_BEHIND_CRITICAL_SIZE}
      *
      * @return Buffer size that triggers flush procedure.
      */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridDhtCacheAdapter.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
index 8360413..cae7671 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
@@ -521,6 +521,7 @@ public abstract class GridDhtCacheAdapter<K, V> extends GridDistributedCacheAdap
 
     /**
      * @param keys Keys to get
+     * @param readThrough Read through flag.
      * @param subjId Subject ID.
      * @param taskName Task name.
      * @param deserializePortable Deserialize portable flag.
@@ -552,6 +553,7 @@ public abstract class GridDhtCacheAdapter<K, V> extends GridDistributedCacheAdap
      * @param reader Reader node ID.
      * @param msgId Message ID.
      * @param keys Keys to get.
+     * @param readThrough Read through flag.
      * @param reload Reload flag.
      * @param topVer Topology version.
      * @param subjId Subject ID.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridDhtGetFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridDhtGetFuture.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridDhtGetFuture.java
index 8edd980..f9e85d2 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridDhtGetFuture.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridDhtGetFuture.java
@@ -110,6 +110,7 @@ public final class GridDhtGetFuture<K, V> extends GridCompoundIdentityFuture<Col
      * @param msgId Message ID.
      * @param reader Reader.
      * @param keys Keys.
+     * @param readThrough Read through flag.
      * @param reload Reload flag.
      * @param tx Transaction.
      * @param topVer Topology version.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridPartitionedGetFuture.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
index ee71d23..5b12db3 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
@@ -113,6 +113,7 @@ public class GridPartitionedGetFuture<K, V> extends GridCompoundIdentityFuture<M
      * @param cctx Context.
      * @param keys Keys.
      * @param topVer Topology version.
+     * @param readThrough Read through flag.
      * @param reload Reload flag.
      * @param forcePrimary If {@code true} then will force network trip to primary node even
      *          if called on backup node.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
index 6b1f624..8b848ba 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
@@ -535,7 +535,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
     }
 
     /**
-     * @return {@code True} if store enabled.
+     * @return {@code True} if store write-through enabled.
      */
     private boolean writeThrough() {
         return ctx.writeThrough() && ctx.store().configured();
@@ -875,7 +875,8 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
             // Optimistically expect that all keys are available locally (avoid creation of get future).
             for (K key : keys) {
                 if (key == null)
-                    return new GridFinishedFuture<>(ctx.kernalContext(), new IgniteNullArgumentCheckedException("Key is null."));
+                    return new GridFinishedFuture<>(ctx.kernalContext(),
+                        new IgniteNullArgumentCheckedException("Key is null."));
 
                 GridCacheEntryEx<K, V> entry = null;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
index 395325a..8bcbcbe 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
@@ -226,6 +226,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
 
     /**
      * @param keys Keys to load.
+     * @param readThrough Read through flag.
      * @param reload Reload flag.
      * @param forcePrimary Force get from primary node flag.
      * @param topVer Topology version.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearGetFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearGetFuture.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearGetFuture.java
index 0eb350e..0023915 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearGetFuture.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearGetFuture.java
@@ -115,6 +115,7 @@ public final class GridNearGetFuture<K, V> extends GridCompoundIdentityFuture<Ma
     /**
      * @param cctx Context.
      * @param keys Keys.
+     * @param readThrough Read through flag.
      * @param reload Reload flag.
      * @param forcePrimary If {@code true} get will be performed on primary node even if
      *      called on backup node.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearTransactionalCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearTransactionalCache.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearTransactionalCache.java
index 992070f..979f010 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearTransactionalCache.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearTransactionalCache.java
@@ -136,6 +136,7 @@ public class GridNearTransactionalCache<K, V> extends GridNearCacheAdapter<K, V>
     /**
      * @param tx Transaction.
      * @param keys Keys to load.
+     * @param readThrough Read through flag.
      * @param filter Filter.
      * @param deserializePortable Deserialize portable flag.
      * @param expiryPlc Expiry policy.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3f082cf6/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/transactions/IgniteTxLocalEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/transactions/IgniteTxLocalEx.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/transactions/IgniteTxLocalEx.java
index afa5c11..d6798f1 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/transactions/IgniteTxLocalEx.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/transactions/IgniteTxLocalEx.java
@@ -163,6 +163,7 @@ public interface IgniteTxLocalEx<K, V> extends IgniteTxEx<K, V> {
 
     /**
      * @param cacheCtx  Cache context.
+     * @param readThrough Read through flag.
      * @param async if {@code True}, then loading will happen in a separate thread.
      * @param keys Keys.
      * @param c Closure.


Mime
View raw message