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; } }
