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 <[email protected]> Authored: Tue Jan 24 14:44:33 2017 +0300 Committer: Anton Vinogradov <[email protected]> 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;
