You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2014/12/19 11:04:17 UTC
[09/11] incubator-ignite git commit: # ignite-41
# ignite-41
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/736dcc11
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/736dcc11
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/736dcc11
Branch: refs/heads/ignite-41
Commit: 736dcc1149b58b66dd7af6419bf71def36ccbe40
Parents: 0230134
Author: sboikov <sb...@gridgain.com>
Authored: Fri Dec 19 09:24:27 2014 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Fri Dec 19 11:05:31 2014 +0300
----------------------------------------------------------------------
.../cache/GridCacheAccessExpiryPolicy.java | 10 ++++-
.../processors/cache/GridCacheExpiryPolicy.java | 13 +++++-
.../processors/cache/GridCacheMapEntry.java | 10 ++++-
.../cache/GridCacheTxLocalAdapter.java | 32 +++++++++++---
.../distributed/GridCacheTtlUpdateRequest.java | 17 ++++----
.../GridDistributedTxRemoteAdapter.java | 3 ++
.../distributed/dht/GridDhtCacheAdapter.java | 2 +-
.../distributed/dht/GridDhtTxFinishRequest.java | 8 ++--
.../dht/atomic/GridDhtAtomicCache.java | 44 ++++++++++++++++++--
.../IgniteCacheExpiryPolicyAbstractTest.java | 34 ++++++++++++++-
.../cache/GridCacheBasicApiAbstractTest.java | 16 +++----
11 files changed, 150 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/736dcc11/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheAccessExpiryPolicy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheAccessExpiryPolicy.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheAccessExpiryPolicy.java
index f0904dd..2205108 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheAccessExpiryPolicy.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheAccessExpiryPolicy.java
@@ -83,7 +83,10 @@ public class GridCacheAccessExpiryPolicy implements GridCacheExpiryPolicy {
* @param ver Entry version.
*/
@SuppressWarnings("unchecked")
- @Override public void onAccessUpdated(Object key, byte[] keyBytes, GridCacheVersion ver) {
+ @Override public void onAccessUpdated(Object key,
+ byte[] keyBytes,
+ GridCacheVersion ver,
+ @Nullable Collection<UUID> rdrs) {
Map<Object, IgniteBiTuple<byte[], GridCacheVersion>> entries0 = entries;
if (entries0 == null) {
@@ -106,6 +109,11 @@ public class GridCacheAccessExpiryPolicy implements GridCacheExpiryPolicy {
}
/** {@inheritDoc} */
+ @Nullable @Override public Map<UUID, Collection<IgniteBiTuple<byte[], GridCacheVersion>>> readers() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
@Override public String toString() {
return S.toString(GridCacheAccessExpiryPolicy.class, this);
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/736dcc11/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheExpiryPolicy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheExpiryPolicy.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheExpiryPolicy.java
index 3ce9572..0328d51 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheExpiryPolicy.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheExpiryPolicy.java
@@ -37,11 +37,20 @@ public interface GridCacheExpiryPolicy {
* @param key Entry key.
* @param keyBytes Entry key bytes.
* @param ver Entry version.
+ * @param rdrs Entry readers.
*/
- public void onAccessUpdated(Object key, byte[] keyBytes, GridCacheVersion ver);
+ public void onAccessUpdated(Object key,
+ byte[] keyBytes,
+ GridCacheVersion ver,
+ @Nullable Collection<UUID> rdrs);
/**
- * @return TTL update request.
+ * @return Entries with TTL updated on access.
*/
@Nullable public Map<Object, IgniteBiTuple<byte[], GridCacheVersion>> entries();
+
+ /**
+ * @return Readers for updated entries.
+ */
+ @Nullable Map<UUID, Collection<IgniteBiTuple<byte[], GridCacheVersion>>> readers();
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/736dcc11/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMapEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMapEntry.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMapEntry.java
index 6f5fae6..8b79382 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMapEntry.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMapEntry.java
@@ -888,7 +888,10 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V>
updateTtl(ttl);
- expiryPlc.onAccessUpdated(key(), getOrMarshalKeyBytes(), version());
+ expiryPlc.onAccessUpdated(key(),
+ getOrMarshalKeyBytes(),
+ version(),
+ hasReaders() ? ((GridDhtCacheEntry)this).readers() : null);
}
}
@@ -1851,7 +1854,10 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V>
if (newTtl != -1L) {
updateTtl(newTtl);
- expiryPlc.onAccessUpdated(key, getOrMarshalKeyBytes(), version());
+ expiryPlc.onAccessUpdated(key,
+ getOrMarshalKeyBytes(),
+ version(),
+ hasReaders() ? ((GridDhtCacheEntry)this).readers() : null);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/736dcc11/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTxLocalAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTxLocalAdapter.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTxLocalAdapter.java
index d2e0413..1cafbed 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTxLocalAdapter.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTxLocalAdapter.java
@@ -788,6 +788,9 @@ public abstract class GridCacheTxLocalAdapter<K, V> extends GridCacheTxAdapter<K
"Transaction does not own lock for group lock entry during commit [tx=" +
this + ", txEntry=" + txEntry + ']';
+ if (txEntry.ttl() != -1L)
+ cached.updateTtl(null, txEntry.ttl());
+
if (log.isDebugEnabled())
log.debug("Ignoring NOOP entry when committing: " + txEntry);
}
@@ -1710,9 +1713,10 @@ public abstract class GridCacheTxLocalAdapter<K, V> extends GridCacheTxAdapter<K
/**
* Internal routine for <tt>putAll(..)</tt>
*
+ * @param cacheCtx Cache context.
* @param keys Keys to enlist.
* @param cached Cached entry.
- * @param expiry Expiry policy for entry. If {@code null}, leave unchanged.
+ * @param expiryPlc Explicitly specified expiry policy for entry.
* @param implicit Implicit flag.
* @param lookup Value lookup map ({@code null} for remove).
* @param transformMap Map with transform closures if this is a transform operation.
@@ -1729,7 +1733,7 @@ public abstract class GridCacheTxLocalAdapter<K, V> extends GridCacheTxAdapter<K
GridCacheContext<K, V> cacheCtx,
Collection<? extends K> keys,
@Nullable GridCacheEntryEx<K, V> cached,
- @Nullable ExpiryPolicy expiry,
+ @Nullable ExpiryPolicy expiryPlc,
boolean implicit,
@Nullable Map<? extends K, ? extends V> lookup,
@Nullable Map<? extends K, ? extends IgniteClosure<V, V>> transformMap,
@@ -1884,7 +1888,7 @@ public abstract class GridCacheTxLocalAdapter<K, V> extends GridCacheTxAdapter<K
}
txEntry = addEntry(lockOnly ? NOOP : rmv ? DELETE : transformClo != null ? TRANSFORM :
- old != null ? UPDATE : CREATE, val, transformClo, entry, expiry, filter, true, drTtl,
+ old != null ? UPDATE : CREATE, val, transformClo, entry, expiryPlc, filter, true, drTtl,
drExpireTime, drVer);
if (!implicit() && readCommitted())
@@ -1971,7 +1975,7 @@ public abstract class GridCacheTxLocalAdapter<K, V> extends GridCacheTxAdapter<K
}
txEntry = addEntry(rmv ? DELETE : transformClo != null ? TRANSFORM :
- v != null ? UPDATE : CREATE, val, transformClo, entry, expiry, filter, true, drTtl,
+ v != null ? UPDATE : CREATE, val, transformClo, entry, expiryPlc, filter, true, drTtl,
drExpireTime, drVer);
enlisted.add(key);
@@ -2100,6 +2104,11 @@ public abstract class GridCacheTxLocalAdapter<K, V> extends GridCacheTxAdapter<K
txEntry.setAndMarkValid(txEntry.previousOperation(), ret.value());
txEntry.filters(CU.<K, V>empty());
txEntry.filtersSet(false);
+
+ ExpiryPolicy expiryPlc = txEntry.expiry() != null ? txEntry.expiry() : cacheCtx.expiry();
+
+ if (expiryPlc != null)
+ txEntry.ttl(GridCacheMapEntry.toTtl(expiryPlc.getExpiryForAccess()));
}
break; // While.
@@ -2341,6 +2350,7 @@ public abstract class GridCacheTxLocalAdapter<K, V> extends GridCacheTxAdapter<K
}
/**
+ * @param cacheCtx Cache context.
* @param keys Keys to remove.
* @param drMap DR map.
* @param retval Flag indicating whether a value should be returned.
@@ -2418,11 +2428,21 @@ public abstract class GridCacheTxLocalAdapter<K, V> extends GridCacheTxAdapter<K
try {
Collection<K> enlisted = new LinkedList<>();
+ ExpiryPolicy plc;
+
+ if (!F.isEmpty(filter)) {
+ GridCacheProjectionImpl<K, V> prj = cacheCtx.projectionPerCall();
+
+ plc = prj != null ? prj.expiry() : null;
+ }
+ else
+ plc = null;
+
final IgniteFuture<Set<K>> loadFut = enlistWrite(
cacheCtx,
keys0,
/** cached entry */null,
- /** expiry */null,
+ plc,
implicit,
/** lookup map */null,
/** transform map */null,
@@ -2689,7 +2709,7 @@ public abstract class GridCacheTxLocalAdapter<K, V> extends GridCacheTxAdapter<K
/**
* @param op Cache operation.
* @param val Value.
- * @param expiryPlc Expiry policy, if {@code null}, leave unchanged.
+ * @param expiryPlc Explicitly specified expiry policy.
* @param transformClos Transform closure.
* @param entry Cache entry.
* @param filter Filter.
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/736dcc11/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/GridCacheTtlUpdateRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/GridCacheTtlUpdateRequest.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/GridCacheTtlUpdateRequest.java
index c862904..b2e9141 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/GridCacheTtlUpdateRequest.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/GridCacheTtlUpdateRequest.java
@@ -36,6 +36,14 @@ public class GridCacheTtlUpdateRequest<K, V> extends GridCacheMessage<K, V> {
@GridDirectCollection(GridCacheVersion.class)
private List<GridCacheVersion> vers;
+ /** */
+ @GridDirectCollection(byte[].class)
+ private List<byte[]> nearKeysBytes;
+
+ /** Versions for near entries. */
+ @GridDirectCollection(GridCacheVersion.class)
+ private List<GridCacheVersion> nearVers;
+
/** New TTL. */
private long ttl;
@@ -63,21 +71,16 @@ public class GridCacheTtlUpdateRequest<K, V> extends GridCacheMessage<K, V> {
}
/**
- * @param key Key.
* @param keyBytes Key bytes.
* @param ver Version.
*/
- public void addEntry(K key, byte[] keyBytes, GridCacheVersion ver) {
- if (keys == null) {
- keys = new ArrayList<>();
-
+ public void addEntry(byte[] keyBytes, GridCacheVersion ver) {
+ if (keysBytes == null) {
keysBytes = new ArrayList<>();
vers = new ArrayList<>();
}
- keys.add(key);
-
keysBytes.add(keyBytes);
vers.add(ver);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/736dcc11/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
index c35c284..ffc8ca6 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
@@ -584,6 +584,9 @@ public class GridDistributedTxRemoteAdapter<K, V> extends GridCacheTxAdapter<K,
"Transaction does not own lock for group lock entry during commit [tx=" +
this + ", txEntry=" + txEntry + ']';
+ if (txEntry.ttl() != -1L)
+ cached.updateTtl(null, txEntry.ttl());
+
if (nearCached != null) {
V val0 = null;
byte[] valBytes0 = null;
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/736dcc11/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 a7b1fea..e67c6dd 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
@@ -627,7 +627,7 @@ public abstract class GridDhtCacheAdapter<K, V> extends GridDistributedCacheAdap
req.cacheId(ctx.cacheId());
}
- req.addEntry((K)e.getKey(), e.getValue().get1(), e.getValue().get2());
+ req.addEntry(e.getValue().get1(), e.getValue().get2());
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/736dcc11/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
index 931d40c..612b7f6 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
@@ -495,13 +495,13 @@ public class GridDhtTxFinishRequest<K, V> extends GridDistributedTxFinishRequest
commState.idx++;
- case 31:
+ case 32:
if (!commState.putLongList(ttls))
return false;
commState.idx++;
- case 32:
+ case 33:
if (!commState.putLongList(nearTtls))
return false;
@@ -661,7 +661,7 @@ public class GridDhtTxFinishRequest<K, V> extends GridDistributedTxFinishRequest
commState.idx++;
- case 31:
+ case 32:
GridLongList ttls0 = commState.getLongList();
if (ttls0 == LONG_LIST_NOT_READ)
@@ -671,7 +671,7 @@ public class GridDhtTxFinishRequest<K, V> extends GridDistributedTxFinishRequest
commState.idx++;
- case 32:
+ case 33:
GridLongList nearTtls0 = commState.getLongList();
if (nearTtls0 == LONG_LIST_NOT_READ)
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/736dcc11/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 c3ef323..21afa83 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
@@ -667,7 +667,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
GridCacheProjectionImpl<K, V> prj = ctx.projectionPerCall();
- UUID subjId = ctx.subjectIdPerCall(null); // TODO IGNITE-41.
+ UUID subjId = ctx.subjectIdPerCall(null, prj);
int taskNameHash = ctx.kernalContext().job().currentTaskNameHash();
@@ -1110,7 +1110,10 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
if (ttl != -1L) {
entry.updateTtl(null, ttl);
- expiry.onAccessUpdated(entry.key(), entry.getOrMarshalKeyBytes(), entry.version());
+ expiry.onAccessUpdated(entry.key(),
+ entry.getOrMarshalKeyBytes(),
+ entry.version(),
+ entry.readers());
}
}
@@ -2376,6 +2379,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
* @param nodeId Sender node ID.
* @param res Deferred atomic update response.
*/
+ @SuppressWarnings("unchecked")
private void processDhtAtomicDeferredUpdateResponse(UUID nodeId, GridDhtAtomicDeferredUpdateResponse<K, V> res) {
if (log.isDebugEnabled())
log.debug("Processing deferred dht atomic update response [nodeId=" + nodeId + ", res=" + res + ']');
@@ -2705,6 +2709,9 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
/** */
private Map<Object, IgniteBiTuple<byte[], GridCacheVersion>> entries;
+ /** */
+ private Map<UUID, Collection<IgniteBiTuple<byte[], GridCacheVersion>>> rdrsMap;
+
/**
* @param plc Expiry policy.
*/
@@ -2730,16 +2737,45 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
}
/** {@inheritDoc} */
- @Override public void onAccessUpdated(Object key, byte[] keyBytes, GridCacheVersion ver) {
+ @Override public void onAccessUpdated(Object key,
+ byte[] keyBytes,
+ GridCacheVersion ver,
+ @Nullable Collection<UUID> rdrs) {
if (entries == null)
entries = new HashMap<>();
- entries.put(key, new IgniteBiTuple<>(keyBytes, ver));
+ IgniteBiTuple t = new IgniteBiTuple<>(keyBytes, ver);
+
+ entries.put(key, t);
+
+ if (!F.isEmpty(rdrs)) {
+ if (rdrs == null)
+ rdrsMap = new HashMap<>();
+
+ for (UUID nodeId : rdrs) {
+ Collection<IgniteBiTuple<byte[], GridCacheVersion>> col = rdrsMap.get(nodeId);
+
+ if (col == null)
+ rdrsMap.put(nodeId, col = new ArrayList<>());
+
+ col.add(t);
+ }
+ }
}
/** {@inheritDoc} */
@Nullable @Override public Map<Object, IgniteBiTuple<byte[], GridCacheVersion>> entries() {
return entries;
}
+
+ /** {@inheritDoc} */
+ @Nullable @Override public Map<UUID, Collection<IgniteBiTuple<byte[], GridCacheVersion>>> readers() {
+ return rdrsMap;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(UpdateExpiryPolicy.class, this);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/736dcc11/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/expiry/IgniteCacheExpiryPolicyAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/expiry/IgniteCacheExpiryPolicyAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/expiry/IgniteCacheExpiryPolicyAbstractTest.java
index 326b232..bffe6af 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/expiry/IgniteCacheExpiryPolicyAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/expiry/IgniteCacheExpiryPolicyAbstractTest.java
@@ -144,10 +144,16 @@ public abstract class IgniteCacheExpiryPolicyAbstractTest extends IgniteCacheAbs
accessGetAll();
for (final Integer key : keys()) {
- log.info("Test filter access [key=" + key + ']');
+ log.info("Test filterAccessRemove access [key=" + key + ']');
filterAccessRemove(key);
}
+
+ for (final Integer key : keys()) {
+ log.info("Test filterAccessReplace access [key=" + key + ']');
+
+ filterAccessReplace(key);
+ }
}
/**
@@ -183,9 +189,33 @@ public abstract class IgniteCacheExpiryPolicyAbstractTest extends IgniteCacheAbs
checkTtl(key, 60_000L);
- assertFalse(cache.remove(key, 2));
+ assertFalse(cache.remove(key, 2)); // Remove fails, access expiry policy should be used.
+
+ checkTtl(key, 62_000L, true);
+
+ assertFalse(cache.withExpiryPolicy(new TestPolicy(100L, 200L, 1000L)).remove(key, 2));
+
+ checkTtl(key, 1000L, true);
+ }
+
+ /**
+ * @param key Key.
+ * @throws Exception If failed.
+ */
+ private void filterAccessReplace(Integer key) throws Exception {
+ IgniteCache<Integer, Integer> cache = jcache();
+
+ cache.put(key, 1);
+
+ checkTtl(key, 60_000L);
+
+ assertFalse(cache.replace(key, 2, 3)); // Put fails, access expiry policy should be used.
checkTtl(key, 62_000L, true);
+
+ assertFalse(cache.withExpiryPolicy(new TestPolicy(100L, 200L, 1000L)).remove(key, 2));
+
+ checkTtl(key, 1000L, true);
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/736dcc11/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheBasicApiAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheBasicApiAbstractTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheBasicApiAbstractTest.java
index faa18b2..f56309c 100644
--- a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheBasicApiAbstractTest.java
+++ b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheBasicApiAbstractTest.java
@@ -23,6 +23,7 @@ import org.gridgain.testframework.*;
import org.gridgain.testframework.junits.common.*;
import org.jetbrains.annotations.*;
+import javax.cache.expiry.*;
import java.util.*;
import java.util.concurrent.*;
@@ -491,27 +492,22 @@ public abstract class GridCacheBasicApiAbstractTest extends GridCommonAbstractTe
* @throws Exception In case of error.
*/
public void testPutWithExpiration() throws Exception {
- GridCache<Integer, String> cache = ignite.cache(null);
+ IgniteCache<Integer, String> cache = ignite.jcache(null);
CacheEventListener lsnr = new CacheEventListener(new CountDownLatch(1));
ignite.events().localListen(lsnr, EVTS_CACHE);
+ ExpiryPolicy expiry = new TouchedExpiryPolicy(new Duration(TimeUnit.MILLISECONDS, 200L));
+
try {
int key = (int)System.currentTimeMillis();
- GridCacheEntry<Integer, String> entry = cache.entry(key);
-
- entry.timeToLive(200);
-
- entry.set("val");
+ cache.withExpiryPolicy(expiry).put(key, "val");
assert cache.get(key) != null;
- entry.timeToLive(200);
-
- // Must update for TTL to have effect.
- entry.set("val");
+ cache.withExpiryPolicy(expiry).put(key, "val");
Thread.sleep(500);