You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2017/02/17 09:59:30 UTC
[20/50] [abbrv] ignite git commit: IGNITE-3699 (Backported from
master) CreatedExpiryPolicy doesn't work if entry is loaded from store
IGNITE-3699 (Backported from master) CreatedExpiryPolicy doesn't work if entry is loaded from store
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/e832ef9c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/e832ef9c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/e832ef9c
Branch: refs/heads/ignite-1.9
Commit: e832ef9ce363fad34097aa78293a57f4aefcbcc0
Parents: 71a76c8
Author: Anton Vinogradov <av...@apache.org>
Authored: Tue Jan 24 14:44:33 2017 +0300
Committer: Anton Vinogradov <av...@apache.org>
Committed: Tue Jan 24 14:44:33 2017 +0300
----------------------------------------------------------------------
.../processors/cache/GridCacheAdapter.java | 35 ++++---
.../processors/cache/GridCacheEntryEx.java | 4 +-
.../processors/cache/GridCacheMapEntry.java | 17 +++-
.../GridDistributedCacheAdapter.java | 6 +-
.../distributed/dht/GridDhtCacheAdapter.java | 6 +-
.../distributed/dht/GridDhtLockFuture.java | 21 +++-
.../dht/GridDhtTransactionalCacheAdapter.java | 7 ++
.../distributed/dht/GridDhtTxLocalAdapter.java | 8 +-
.../dht/GridPartitionedGetFuture.java | 1 +
.../dht/GridPartitionedSingleGetFuture.java | 2 +
.../dht/atomic/GridDhtAtomicCache.java | 3 +-
.../dht/colocated/GridDhtColocatedCache.java | 10 ++
.../colocated/GridDhtColocatedLockFuture.java | 10 +-
.../distributed/near/GridNearAtomicCache.java | 1 +
.../distributed/near/GridNearGetFuture.java | 1 +
.../distributed/near/GridNearGetRequest.java | 77 +++++++++-----
.../distributed/near/GridNearLockFuture.java | 7 ++
.../distributed/near/GridNearLockRequest.java | 81 ++++++++++-----
.../near/GridNearSingleGetRequest.java | 57 ++++++++---
.../near/GridNearTransactionalCache.java | 2 +
.../cache/distributed/near/GridNearTxLocal.java | 17 +++-
.../processors/cache/local/GridLocalCache.java | 1 +
.../local/atomic/GridLocalAtomicCache.java | 1 +
.../transactions/IgniteTxLocalAdapter.java | 37 +++++--
.../cache/transactions/IgniteTxLocalEx.java | 3 +
.../processors/cache/GridCacheTestEntryEx.java | 3 +-
...eCacheExpiryPolicyWithStoreAbstractTest.java | 102 +++++++++++++++++++
.../IgniteCacheTxExpiryPolicyWithStoreTest.java | 21 ++++
28 files changed, 432 insertions(+), 109 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/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 59665bb..dc8f030 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
@@ -528,6 +528,7 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
* @param retval Flag to return value.
* @param isolation Transaction isolation.
* @param invalidate Invalidate flag.
+ * @param createTtl TTL for create operation.
* @param accessTtl TTL for read operation.
* @return Locks future.
*/
@@ -539,6 +540,7 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
boolean retval,
TransactionIsolation isolation,
boolean invalidate,
+ long createTtl,
long accessTtl);
/**
@@ -1873,7 +1875,7 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
@Nullable final UUID subjId,
final String taskName,
final boolean deserializeBinary,
- @Nullable IgniteCacheExpiryPolicy expiry,
+ @Nullable final IgniteCacheExpiryPolicy expiry,
final boolean skipVals,
final boolean keepCacheObjects,
boolean canRemap,
@@ -2027,7 +2029,8 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
cacheVal,
res.version(),
null,
- readerArgs);
+ readerArgs,
+ expiry);
if (log.isDebugEnabled())
log.debug("Set value loaded from store into entry [" +
@@ -5936,28 +5939,28 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
}
/**
- * @param ttl Access TTL.
+ * @param createTtl Create TTL.
+ * @param accessTtl Access TTL.
* @return Access expire policy.
*/
- @Nullable public static CacheExpiryPolicy forAccess(final long ttl) {
- if (ttl == CU.TTL_NOT_CHANGED)
+ @Nullable public static CacheExpiryPolicy fromRemote(final long createTtl, final long accessTtl) {
+ if (createTtl == CU.TTL_NOT_CHANGED && accessTtl == CU.TTL_NOT_CHANGED)
return null;
return new CacheExpiryPolicy() {
- @Override public long forAccess() {
- return ttl;
+ @Override public long forCreate() {
+ return createTtl;
}
- };
- }
- /** {@inheritDoc} */
- @Override public long forCreate() {
- return CU.TTL_NOT_CHANGED;
- }
+ @Override public long forAccess() {
+ return accessTtl;
+ }
- /** {@inheritDoc} */
- @Override public long forUpdate() {
- return CU.TTL_NOT_CHANGED;
+ /** {@inheritDoc} */
+ @Override public long forUpdate() {
+ return CU.TTL_NOT_CHANGED;
+ }
+ };
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
index 51f423a..3c42d53 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
@@ -756,6 +756,7 @@ public interface GridCacheEntryEx {
* @param curVer Version to match or {@code null} if match is not required.
* @param newVer Version to set.
* @param readerArgs Reader will be added if not null.
+ * @param loadExpiryPlc Expiry policy if entry is loaded from store.
* @return Current version and value.
* @throws IgniteCheckedException If index could not be updated.
* @throws GridCacheEntryRemovedException If entry was removed.
@@ -763,7 +764,8 @@ public interface GridCacheEntryEx {
public T2<CacheObject, GridCacheVersion> versionedValue(CacheObject val,
@Nullable GridCacheVersion curVer,
@Nullable GridCacheVersion newVer,
- @Nullable ReaderArguments readerArgs)
+ @Nullable ReaderArguments readerArgs,
+ @Nullable IgniteCacheExpiryPolicy loadExpiryPlc)
throws IgniteCheckedException, GridCacheEntryRemovedException;
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/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 59e4181..7e26719 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
@@ -3624,7 +3624,8 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
@Override public synchronized T2<CacheObject, GridCacheVersion> versionedValue(CacheObject val,
GridCacheVersion curVer,
GridCacheVersion newVer,
- @Nullable ReaderArguments readerArgs)
+ @Nullable ReaderArguments readerArgs,
+ @Nullable IgniteCacheExpiryPolicy loadExpiryPlc)
throws IgniteCheckedException, GridCacheEntryRemovedException
{
checkObsolete();
@@ -3643,9 +3644,19 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
CacheObject old = rawGetOrUnmarshalUnlocked(false);
- long ttl = ttlExtras();
+ long ttl;
+ long expTime;
- long expTime = CU.toExpireTime(ttl);
+ if (loadExpiryPlc != null) {
+ IgniteBiTuple<Long, Long> initTtlAndExpireTime = initialTtlAndExpireTime(loadExpiryPlc);
+
+ ttl = initTtlAndExpireTime.get1();
+ expTime = initTtlAndExpireTime.get2();
+ }
+ else {
+ ttl = ttlExtras();
+ expTime = expireTimeExtras();
+ }
// Detach value before index update.
val = cctx.kernalContext().cacheObjects().prepareForCache(val, cctx);
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
index 03f6474..d89a468 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
@@ -102,11 +102,12 @@ public abstract class GridDistributedCacheAdapter<K, V> extends GridCacheAdapter
boolean retval,
TransactionIsolation isolation,
boolean isInvalidate,
+ long createTtl,
long accessTtl
) {
assert tx != null;
- return lockAllAsync(keys, timeout, tx, isInvalidate, isRead, retval, isolation, accessTtl);
+ return lockAllAsync(keys, timeout, tx, isInvalidate, isRead, retval, isolation, createTtl, accessTtl);
}
/** {@inheritDoc} */
@@ -121,6 +122,7 @@ public abstract class GridDistributedCacheAdapter<K, V> extends GridCacheAdapter
false,
/*retval*/true,
null,
+ -1L,
-1L);
}
@@ -132,6 +134,7 @@ public abstract class GridDistributedCacheAdapter<K, V> extends GridCacheAdapter
* @param isRead Indicates whether value is read or written.
* @param retval Flag to return value.
* @param isolation Transaction isolation.
+ * @param createTtl TTL for create operation.
* @param accessTtl TTL for read operation.
* @return Future for locks.
*/
@@ -142,6 +145,7 @@ public abstract class GridDistributedCacheAdapter<K, V> extends GridCacheAdapter
boolean isRead,
boolean retval,
@Nullable TransactionIsolation isolation,
+ long createTtl,
long accessTtl);
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
index 543cee1..bc34df7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
@@ -760,7 +760,7 @@ public abstract class GridDhtCacheAdapter<K, V> extends GridDistributedCacheAdap
protected void processNearSingleGetRequest(final UUID nodeId, final GridNearSingleGetRequest req) {
assert ctx.affinityNode();
- final CacheExpiryPolicy expiryPlc = CacheExpiryPolicy.forAccess(req.accessTtl());
+ final CacheExpiryPolicy expiryPlc = CacheExpiryPolicy.fromRemote(req.createTtl(), req.accessTtl());
IgniteInternalFuture<GridCacheEntryInfo> fut =
getDhtSingleAsync(
@@ -860,9 +860,7 @@ public abstract class GridDhtCacheAdapter<K, V> extends GridDistributedCacheAdap
assert ctx.affinityNode();
assert !req.reload() : req;
- long ttl = req.accessTtl();
-
- final CacheExpiryPolicy expiryPlc = CacheExpiryPolicy.forAccess(ttl);
+ final CacheExpiryPolicy expiryPlc = CacheExpiryPolicy.fromRemote(req.createTtl(), req.accessTtl());
IgniteInternalFuture<Collection<GridCacheEntryInfo>> fut =
getDhtAsync(nodeId,
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
index d77933e..686a4c6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
@@ -156,6 +156,9 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
/** Pending locks. */
private final Collection<KeyCacheObject> pendingLocks;
+ /** TTL for create operation. */
+ private long createTtl;
+
/** TTL for read operation. */
private long accessTtl;
@@ -194,6 +197,7 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
long timeout,
GridDhtTxLocalAdapter tx,
long threadId,
+ long createTtl,
long accessTtl,
CacheEntryPredicate[] filter,
boolean skipStore,
@@ -214,6 +218,7 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
this.timeout = timeout;
this.filter = filter;
this.tx = tx;
+ this.createTtl = createTtl;
this.accessTtl = accessTtl;
this.skipStore = skipStore;
this.keepBinary = keepBinary;
@@ -1059,10 +1064,22 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
try {
CacheObject val0 = cctx.toCacheObject(val);
+ long ttl = createTtl;
+ long expireTime;
+
+ if (ttl == CU.TTL_ZERO)
+ expireTime = CU.expireTimeInPast();
+ else {
+ if (ttl == CU.TTL_NOT_CHANGED)
+ ttl = CU.TTL_ETERNAL;
+
+ expireTime = CU.toExpireTime(ttl);
+ }
+
entry0.initialValue(val0,
ver,
- 0,
- 0,
+ ttl,
+ expireTime,
false,
topVer,
GridDrType.DR_LOAD,
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
index 01bc4e0..a9e3bc4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
@@ -677,6 +677,7 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
boolean isRead,
boolean retval,
TransactionIsolation isolation,
+ long createTtl,
long accessTtl) {
CacheOperationContext opCtx = ctx.operationContextPerCall();
@@ -688,6 +689,7 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
isRead,
retval,
isolation,
+ createTtl,
accessTtl,
CU.empty0(),
opCtx != null && opCtx.skipStore(),
@@ -704,6 +706,7 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
* @param isRead Read flag.
* @param retval Return value flag.
* @param isolation Transaction isolation.
+ * @param createTtl TTL for create operation.
* @param accessTtl TTL for read operation.
* @param filter Optional filter.
* @param skipStore Skip store flag.
@@ -716,6 +719,7 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
boolean isRead,
boolean retval,
TransactionIsolation isolation,
+ long createTtl,
long accessTtl,
CacheEntryPredicate[] filter,
boolean skipStore,
@@ -738,6 +742,7 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
timeout,
tx,
tx.threadId(),
+ createTtl,
accessTtl,
filter,
skipStore,
@@ -859,6 +864,7 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
req.timeout(),
tx,
req.threadId(),
+ req.createTtl(),
req.accessTtl(),
filter,
req.skipStore(),
@@ -1007,6 +1013,7 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
req.messageId(),
req.txRead(),
req.needReturnValue(),
+ req.createTtl(),
req.accessTtl(),
req.skipStore(),
req.keepBinary());
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
index 35dfb62..12a45d8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
@@ -148,7 +148,7 @@ public abstract class GridDhtTxLocalAdapter extends IgniteTxLocalAdapter {
storeEnabled,
onePhaseCommit,
txSize,
- subjId,
+ subjId,
taskNameHash
);
@@ -534,6 +534,7 @@ public abstract class GridDhtTxLocalAdapter extends IgniteTxLocalAdapter {
* @param entries Entries to lock.
* @param msgId Message ID.
* @param read Read flag.
+ * @param createTtl TTL for create operation.
* @param accessTtl TTL for read operation.
* @param needRetVal Return value flag.
* @param skipStore Skip store flag.
@@ -546,6 +547,7 @@ public abstract class GridDhtTxLocalAdapter extends IgniteTxLocalAdapter {
long msgId,
final boolean read,
final boolean needRetVal,
+ long createTtl,
long accessTtl,
boolean skipStore,
boolean keepBinary
@@ -652,6 +654,7 @@ public abstract class GridDhtTxLocalAdapter extends IgniteTxLocalAdapter {
passedKeys,
read,
needRetVal,
+ createTtl,
accessTtl,
null,
skipStore,
@@ -670,6 +673,7 @@ public abstract class GridDhtTxLocalAdapter extends IgniteTxLocalAdapter {
* @param passedKeys Passed keys.
* @param read {@code True} if read.
* @param needRetVal Return value flag.
+ * @param createTtl TTL for create operation.
* @param accessTtl TTL for read operation.
* @param filter Entry write filter.
* @param skipStore Skip store flag.
@@ -681,6 +685,7 @@ public abstract class GridDhtTxLocalAdapter extends IgniteTxLocalAdapter {
final Collection<KeyCacheObject> passedKeys,
final boolean read,
final boolean needRetVal,
+ final long createTtl,
final long accessTtl,
@Nullable final CacheEntryPredicate[] filter,
boolean skipStore,
@@ -706,6 +711,7 @@ public abstract class GridDhtTxLocalAdapter extends IgniteTxLocalAdapter {
read,
needRetVal,
isolation,
+ createTtl,
accessTtl,
CU.empty0(),
skipStore,
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
index c8e2cf3..5892b37 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
@@ -341,6 +341,7 @@ public class GridPartitionedGetFuture<K, V> extends CacheDistributedGetFutureAda
topVer,
subjId,
taskName == null ? 0 : taskName.hashCode(),
+ expiryPlc != null ? expiryPlc.forCreate() : -1L,
expiryPlc != null ? expiryPlc.forAccess() : -1L,
skipVals,
cctx.deploymentEnabled());
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
index e369bfa..7c14f35 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
@@ -281,6 +281,7 @@ public class GridPartitionedSingleGetFuture extends GridFutureAdapter<Object> im
topVer,
subjId,
taskName == null ? 0 : taskName.hashCode(),
+ expiryPlc != null ? expiryPlc.forCreate() : -1L,
expiryPlc != null ? expiryPlc.forAccess() : -1L,
skipVals,
/**add reader*/false,
@@ -300,6 +301,7 @@ public class GridPartitionedSingleGetFuture extends GridFutureAdapter<Object> im
topVer,
subjId,
taskName == null ? 0 : taskName.hashCode(),
+ expiryPlc != null ? expiryPlc.forCreate() : -1L,
expiryPlc != null ? expiryPlc.forAccess() : -1L,
skipVals,
cctx.deploymentEnabled());
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
index f601e0a..2f97bcc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
@@ -863,6 +863,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
boolean isRead,
boolean retval,
@Nullable TransactionIsolation isolation,
+ long createTtl,
long accessTtl) {
return new FinishedLockFuture(new UnsupportedOperationException("Locks are not supported for " +
"CacheAtomicityMode.ATOMIC mode (use CacheAtomicityMode.TRANSACTIONAL instead)"));
@@ -2293,7 +2294,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
try {
GridCacheVersion ver = entry.version();
- entry.versionedValue(ctx.toCacheObject(v), null, ver, null);
+ entry.versionedValue(ctx.toCacheObject(v), null, ver, null, null);
}
catch (GridCacheEntryRemovedException e) {
assert false : "Entry should not get obsolete while holding lock [entry=" + entry +
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
index 29f0607..5ed30db 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
@@ -615,6 +615,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
boolean isRead,
boolean retval,
@Nullable TransactionIsolation isolation,
+ long createTtl,
long accessTtl
) {
assert tx == null || tx instanceof GridNearTxLocal : tx;
@@ -629,6 +630,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
isRead,
retval,
timeout,
+ createTtl,
accessTtl,
CU.empty0(),
opCtx != null && opCtx.skipStore(),
@@ -876,6 +878,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
* @param txRead Tx read.
* @param retval Return value flag.
* @param timeout Lock timeout.
+ * @param createTtl TTL for create operation.
* @param accessTtl TTL for read operation.
* @param filter filter Optional filter.
* @param skipStore Skip store flag.
@@ -891,6 +894,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
final boolean txRead,
final boolean retval,
final long timeout,
+ final long createTtl,
final long accessTtl,
@Nullable final CacheEntryPredicate[] filter,
final boolean skipStore,
@@ -915,6 +919,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
txRead,
retval,
timeout,
+ createTtl,
accessTtl,
filter,
skipStore,
@@ -936,6 +941,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
txRead,
retval,
timeout,
+ createTtl,
accessTtl,
filter,
skipStore,
@@ -956,6 +962,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
* @param txRead Tx read.
* @param retval Return value flag.
* @param timeout Lock timeout.
+ * @param createTtl TTL for create operation.
* @param accessTtl TTL for read operation.
* @param filter filter Optional filter.
* @param skipStore Skip store flag.
@@ -971,6 +978,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
final boolean txRead,
boolean retval,
final long timeout,
+ final long createTtl,
final long accessTtl,
@Nullable final CacheEntryPredicate[] filter,
boolean skipStore,
@@ -988,6 +996,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
timeout,
tx,
threadId,
+ createTtl,
accessTtl,
filter,
skipStore,
@@ -1056,6 +1065,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
keys,
retval,
txRead,
+ createTtl,
accessTtl,
skipStore,
keepBinary);
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
index 5557d34..40e87ee 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
@@ -145,6 +145,9 @@ public final class GridDhtColocatedLockFuture extends GridCompoundIdentityFuture
/** Trackable flag (here may be non-volatile). */
private boolean trackable;
+ /** TTL for create operation. */
+ private final long createTtl;
+
/** TTL for read operation. */
private final long accessTtl;
@@ -164,6 +167,7 @@ public final class GridDhtColocatedLockFuture extends GridCompoundIdentityFuture
* @param read Read flag.
* @param retval Flag to return value or not.
* @param timeout Lock acquisition timeout.
+ * @param createTtl TTL for create operation.
* @param accessTtl TTL for read operation.
* @param filter Filter.
* @param skipStore Skip store flag.
@@ -175,6 +179,7 @@ public final class GridDhtColocatedLockFuture extends GridCompoundIdentityFuture
boolean read,
boolean retval,
long timeout,
+ long createTtl,
long accessTtl,
CacheEntryPredicate[] filter,
boolean skipStore,
@@ -189,6 +194,7 @@ public final class GridDhtColocatedLockFuture extends GridCompoundIdentityFuture
this.read = read;
this.retval = retval;
this.timeout = timeout;
+ this.createTtl = createTtl;
this.accessTtl = accessTtl;
this.filter = filter;
this.skipStore = skipStore;
@@ -926,6 +932,7 @@ public final class GridDhtColocatedLockFuture extends GridCompoundIdentityFuture
inTx() && tx.syncMode() == FULL_SYNC,
inTx() ? tx.subjectId() : null,
inTx() ? tx.taskNameHash() : 0,
+ read ? createTtl : -1L,
read ? accessTtl : -1L,
skipStore,
keepBinary,
@@ -1102,7 +1109,7 @@ public final class GridDhtColocatedLockFuture extends GridCompoundIdentityFuture
/**
* Locks given keys directly through dht cache.
- * @param keys Collection of keys.
+ * @param keys Collection of keys.
* @param topVer Topology version to lock on.
*/
private void lockLocally(
@@ -1121,6 +1128,7 @@ public final class GridDhtColocatedLockFuture extends GridCompoundIdentityFuture
read,
retval,
timeout,
+ createTtl,
accessTtl,
filter,
skipStore,
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
index a8219b0..d1056fd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
@@ -641,6 +641,7 @@ public class GridNearAtomicCache<K, V> extends GridNearCacheAdapter<K, V> {
boolean isRead,
boolean retval,
@Nullable TransactionIsolation isolation,
+ long createTtl,
long accessTtl) {
return dht.lockAllAsync(null, timeout);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
index 8bc513e..8c64e3e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
@@ -375,6 +375,7 @@ public final class GridNearGetFuture<K, V> extends CacheDistributedGetFutureAdap
topVer,
subjId,
taskName == null ? 0 : taskName.hashCode(),
+ expiryPlc != null ? expiryPlc.forCreate() : -1L,
expiryPlc != null ? expiryPlc.forAccess() : -1L,
skipVals,
cctx.deploymentEnabled());
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetRequest.java
index fa7f367..e02658c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetRequest.java
@@ -100,6 +100,9 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
private int taskNameHash;
/** TTL for read operation. */
+ private long createTtl;
+
+ /** TTL for read operation. */
private long accessTtl;
/**
@@ -121,6 +124,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
* @param topVer Topology version.
* @param subjId Subject ID.
* @param taskNameHash Task name hash.
+ * @param createTtl New TTL to set after entry is created, -1 to leave unchanged.
* @param accessTtl New TTL to set after entry is accessed, -1 to leave unchanged.
* @param addDepInfo Deployment info.
*/
@@ -134,6 +138,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
@NotNull AffinityTopologyVersion topVer,
UUID subjId,
int taskNameHash,
+ long createTtl,
long accessTtl,
boolean skipVals,
boolean addDepInfo
@@ -161,6 +166,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
this.topVer = topVer;
this.subjId = subjId;
this.taskNameHash = taskNameHash;
+ this.createTtl = createTtl;
this.accessTtl = accessTtl;
this.skipVals = skipVals;
this.addDepInfo = addDepInfo;
@@ -238,6 +244,13 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
}
/**
+ * @return New TTL to set after entry is created, -1 to leave unchanged.
+ */
+ public long createTtl() {
+ return createTtl;
+ }
+
+ /**
* @return New TTL to set after entry is accessed, -1 to leave unchanged.
*/
public long accessTtl() {
@@ -320,73 +333,79 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
writer.incrementState();
case 4:
- if (!writer.writeCollection("flags", flags, MessageCollectionItemType.BOOLEAN))
+ if (!writer.writeLong("createTtl", createTtl))
return false;
writer.incrementState();
case 5:
- if (!writer.writeIgniteUuid("futId", futId))
+ if (!writer.writeCollection("flags", flags, MessageCollectionItemType.BOOLEAN))
return false;
writer.incrementState();
case 6:
- if (!writer.writeCollection("keys", keys, MessageCollectionItemType.MSG))
+ if (!writer.writeIgniteUuid("futId", futId))
return false;
writer.incrementState();
case 7:
- if (!writer.writeIgniteUuid("miniId", miniId))
+ if (!writer.writeCollection("keys", keys, MessageCollectionItemType.MSG))
return false;
writer.incrementState();
case 8:
- if (!writer.writeBoolean("readThrough", readThrough))
+ if (!writer.writeIgniteUuid("miniId", miniId))
return false;
writer.incrementState();
case 9:
- if (!writer.writeBoolean("reload", reload))
+ if (!writer.writeCollection("partIds", partIds, MessageCollectionItemType.INT))
return false;
writer.incrementState();
case 10:
- if (!writer.writeBoolean("skipVals", skipVals))
+ if (!writer.writeBoolean("readThrough", readThrough))
return false;
writer.incrementState();
case 11:
- if (!writer.writeUuid("subjId", subjId))
+ if (!writer.writeBoolean("reload", reload))
return false;
writer.incrementState();
case 12:
- if (!writer.writeInt("taskNameHash", taskNameHash))
+ if (!writer.writeBoolean("skipVals", skipVals))
return false;
writer.incrementState();
case 13:
- if (!writer.writeMessage("topVer", topVer))
+ if (!writer.writeUuid("subjId", subjId))
return false;
writer.incrementState();
case 14:
- if (!writer.writeMessage("ver", ver))
+ if (!writer.writeInt("taskNameHash", taskNameHash))
return false;
writer.incrementState();
case 15:
- if (!writer.writeCollection("partIds", partIds, MessageCollectionItemType.INT))
+ if (!writer.writeMessage("topVer", topVer))
+ return false;
+
+ writer.incrementState();
+
+ case 16:
+ if (!writer.writeMessage("ver", ver))
return false;
writer.incrementState();
@@ -416,7 +435,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
reader.incrementState();
case 4:
- flags = reader.readCollection("flags", MessageCollectionItemType.BOOLEAN);
+ createTtl = reader.readLong("createTtl");
if (!reader.isLastRead())
return false;
@@ -424,7 +443,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
reader.incrementState();
case 5:
- futId = reader.readIgniteUuid("futId");
+ flags = reader.readCollection("flags", MessageCollectionItemType.BOOLEAN);
if (!reader.isLastRead())
return false;
@@ -432,7 +451,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
reader.incrementState();
case 6:
- keys = reader.readCollection("keys", MessageCollectionItemType.MSG);
+ futId = reader.readIgniteUuid("futId");
if (!reader.isLastRead())
return false;
@@ -440,7 +459,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
reader.incrementState();
case 7:
- miniId = reader.readIgniteUuid("miniId");
+ keys = reader.readCollection("keys", MessageCollectionItemType.MSG);
if (!reader.isLastRead())
return false;
@@ -448,7 +467,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
reader.incrementState();
case 8:
- readThrough = reader.readBoolean("readThrough");
+ miniId = reader.readIgniteUuid("miniId");
if (!reader.isLastRead())
return false;
@@ -456,7 +475,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
reader.incrementState();
case 9:
- reload = reader.readBoolean("reload");
+ partIds = reader.readCollection("partIds", MessageCollectionItemType.INT);
if (!reader.isLastRead())
return false;
@@ -464,7 +483,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
reader.incrementState();
case 10:
- skipVals = reader.readBoolean("skipVals");
+ readThrough = reader.readBoolean("readThrough");
if (!reader.isLastRead())
return false;
@@ -472,7 +491,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
reader.incrementState();
case 11:
- subjId = reader.readUuid("subjId");
+ reload = reader.readBoolean("reload");
if (!reader.isLastRead())
return false;
@@ -480,7 +499,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
reader.incrementState();
case 12:
- taskNameHash = reader.readInt("taskNameHash");
+ skipVals = reader.readBoolean("skipVals");
if (!reader.isLastRead())
return false;
@@ -488,7 +507,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
reader.incrementState();
case 13:
- topVer = reader.readMessage("topVer");
+ subjId = reader.readUuid("subjId");
if (!reader.isLastRead())
return false;
@@ -496,7 +515,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
reader.incrementState();
case 14:
- ver = reader.readMessage("ver");
+ taskNameHash = reader.readInt("taskNameHash");
if (!reader.isLastRead())
return false;
@@ -504,7 +523,15 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
reader.incrementState();
case 15:
- partIds = reader.readCollection("partIds", MessageCollectionItemType.INT);
+ topVer = reader.readMessage("topVer");
+
+ if (!reader.isLastRead())
+ return false;
+
+ reader.incrementState();
+
+ case 16:
+ ver = reader.readMessage("ver");
if (!reader.isLastRead())
return false;
@@ -523,7 +550,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
/** {@inheritDoc} */
@Override public byte fieldsCount() {
- return 16;
+ return 17;
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
index 7c98602..491b4ec 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
@@ -148,6 +148,9 @@ public final class GridNearLockFuture extends GridCompoundIdentityFuture<Boolean
@GridToStringExclude
private List<GridDistributedCacheEntry> entries;
+ /** TTL for create operation. */
+ private long createTtl;
+
/** TTL for read operation. */
private long accessTtl;
@@ -168,6 +171,7 @@ public final class GridNearLockFuture extends GridCompoundIdentityFuture<Boolean
* @param read Read flag.
* @param retval Flag to return value or not.
* @param timeout Lock acquisition timeout.
+ * @param createTtl TTL for create operation.
* @param accessTtl TTL for read operation.
* @param filter Filter.
* @param skipStore skipStore
@@ -180,6 +184,7 @@ public final class GridNearLockFuture extends GridCompoundIdentityFuture<Boolean
boolean read,
boolean retval,
long timeout,
+ long createTtl,
long accessTtl,
CacheEntryPredicate[] filter,
boolean skipStore,
@@ -195,6 +200,7 @@ public final class GridNearLockFuture extends GridCompoundIdentityFuture<Boolean
this.read = read;
this.retval = retval;
this.timeout = timeout;
+ this.createTtl = createTtl;
this.accessTtl = accessTtl;
this.filter = filter;
this.skipStore = skipStore;
@@ -1054,6 +1060,7 @@ public final class GridNearLockFuture extends GridCompoundIdentityFuture<Boolean
inTx() && tx.syncMode() == FULL_SYNC,
inTx() ? tx.subjectId() : null,
inTx() ? tx.taskNameHash() : 0,
+ read ? createTtl : -1L,
read ? accessTtl : -1L,
skipStore,
keepBinary,
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java
index 2e8cd6e..9e12153 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java
@@ -80,6 +80,9 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
/** Sync commit flag. */
private boolean syncCommit;
+ /** TTL for create operation. */
+ private long createTtl;
+
/** TTL for read operation. */
private long accessTtl;
@@ -116,6 +119,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
* @param syncCommit Synchronous commit flag.
* @param subjId Subject ID.
* @param taskNameHash Task name hash code.
+ * @param createTtl TTL for create operation.
* @param accessTtl TTL for read operation.
* @param skipStore Skip store flag.
* @param firstClientReq {@code True} if first lock request for lock operation sent from client node.
@@ -141,6 +145,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
boolean syncCommit,
@Nullable UUID subjId,
int taskNameHash,
+ long createTtl,
long accessTtl,
boolean skipStore,
boolean keepBinary,
@@ -174,6 +179,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
this.syncCommit = syncCommit;
this.subjId = subjId;
this.taskNameHash = taskNameHash;
+ this.createTtl = createTtl;
this.accessTtl = accessTtl;
this.retVal = retVal;
this.firstClientReq = firstClientReq;
@@ -312,6 +318,13 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
}
/**
+ * @return New TTL to set after entry is created, -1 to leave unchanged.
+ */
+ public long createTtl() {
+ return createTtl;
+ }
+
+ /**
* @return TTL for read operation.
*/
public long accessTtl() {
@@ -368,84 +381,90 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
writer.incrementState();
case 21:
- if (!writer.writeObjectArray("dhtVers", dhtVers, MessageCollectionItemType.MSG))
+ if (!writer.writeLong("createTtl", createTtl))
return false;
writer.incrementState();
case 22:
- if (!writer.writeObjectArray("filter", filter, MessageCollectionItemType.MSG))
+ if (!writer.writeObjectArray("dhtVers", dhtVers, MessageCollectionItemType.MSG))
return false;
writer.incrementState();
case 23:
- if (!writer.writeBoolean("firstClientReq", firstClientReq))
+ if (!writer.writeObjectArray("filter", filter, MessageCollectionItemType.MSG))
return false;
writer.incrementState();
case 24:
- if (!writer.writeBoolean("hasTransforms", hasTransforms))
+ if (!writer.writeBoolean("firstClientReq", firstClientReq))
return false;
writer.incrementState();
case 25:
- if (!writer.writeBoolean("implicitSingleTx", implicitSingleTx))
+ if (!writer.writeBoolean("hasTransforms", hasTransforms))
return false;
writer.incrementState();
case 26:
- if (!writer.writeBoolean("implicitTx", implicitTx))
+ if (!writer.writeBoolean("implicitSingleTx", implicitSingleTx))
return false;
writer.incrementState();
case 27:
- if (!writer.writeIgniteUuid("miniId", miniId))
+ if (!writer.writeBoolean("implicitTx", implicitTx))
return false;
writer.incrementState();
case 28:
- if (!writer.writeBoolean("onePhaseCommit", onePhaseCommit))
+ if (!writer.writeIgniteUuid("miniId", miniId))
return false;
writer.incrementState();
case 29:
- if (!writer.writeBoolean("retVal", retVal))
+ if (!writer.writeBoolean("onePhaseCommit", onePhaseCommit))
return false;
writer.incrementState();
case 30:
- if (!writer.writeUuid("subjId", subjId))
+ if (!writer.writeBoolean("retVal", retVal))
return false;
writer.incrementState();
case 31:
- if (!writer.writeBoolean("syncCommit", syncCommit))
+ if (!writer.writeUuid("subjId", subjId))
return false;
writer.incrementState();
case 32:
- if (!writer.writeInt("taskNameHash", taskNameHash))
+ if (!writer.writeBoolean("syncCommit", syncCommit))
return false;
writer.incrementState();
case 33:
- if (!writer.writeMessage("topVer", topVer))
+ if (!writer.writeInt("taskNameHash", taskNameHash))
return false;
writer.incrementState();
case 34:
+ if (!writer.writeMessage("topVer", topVer))
+ return false;
+
+ writer.incrementState();
+
+ case 35:
if (!writer.writeCollection("partIds", partIds, MessageCollectionItemType.INT))
return false;
@@ -476,7 +495,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
reader.incrementState();
case 21:
- dhtVers = reader.readObjectArray("dhtVers", MessageCollectionItemType.MSG, GridCacheVersion.class);
+ createTtl = reader.readLong("createTtl");
if (!reader.isLastRead())
return false;
@@ -484,7 +503,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
reader.incrementState();
case 22:
- filter = reader.readObjectArray("filter", MessageCollectionItemType.MSG, CacheEntryPredicate.class);
+ dhtVers = reader.readObjectArray("dhtVers", MessageCollectionItemType.MSG, GridCacheVersion.class);
if (!reader.isLastRead())
return false;
@@ -492,7 +511,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
reader.incrementState();
case 23:
- firstClientReq = reader.readBoolean("firstClientReq");
+ filter = reader.readObjectArray("filter", MessageCollectionItemType.MSG, CacheEntryPredicate.class);
if (!reader.isLastRead())
return false;
@@ -500,7 +519,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
reader.incrementState();
case 24:
- hasTransforms = reader.readBoolean("hasTransforms");
+ firstClientReq = reader.readBoolean("firstClientReq");
if (!reader.isLastRead())
return false;
@@ -508,7 +527,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
reader.incrementState();
case 25:
- implicitSingleTx = reader.readBoolean("implicitSingleTx");
+ hasTransforms = reader.readBoolean("hasTransforms");
if (!reader.isLastRead())
return false;
@@ -516,7 +535,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
reader.incrementState();
case 26:
- implicitTx = reader.readBoolean("implicitTx");
+ implicitSingleTx = reader.readBoolean("implicitSingleTx");
if (!reader.isLastRead())
return false;
@@ -524,7 +543,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
reader.incrementState();
case 27:
- miniId = reader.readIgniteUuid("miniId");
+ implicitTx = reader.readBoolean("implicitTx");
if (!reader.isLastRead())
return false;
@@ -532,7 +551,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
reader.incrementState();
case 28:
- onePhaseCommit = reader.readBoolean("onePhaseCommit");
+ miniId = reader.readIgniteUuid("miniId");
if (!reader.isLastRead())
return false;
@@ -540,7 +559,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
reader.incrementState();
case 29:
- retVal = reader.readBoolean("retVal");
+ onePhaseCommit = reader.readBoolean("onePhaseCommit");
if (!reader.isLastRead())
return false;
@@ -548,7 +567,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
reader.incrementState();
case 30:
- subjId = reader.readUuid("subjId");
+ retVal = reader.readBoolean("retVal");
if (!reader.isLastRead())
return false;
@@ -556,7 +575,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
reader.incrementState();
case 31:
- syncCommit = reader.readBoolean("syncCommit");
+ subjId = reader.readUuid("subjId");
if (!reader.isLastRead())
return false;
@@ -564,7 +583,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
reader.incrementState();
case 32:
- taskNameHash = reader.readInt("taskNameHash");
+ syncCommit = reader.readBoolean("syncCommit");
if (!reader.isLastRead())
return false;
@@ -572,7 +591,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
reader.incrementState();
case 33:
- topVer = reader.readMessage("topVer");
+ taskNameHash = reader.readInt("taskNameHash");
if (!reader.isLastRead())
return false;
@@ -580,6 +599,14 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
reader.incrementState();
case 34:
+ topVer = reader.readMessage("topVer");
+
+ if (!reader.isLastRead())
+ return false;
+
+ reader.incrementState();
+
+ case 35:
partIds = reader.readCollection("partIds", MessageCollectionItemType.INT);
if (!reader.isLastRead())
@@ -599,7 +626,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
/** {@inheritDoc} */
@Override public byte fieldsCount() {
- return 35;
+ return 36;
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearSingleGetRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearSingleGetRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearSingleGetRequest.java
index 7fc2b1e..8fe33d8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearSingleGetRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearSingleGetRequest.java
@@ -80,6 +80,9 @@ public class GridNearSingleGetRequest extends GridCacheMessage implements GridCa
private int taskNameHash;
/** TTL for read operation. */
+ private long createTtl;
+
+ /** TTL for read operation. */
private long accessTtl;
/**
@@ -99,6 +102,7 @@ public class GridNearSingleGetRequest extends GridCacheMessage implements GridCa
* @param topVer Topology version.
* @param subjId Subject ID.
* @param taskNameHash Task name hash.
+ * @param createTtl New TTL to set after entry is created, -1 to leave unchanged.
* @param accessTtl New TTL to set after entry is accessed, -1 to leave unchanged.
* @param addReader Add reader flag.
* @param needVer {@code True} if entry version is needed.
@@ -112,6 +116,7 @@ public class GridNearSingleGetRequest extends GridCacheMessage implements GridCa
@NotNull AffinityTopologyVersion topVer,
UUID subjId,
int taskNameHash,
+ long createTtl,
long accessTtl,
boolean skipVals,
boolean addReader,
@@ -127,6 +132,7 @@ public class GridNearSingleGetRequest extends GridCacheMessage implements GridCa
this.topVer = topVer;
this.subjId = subjId;
this.taskNameHash = taskNameHash;
+ this.createTtl = createTtl;
this.accessTtl = accessTtl;
this.addDepInfo = addDepInfo;
@@ -181,6 +187,13 @@ public class GridNearSingleGetRequest extends GridCacheMessage implements GridCa
}
/**
+ * @return New TTL to set after entry is created, -1 to leave unchanged.
+ */
+ public long createTtl() {
+ return createTtl;
+ }
+
+ /**
* @return New TTL to set after entry is accessed, -1 to leave unchanged.
*/
public long accessTtl() {
@@ -266,7 +279,7 @@ public class GridNearSingleGetRequest extends GridCacheMessage implements GridCa
reader.incrementState();
case 4:
- flags = reader.readByte("flags");
+ createTtl = reader.readLong("createTtl");
if (!reader.isLastRead())
return false;
@@ -274,7 +287,7 @@ public class GridNearSingleGetRequest extends GridCacheMessage implements GridCa
reader.incrementState();
case 5:
- futId = reader.readLong("futId");
+ flags = reader.readByte("flags");
if (!reader.isLastRead())
return false;
@@ -282,7 +295,7 @@ public class GridNearSingleGetRequest extends GridCacheMessage implements GridCa
reader.incrementState();
case 6:
- key = reader.readMessage("key");
+ futId = reader.readLong("futId");
if (!reader.isLastRead())
return false;
@@ -290,7 +303,7 @@ public class GridNearSingleGetRequest extends GridCacheMessage implements GridCa
reader.incrementState();
case 7:
- subjId = reader.readUuid("subjId");
+ key = reader.readMessage("key");
if (!reader.isLastRead())
return false;
@@ -298,7 +311,7 @@ public class GridNearSingleGetRequest extends GridCacheMessage implements GridCa
reader.incrementState();
case 8:
- taskNameHash = reader.readInt("taskNameHash");
+ partId = reader.readInt("partId", -1);
if (!reader.isLastRead())
return false;
@@ -306,7 +319,7 @@ public class GridNearSingleGetRequest extends GridCacheMessage implements GridCa
reader.incrementState();
case 9:
- topVer = reader.readMessage("topVer");
+ subjId = reader.readUuid("subjId");
if (!reader.isLastRead())
return false;
@@ -314,7 +327,15 @@ public class GridNearSingleGetRequest extends GridCacheMessage implements GridCa
reader.incrementState();
case 10:
- partId = reader.readInt("partId", -1);
+ taskNameHash = reader.readInt("taskNameHash");
+
+ if (!reader.isLastRead())
+ return false;
+
+ reader.incrementState();
+
+ case 11:
+ topVer = reader.readMessage("topVer");
if (!reader.isLastRead())
return false;
@@ -348,43 +369,49 @@ public class GridNearSingleGetRequest extends GridCacheMessage implements GridCa
writer.incrementState();
case 4:
- if (!writer.writeByte("flags", flags))
+ if (!writer.writeLong("createTtl", createTtl))
return false;
writer.incrementState();
case 5:
- if (!writer.writeLong("futId", futId))
+ if (!writer.writeByte("flags", flags))
return false;
writer.incrementState();
case 6:
- if (!writer.writeMessage("key", key))
+ if (!writer.writeLong("futId", futId))
return false;
writer.incrementState();
case 7:
- if (!writer.writeUuid("subjId", subjId))
+ if (!writer.writeMessage("key", key))
return false;
writer.incrementState();
case 8:
- if (!writer.writeInt("taskNameHash", taskNameHash))
+ if (!writer.writeInt("partId", partId))
return false;
writer.incrementState();
case 9:
- if (!writer.writeMessage("topVer", topVer))
+ if (!writer.writeUuid("subjId", subjId))
return false;
writer.incrementState();
case 10:
- if (!writer.writeInt("partId", partId))
+ if (!writer.writeInt("taskNameHash", taskNameHash))
+ return false;
+
+ writer.incrementState();
+
+ case 11:
+ if (!writer.writeMessage("topVer", topVer))
return false;
writer.incrementState();
@@ -406,7 +433,7 @@ public class GridNearSingleGetRequest extends GridCacheMessage implements GridCa
/** {@inheritDoc} */
@Override public byte fieldsCount() {
- return 11;
+ return 12;
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
index 7ac3295..b3eb755 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
@@ -445,6 +445,7 @@ public class GridNearTransactionalCache<K, V> extends GridNearCacheAdapter<K, V>
boolean isRead,
boolean retval,
TransactionIsolation isolation,
+ long createTtl,
long accessTtl
) {
CacheOperationContext opCtx = ctx.operationContextPerCall();
@@ -455,6 +456,7 @@ public class GridNearTransactionalCache<K, V> extends GridNearCacheAdapter<K, V>
isRead,
retval,
timeout,
+ createTtl,
accessTtl,
CU.empty0(),
opCtx != null && opCtx.skipStore(),
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
index ed37059..67518ef 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
@@ -329,15 +329,20 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter {
final boolean skipVals,
final boolean needVer,
boolean keepBinary,
+ final ExpiryPolicy expiryPlc,
final GridInClosure3<KeyCacheObject, Object, GridCacheVersion> c
) {
+ IgniteCacheExpiryPolicy expiryPlc0 = optimistic() ?
+ accessPolicy(cacheCtx, keys) :
+ cacheCtx.cache().expiryPolicy(expiryPlc);
+
if (cacheCtx.isNear()) {
return cacheCtx.nearTx().txLoadAsync(this,
topVer,
keys,
readThrough,
/*deserializeBinary*/false,
- accessPolicy(cacheCtx, keys),
+ expiryPlc0,
skipVals,
needVer).chain(new C1<IgniteInternalFuture<Map<Object, Object>>, Void>() {
@Override public Void apply(IgniteInternalFuture<Map<Object, Object>> f) {
@@ -368,7 +373,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter {
CU.subjectId(this, cctx),
resolveTaskName(),
/*deserializeBinary*/false,
- accessPolicy(cacheCtx, keys),
+ expiryPlc0,
skipVals,
/*can remap*/true,
needVer,
@@ -399,7 +404,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter {
CU.subjectId(this, cctx),
resolveTaskName(),
/*deserializeBinary*/false,
- accessPolicy(cacheCtx, keys),
+ expiryPlc0,
skipVals,
/*can remap*/true,
needVer,
@@ -433,6 +438,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter {
skipVals,
keepBinary,
needVer,
+ expiryPlc,
c);
}
}
@@ -1163,6 +1169,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter {
* @param keys Keys.
* @param retval Return value flag.
* @param read Read flag.
+ * @param accessTtl Create ttl.
* @param accessTtl Access ttl.
* @param <K> Key type.
* @param skipStore Skip store flag.
@@ -1173,6 +1180,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter {
final Collection<? extends K> keys,
boolean retval,
boolean read,
+ long createTtl,
long accessTtl,
boolean skipStore,
boolean keepBinary) {
@@ -1207,6 +1215,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter {
read,
retval,
isolation,
+ createTtl,
accessTtl,
CU.empty0(),
skipStore,
@@ -1305,6 +1314,8 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter {
/** {@inheritDoc} */
@Override protected IgniteCacheExpiryPolicy accessPolicy(GridCacheContext cacheCtx, Collection<KeyCacheObject> keys) {
+ assert optimistic();
+
if (accessMap != null) {
for (Map.Entry<IgniteTxKey, IgniteCacheExpiryPolicy> e : accessMap.entrySet()) {
if (e.getKey().cacheId() == cacheCtx.cacheId() && keys.contains(e.getKey().key()))
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCache.java
index 16a35d3..5b44d75 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCache.java
@@ -118,6 +118,7 @@ public class GridLocalCache<K, V> extends GridCacheAdapter<K, V> {
boolean retval,
TransactionIsolation isolation,
boolean invalidate,
+ long createTtl,
long accessTtl) {
return lockAllAsync(keys, timeout, tx, CU.empty0());
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
index ad818a6..ee4f7a6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
@@ -1547,6 +1547,7 @@ public class GridLocalAtomicCache<K, V> extends GridLocalCache<K, V> {
boolean retval,
TransactionIsolation isolation,
boolean invalidate,
+ long createTtl,
long accessTtl) {
return new GridFinishedFuture<>(new UnsupportedOperationException("Locks are not supported for " +
"CacheAtomicityMode.ATOMIC mode (use CacheAtomicityMode.TRANSACTIONAL instead)"));
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
index f05d90d..a1c1123 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
@@ -400,6 +400,7 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
boolean skipVals,
boolean needVer,
boolean keepBinary,
+ final ExpiryPolicy expiryPlc,
final GridInClosure3<KeyCacheObject, Object, GridCacheVersion> c
) {
assert cacheCtx.isLocal() : cacheCtx.name();
@@ -412,7 +413,9 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
}
try {
- IgniteCacheExpiryPolicy expiryPlc = accessPolicy(cacheCtx, keys);
+ IgniteCacheExpiryPolicy expiryPlc0 = optimistic() ?
+ accessPolicy(cacheCtx, keys) :
+ cacheCtx.cache().expiryPolicy(expiryPlc);
Map<KeyCacheObject, GridCacheVersion> misses = null;
@@ -437,7 +440,7 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
CU.subjectId(this, cctx),
null,
resolveTaskName(),
- expiryPlc,
+ expiryPlc0,
txEntry == null ? keepBinary : txEntry.keepBinary(),
null);
@@ -481,6 +484,7 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
T2<CacheObject, GridCacheVersion> verVal = entry.versionedValue(cacheVal,
ver,
null,
+ null,
null);
if (log.isDebugEnabled()) {
@@ -1446,6 +1450,7 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
* @param skipVals Skip values flag.
* @param keepCacheObjects Keep cache objects flag.
* @param skipStore Skip store flag.
+ * @param expiryPlc Expiry policy.
* @return Loaded key-value pairs.
*/
private <K, V> IgniteInternalFuture<Map<K, V>> checkMissed(
@@ -1457,7 +1462,8 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
final boolean skipVals,
final boolean keepCacheObjects,
final boolean skipStore,
- final boolean needVer
+ final boolean needVer,
+ final ExpiryPolicy expiryPlc
) {
if (log.isDebugEnabled())
@@ -1486,6 +1492,7 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
skipVals,
needReadVer,
!deserializeBinary,
+ expiryPlc,
new GridInClosure3<KeyCacheObject, Object, GridCacheVersion>() {
@Override public void apply(KeyCacheObject key, Object val, GridCacheVersion loadVer) {
if (isRollbackOnly()) {
@@ -1610,6 +1617,7 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
expiryPlc = cacheCtx.expiry();
long accessTtl = expiryPlc != null ? CU.toTtl(expiryPlc.getExpiryForAccess()) : CU.TTL_NOT_CHANGED;
+ long createTtl = expiryPlc != null ? CU.toTtl(expiryPlc.getExpiryForCreation()) : CU.TTL_NOT_CHANGED;
long timeout = remainingTime();
@@ -1623,8 +1631,11 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
true,
isolation,
isInvalidate(),
+ createTtl,
accessTtl);
+ final ExpiryPolicy expiryPlc0 = expiryPlc;
+
PLC2<Map<K, V>> plc2 = new PLC2<Map<K, V>>() {
@Override public IgniteInternalFuture<Map<K, V>> postLock() throws IgniteCheckedException {
if (log.isDebugEnabled())
@@ -1747,7 +1758,8 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
skipVals,
keepCacheObjects,
skipStore,
- needVer);
+ needVer,
+ expiryPlc0);
}
return new GridFinishedFuture<>(Collections.<K, V>emptyMap());
@@ -1820,7 +1832,8 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
skipVals,
keepCacheObjects,
skipStore,
- needVer);
+ needVer,
+ expiryPlc);
}
return new GridFinishedFuture<>(retMap);
@@ -2027,7 +2040,8 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
hasFilters,
/*read through*/(entryProcessor != null || cacheCtx.config().isLoadPreviousValue()) && !skipStore,
retval,
- keepBinary);
+ keepBinary,
+ expiryPlc);
}
return new GridFinishedFuture<>();
@@ -2196,7 +2210,8 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
hasFilters,
/*read through*/(invokeMap != null || cacheCtx.config().isLoadPreviousValue()) && !skipStore,
retval,
- keepBinary);
+ keepBinary,
+ expiryPlc);
}
return new GridFinishedFuture<>();
@@ -2216,6 +2231,7 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
* @param hasFilters {@code True} if filters not empty.
* @param readThrough Read through flag.
* @param retval Return value flag.
+ * @param expiryPlc Expiry policy.
* @return Load future.
*/
private IgniteInternalFuture<Void> loadMissing(
@@ -2229,7 +2245,8 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
final boolean hasFilters,
final boolean readThrough,
final boolean retval,
- final boolean keepBinary) {
+ final boolean keepBinary,
+ final ExpiryPolicy expiryPlc) {
GridInClosure3<KeyCacheObject, Object, GridCacheVersion> c =
new GridInClosure3<KeyCacheObject, Object, GridCacheVersion>() {
@Override public void apply(KeyCacheObject key,
@@ -2303,6 +2320,7 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
/*skipVals*/singleRmv,
needReadVer,
keepBinary,
+ expiryPlc,
c);
}
@@ -2966,6 +2984,7 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
retval,
isolation,
isInvalidate(),
+ -1L,
-1L);
PLC1<GridCacheReturn> plc1 = new PLC1<GridCacheReturn>(ret) {
@@ -3144,6 +3163,7 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
retval,
isolation,
isInvalidate(),
+ -1L,
-1L);
PLC1<GridCacheReturn> plc1 = new PLC1<GridCacheReturn>(ret) {
@@ -3438,6 +3458,7 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
retval,
isolation,
isInvalidate(),
+ -1L,
-1L);
PLC1<GridCacheReturn> plc1 = new PLC1<GridCacheReturn>(ret) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalEx.java
index 9fb3558..f5687a0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalEx.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.transactions;
import java.util.Collection;
import java.util.Map;
import javax.cache.Cache;
+import javax.cache.expiry.ExpiryPolicy;
import javax.cache.processor.EntryProcessor;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.IgniteInternalFuture;
@@ -181,6 +182,7 @@ public interface IgniteTxLocalEx extends IgniteInternalTx {
* @param skipVals Skip values flag.
* @param needVer If {@code true} version is required for loaded values.
* @param c Closure to be applied for loaded values.
+ * @param expiryPlc Expiry policy.
* @return Future with {@code True} value if loading took place.
*/
public IgniteInternalFuture<Void> loadMissing(
@@ -192,5 +194,6 @@ public interface IgniteTxLocalEx extends IgniteInternalTx {
boolean skipVals,
boolean needVer,
boolean keepBinary,
+ final ExpiryPolicy expiryPlc,
GridInClosure3<KeyCacheObject, Object, GridCacheVersion> c);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/e832ef9c/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
index 8db68b4..2954bdb 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
@@ -689,7 +689,8 @@ public class GridCacheTestEntryEx extends GridMetadataAwareAdapter implements Gr
@Override public T2<CacheObject, GridCacheVersion> versionedValue(CacheObject val,
GridCacheVersion curVer,
GridCacheVersion newVer,
- @Nullable ReaderArguments readerArgs) {
+ @Nullable ReaderArguments readerArgs,
+ IgniteCacheExpiryPolicy loadExpiryPlc) {
assert false;
return null;