ignite-4932 WIP

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

Branch: refs/heads/ignite-4932
Commit: f2d9ea0cc2a1b6fd66d00bc386f36c53757fe28c
Parents: 7d1d975
Author: sboikov <[email protected]>
Authored: Wed Apr 12 17:23:13 2017 +0300
Committer: sboikov <[email protected]>
Committed: Wed Apr 12 17:44:46 2017 +0300

----------------------------------------------------------------------
 .../processors/cache/GridCacheAdapter.java        | 18 +++++++++++++++++-
 .../processors/cache/GridCacheContext.java        |  5 ++++-
 .../processors/cache/GridCacheEventManager.java   | 16 ++++++++++++----
 .../processors/cache/GridCacheMapEntry.java       |  2 +-
 .../processors/cache/IgniteCacheExpiryPolicy.java |  5 +++++
 .../cache/IgniteCacheNoSyncForGetTest.java        | 11 ++++++-----
 .../ignite/testsuites/IgniteCacheTestSuite2.java  |  7 +++++--
 7 files changed, 50 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d9ea0c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
index 5042f77..c70541a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
@@ -5838,8 +5838,20 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
                 return null;
 
             return new CacheExpiryPolicy() {
+                private Long accessTtl;
+
                 @Override public long forAccess() {
-                    return CU.toTtl(expiryPlc.getExpiryForAccess());
+                    if (accessTtl == null)
+                        accessTtl = CU.toTtl(expiryPlc.getExpiryForAccess());
+
+                    return accessTtl;
+                }
+
+                @Override public boolean hasAccessTtl() {
+                    if (accessTtl == null)
+                        accessTtl = CU.toTtl(expiryPlc.getExpiryForAccess());
+
+                    return accessTtl != CU.TTL_NOT_CHANGED;
                 }
 
                 @Override public long forCreate() {
@@ -5870,6 +5882,10 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
                     return accessTtl;
                 }
 
+                @Override public boolean hasAccessTtl() {
+                    return accessTtl != CU.TTL_NOT_CHANGED;
+                }
+
                 /** {@inheritDoc} */
                 @Override public long forUpdate() {
                     return CU.TTL_NOT_CHANGED;

http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d9ea0c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
index 0985161..b4668a0 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
@@ -2063,7 +2063,10 @@ public class GridCacheContext<K, V> implements 
Externalizable {
      * @return
      */
     public boolean offheapRead(IgniteCacheExpiryPolicy expiryPlc, boolean 
readers) {
-        return offheapTiered() && isSwapOrOffheapEnabled() && expiryPlc == 
null && !readers;
+        return offheapTiered() &&
+            isSwapOrOffheapEnabled() &&
+            (expiryPlc == null || !expiryPlc.hasAccessTtl()) &&
+            !readers;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d9ea0c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEventManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEventManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEventManager.java
index 8953b63..7a417d5 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEventManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEventManager.java
@@ -62,11 +62,19 @@ public class GridCacheEventManager extends 
GridCacheManagerAdapter {
         cctx.gridEvents().removeLocalEventListener(lsnr);
     }
 
+    /**
+     * @param key Key for event.
+     * @param tx Possible surrounding transaction.
+     * @param val Read value.
+     * @param subjId Subject ID.
+     * @param taskName Task name.
+     * @param keepBinary Keep binary flag.
+     */
     public void readEvent(KeyCacheObject key,
-        IgniteInternalTx tx,
-        CacheObject val,
-        UUID subjId,
-        String taskName,
+        @Nullable IgniteInternalTx tx,
+        @Nullable CacheObject val,
+        @Nullable UUID subjId,
+        @Nullable String taskName,
         boolean keepBinary) {
         if (isRecordable(EVT_CACHE_OBJECT_READ)) {
             addEvent(cctx.affinity().partition(key),

http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d9ea0c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
index b9ebed3..00e5199 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
@@ -874,7 +874,7 @@ public abstract class GridCacheMapEntry extends 
GridMetadataAwareAdapter impleme
 
         Object res = null;
 
-        if (readerArgs == null && expiryPlc == null && !retVer && 
cctx.config().isEagerTtl()) {
+        if (readerArgs == null && (expiryPlc == null || 
!expiryPlc.hasAccessTtl()) && !retVer && cctx.config().isEagerTtl()) {
             // Fast heap get without 'synchronized'.
             CacheObject val0 = this.val;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d9ea0c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheExpiryPolicy.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheExpiryPolicy.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheExpiryPolicy.java
index f82c5f0..1d3e056 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheExpiryPolicy.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheExpiryPolicy.java
@@ -46,6 +46,11 @@ public interface IgniteCacheExpiryPolicy {
     public long forAccess();
 
     /**
+     * @return {@code True}
+     */
+    public boolean hasAccessTtl();
+
+    /**
      * Callback for ttl update on entry access.
      *
      * @param key Entry key.

http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d9ea0c/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoSyncForGetTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoSyncForGetTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoSyncForGetTest.java
index 0dbfc7e..85212c5 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoSyncForGetTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoSyncForGetTest.java
@@ -42,9 +42,10 @@ import 
org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 
-import static org.apache.ignite.cache.CacheAtomicityMode.*;
-import static org.apache.ignite.cache.CacheMemoryMode.*;
-import static org.apache.ignite.cache.CacheWriteSynchronizationMode.*;
+import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
+import static org.apache.ignite.cache.CacheMemoryMode.OFFHEAP_TIERED;
+import static org.apache.ignite.cache.CacheMemoryMode.ONHEAP_TIERED;
+import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
 
 /**
  *
@@ -268,7 +269,7 @@ public class IgniteCacheNoSyncForGetTest extends 
GridCommonAbstractTest {
         /**
          * @param key Key.
          */
-        public GetClosure(int key, String cacheName) {
+        GetClosure(int key, String cacheName) {
             this.key = key;
             this.cacheName = cacheName;
         }
@@ -296,7 +297,7 @@ public class IgniteCacheNoSyncForGetTest extends 
GridCommonAbstractTest {
         /**
          * @param keys Keys.
          */
-        public GetAllClosure(Set<Object> keys, String cacheName) {
+        GetAllClosure(Set<Object> keys, String cacheName) {
             this.keys = keys;
             this.cacheName = cacheName;
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/f2d9ea0c/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java
 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java
index e37a8a1..6d0745d 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java
@@ -38,6 +38,7 @@ import 
org.apache.ignite.internal.processors.cache.GridCacheVariableTopologySelf
 import 
org.apache.ignite.internal.processors.cache.IgniteAtomicCacheEntryProcessorNodeJoinTest;
 import 
org.apache.ignite.internal.processors.cache.IgniteCacheEntryProcessorNodeJoinTest;
 import org.apache.ignite.internal.processors.cache.IgniteCacheIncrementTxTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheNoSyncForGetTest;
 import 
org.apache.ignite.internal.processors.cache.IgniteCachePartitionMapUpdateTest;
 import 
org.apache.ignite.internal.processors.cache.IgniteDynamicCacheAndNodeStop;
 import org.apache.ignite.internal.processors.cache.OffheapCacheOnClientsTest;
@@ -114,11 +115,11 @@ import 
org.apache.ignite.internal.processors.cache.distributed.near.GridCachePar
 import 
org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedTxSingleThreadedSelfTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedTxTimeoutSelfTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.near.GridCacheRendezvousAffinityClientSelfTest;
-import 
org.apache.ignite.internal.processors.cache.distributed.near.GridPartitionedBackupLoadSelfTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearCacheStoreUpdateTest;
+import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearOffheapCacheStoreUpdateTest;
+import 
org.apache.ignite.internal.processors.cache.distributed.near.GridPartitionedBackupLoadSelfTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.near.NearCacheSyncUpdateTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.near.NoneRebalanceModeSelfTest;
-import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearOffheapCacheStoreUpdateTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.replicated.GridCacheReplicatedEvictionSelfTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.replicated.GridCacheReplicatedJobExecutionTest;
 import 
org.apache.ignite.internal.processors.cache.local.GridCacheLocalAtomicBasicStoreSelfTest;
@@ -278,6 +279,8 @@ public class IgniteCacheTestSuite2 extends TestSuite {
         suite.addTest(new TestSuite(GridNearCacheStoreUpdateTest.class));
         suite.addTest(new 
TestSuite(GridNearOffheapCacheStoreUpdateTest.class));
 
+        suite.addTest(new TestSuite(IgniteCacheNoSyncForGetTest.class));
+
         return suite;
     }
 }

Reply via email to