Repository: incubator-ignite Updated Branches: refs/heads/ignite-283 [created] eee156a0f
# ignite-283: Refactoring started. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/eee156a0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/eee156a0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/eee156a0 Branch: refs/heads/ignite-283 Commit: eee156a0f7ba1dfa2ae8982880024ecee3eee23e Parents: 862fac9 Author: vozerov-gridgain <voze...@gridgain.com> Authored: Tue Feb 17 13:59:04 2015 +0300 Committer: vozerov-gridgain <voze...@gridgain.com> Committed: Tue Feb 17 13:59:04 2015 +0300 ---------------------------------------------------------------------- .../processors/cache/GridCacheContext.java | 10 +++ .../GridDistributedTxRemoteAdapter.java | 20 +++--- .../distributed/dht/GridDhtTxLocalAdapter.java | 5 +- .../distributed/dht/GridDhtTxPrepareFuture.java | 14 ++-- .../near/GridNearTxPrepareFuture.java | 5 +- .../cache/transactions/IgniteTxAdapter.java | 5 +- .../cache/transactions/IgniteTxEntry.java | 76 +++++++++++--------- .../transactions/IgniteTxLocalAdapter.java | 70 ++++++------------ 8 files changed, 98 insertions(+), 107 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eee156a0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java index e5cc9c3..02624d7 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java @@ -338,6 +338,16 @@ public class GridCacheContext<K, V> implements Externalizable { } /** + * @param txEntry TX entry. + * @return Expiry policy for the given TX entry. + */ + @Nullable public ExpiryPolicy expiryForTxEntry(IgniteTxEntry txEntry) { + ExpiryPolicy plc = txEntry.expiry(); + + return plc != null ? plc : expiryPlc; + } + + /** * @param mgr Manager to add. * @return Added manager. */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eee156a0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java index 0513cc7..4f8357a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java @@ -39,6 +39,7 @@ import java.util.*; import java.util.concurrent.atomic.*; import static org.apache.ignite.internal.processors.cache.GridCacheOperation.*; +import static org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry.*; import static org.apache.ignite.internal.processors.dr.GridDrType.*; import static org.apache.ignite.transactions.TransactionState.*; @@ -345,9 +346,9 @@ public class GridDistributedTxRemoteAdapter<K, V> extends IgniteTxAdapter<K, V> entry.explicitVersion(e.explicitVersion()); entry.groupLockEntry(e.groupLockEntry()); - // DR stuff. - entry.drVersion(e.drVersion()); - entry.drExpireTime(e.drExpireTime()); + // Conflict resolution stuff. + entry.conflictVersion(e.conflictVersion()); + entry.conflictExpireTime(e.conflictExpireTime()); } addExplicit(e); @@ -504,19 +505,18 @@ public class GridDistributedTxRemoteAdapter<K, V> extends IgniteTxAdapter<K, V> V val = res.get2(); byte[] valBytes = res.get3(); - GridCacheVersion explicitVer = txEntry.drVersion(); + GridCacheVersion explicitVer = txEntry.conflictVersion(); if (txEntry.ttl() == CU.TTL_ZERO) op = DELETE; - boolean drNeedResolve = cacheCtx.conflictNeedResolve(cached.version(), explicitVer); if (drNeedResolve) { IgniteBiTuple<GridCacheOperation, GridCacheVersionConflictContext<K, V>> drRes = conflictResolve(op, txEntry.key(), val, valBytes, - txEntry.ttl(), txEntry.drExpireTime(), explicitVer, cached); + txEntry.ttl(), txEntry.conflictExpireTime(), explicitVer, cached); assert drRes != null; @@ -528,9 +528,9 @@ public class GridDistributedTxRemoteAdapter<K, V> extends IgniteTxAdapter<K, V> txEntry.ttl(drCtx.ttl()); if (drCtx.newEntry().dataCenterId() != cacheCtx.dataCenterId()) - txEntry.drExpireTime(drCtx.expireTime()); + txEntry.conflictExpireTime(drCtx.expireTime()); else - txEntry.drExpireTime(-1L); + txEntry.conflictExpireTime(CONFLICT_EXPIRE_TIME_NOT_SET); } else if (drCtx.isMerge()) { op = drRes.get1(); @@ -539,7 +539,7 @@ public class GridDistributedTxRemoteAdapter<K, V> extends IgniteTxAdapter<K, V> explicitVer = writeVersion(); txEntry.ttl(drCtx.ttl()); - txEntry.drExpireTime(-1L); + txEntry.conflictExpireTime(CONFLICT_EXPIRE_TIME_NOT_SET); } } else @@ -556,7 +556,7 @@ public class GridDistributedTxRemoteAdapter<K, V> extends IgniteTxAdapter<K, V> else { cached.innerSet(this, eventNodeId(), nodeId, val, valBytes, false, false, txEntry.ttl(), true, true, topVer, txEntry.filters(), - replicate ? DR_BACKUP : DR_NONE, txEntry.drExpireTime(), + replicate ? DR_BACKUP : DR_NONE, txEntry.conflictExpireTime(), near() ? null : explicitVer, CU.subjectId(this, cctx), resolveTaskName()); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eee156a0/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 aab5680..1c71f12 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 @@ -452,8 +452,9 @@ public abstract class GridDhtTxLocalAdapter<K, V> extends IgniteTxLocalAdapter<K entry.ttl(e.ttl()); entry.filters(e.filters()); entry.expiry(e.expiry()); - entry.drExpireTime(e.drExpireTime()); - entry.drVersion(e.drVersion()); + + entry.conflictExpireTime(e.conflictExpireTime()); + entry.conflictVersion(e.conflictVersion()); } else { entry = e; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eee156a0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java index c6e91a3..a9d898b 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java @@ -42,6 +42,7 @@ import java.util.*; import java.util.concurrent.atomic.*; import static org.apache.ignite.internal.processors.cache.GridCacheOperation.*; +import static org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry.*; import static org.apache.ignite.transactions.TransactionState.*; import static org.apache.ignite.events.EventType.*; import static org.apache.ignite.internal.managers.communication.GridIoPolicy.*; @@ -279,13 +280,11 @@ public final class GridDhtTxPrepareFuture<K, V> extends GridCompoundIdentityFutu GridCacheEntryEx<K, V> cached = txEntry.cached(); - ExpiryPolicy expiry = txEntry.expiry(); - - if (expiry == null) - expiry = cacheCtx.expiry(); + ExpiryPolicy expiry = cacheCtx.expiryForTxEntry(txEntry); try { - if (txEntry.op() == CREATE || txEntry.op() == UPDATE && txEntry.drExpireTime() == -1L) { + if ((txEntry.op() == CREATE || txEntry.op() == UPDATE) && + txEntry.conflictExpireTime() == CONFLICT_EXPIRE_TIME_NOT_SET) { if (expiry != null) { Duration duration = cached.hasValue() ? expiry.getExpiryForUpdate() : expiry.getExpiryForCreation(); @@ -994,10 +993,7 @@ public final class GridDhtTxPrepareFuture<K, V> extends GridCompoundIdentityFutu GridDhtCacheAdapter<K, V> dht = cacheCtx.isNear() ? cacheCtx.near().dht() : cacheCtx.dht(); - ExpiryPolicy expiry = entry.expiry(); - - if (expiry == null) - expiry = cacheCtx.expiry(); + ExpiryPolicy expiry = cacheCtx.expiryForTxEntry(entry); if (expiry != null && entry.op() == READ) { entry.op(NOOP); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eee156a0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFuture.java index a94ffba..18fda47 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFuture.java @@ -983,10 +983,9 @@ public final class GridNearTxPrepareFuture<K, V> extends GridCompoundIdentityFut txEntry.op(NOOP); - ExpiryPolicy expiry = txEntry.expiry(); + assert txEntry.context() != null; - if (expiry == null) - expiry = txEntry.context().expiry(); + ExpiryPolicy expiry = txEntry.context().expiryForTxEntry(txEntry); if (expiry != null) txEntry.ttl(CU.toTtl(expiry.getExpiryForAccess())); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eee156a0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java index 62d4e3b..ab0b2a5 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java @@ -1244,10 +1244,7 @@ public abstract class IgniteTxAdapter<K, V> extends GridMetadataAwareAdapter GridCacheOperation op = modified ? (val == null ? DELETE : UPDATE) : NOOP; if (op == NOOP) { - ExpiryPolicy expiry = txEntry.expiry(); - - if (expiry == null) - expiry = cacheCtx.expiry(); + ExpiryPolicy expiry = cacheCtx.expiryForTxEntry(txEntry); if (expiry != null) { long ttl = CU.toTtl(expiry.getExpiryForAccess()); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eee156a0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java index eac07be..7022c4c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java @@ -44,6 +44,9 @@ import static org.apache.ignite.internal.processors.cache.GridCacheOperation.*; * equality. */ public class IgniteTxEntry<K, V> implements GridPeerDeployAware, Externalizable, OptimizedMarshallable { + /** Special value indicating that conflict expire time is not set. */ + public static final long CONFLICT_EXPIRE_TIME_NOT_SET = -1; + /** */ private static final long serialVersionUID = 0L; @@ -90,8 +93,11 @@ public class IgniteTxEntry<K, V> implements GridPeerDeployAware, Externalizable, /** Time to live. */ private long ttl; - /** DR expire time (explicit) */ - private long drExpireTime = -1L; + /** Conflict expire time (explicit) */ + private long conflictExpireTime = CONFLICT_EXPIRE_TIME_NOT_SET; + + /** Conflict version. */ + private GridCacheVersion conflictVer; /** Explicit lock version if there is one. */ @GridToStringInclude @@ -135,9 +141,6 @@ public class IgniteTxEntry<K, V> implements GridPeerDeployAware, Externalizable, /** Deployment enabled flag. */ private boolean depEnabled; - /** Data center replication version. */ - private GridCacheVersion drVer; - /** Expiry policy. */ private ExpiryPolicy expiryPlc; @@ -159,18 +162,18 @@ public class IgniteTxEntry<K, V> implements GridPeerDeployAware, Externalizable, * @param op Operation. * @param val Value. * @param ttl Time to live. - * @param drExpireTime DR expire time. + * @param conflictExpireTime DR expire time. * @param entry Cache entry. - * @param drVer Data center replication version. + * @param conflictVer Data center replication version. */ public IgniteTxEntry(GridCacheContext<K, V> ctx, IgniteInternalTx<K, V> tx, GridCacheOperation op, V val, long ttl, - long drExpireTime, + long conflictExpireTime, GridCacheEntryEx<K, V> entry, - @Nullable GridCacheVersion drVer) { + @Nullable GridCacheVersion conflictVer) { assert ctx != null; assert tx != null; assert op != null; @@ -181,8 +184,8 @@ public class IgniteTxEntry<K, V> implements GridPeerDeployAware, Externalizable, this.val.value(op, val, false, false); this.entry = entry; this.ttl = ttl; - this.drExpireTime = drExpireTime; - this.drVer = drVer; + this.conflictExpireTime = conflictExpireTime; + this.conflictVer = conflictVer; key = entry.key(); keyBytes = entry.keyBytes(); @@ -204,7 +207,7 @@ public class IgniteTxEntry<K, V> implements GridPeerDeployAware, Externalizable, * @param ttl Time to live. * @param entry Cache entry. * @param filters Put filters. - * @param drVer Data center replication version. + * @param conflictVer Data center replication version. */ public IgniteTxEntry(GridCacheContext<K, V> ctx, IgniteInternalTx<K, V> tx, @@ -215,7 +218,7 @@ public class IgniteTxEntry<K, V> implements GridPeerDeployAware, Externalizable, long ttl, GridCacheEntryEx<K, V> entry, IgnitePredicate<Cache.Entry<K, V>>[] filters, - GridCacheVersion drVer) { + GridCacheVersion conflictVer) { assert ctx != null; assert tx != null; assert op != null; @@ -227,7 +230,7 @@ public class IgniteTxEntry<K, V> implements GridPeerDeployAware, Externalizable, this.entry = entry; this.ttl = ttl; this.filters = filters; - this.drVer = drVer; + this.conflictVer = conflictVer; if (entryProcessor != null) addEntryProcessor(entryProcessor, invokeArgs); @@ -296,11 +299,11 @@ public class IgniteTxEntry<K, V> implements GridPeerDeployAware, Externalizable, cp.val.valueBytes(val.valueBytes()); cp.entryProcessorsCol = entryProcessorsCol; cp.ttl = ttl; - cp.drExpireTime = drExpireTime; + cp.conflictExpireTime = conflictExpireTime; cp.explicitVer = explicitVer; cp.grpLock = grpLock; cp.depEnabled = depEnabled; - cp.drVer = drVer; + cp.conflictVer = conflictVer; cp.expiryPlc = expiryPlc; return cp; @@ -568,17 +571,17 @@ public class IgniteTxEntry<K, V> implements GridPeerDeployAware, Externalizable, } /** - * @return DR expire time. + * @return Conflict expire time. */ - public long drExpireTime() { - return drExpireTime; + public long conflictExpireTime() { + return conflictExpireTime; } /** - * @param drExpireTime DR expire time. + * @param conflictExpireTime Conflict expire time. */ - public void drExpireTime(long drExpireTime) { - this.drExpireTime = drExpireTime; + public void conflictExpireTime(long conflictExpireTime) { + this.conflictExpireTime = conflictExpireTime; } /** @@ -692,17 +695,17 @@ public class IgniteTxEntry<K, V> implements GridPeerDeployAware, Externalizable, } /** - * @return DR version. + * @return Conflict version. */ - @Nullable public GridCacheVersion drVersion() { - return drVer; + @Nullable public GridCacheVersion conflictVersion() { + return conflictVer; } /** - * @param drVer DR version. + * @param conflictVer Conflict version. */ - public void drVersion(@Nullable GridCacheVersion drVer) { - this.drVer = drVer; + public void conflictVersion(@Nullable GridCacheVersion conflictVer) { + this.conflictVer = conflictVer; } /** @@ -849,11 +852,18 @@ public class IgniteTxEntry<K, V> implements GridPeerDeployAware, Externalizable, val.writeTo(out); out.writeLong(ttl); - out.writeLong(drExpireTime); CU.writeVersion(out, explicitVer); out.writeBoolean(grpLock); - CU.writeVersion(out, drVer); + + if (conflictExpireTime != CONFLICT_EXPIRE_TIME_NOT_SET) { + out.writeBoolean(true); + out.writeLong(conflictExpireTime); + } + else + out.writeBoolean(false); + + CU.writeVersion(out, conflictVer); out.writeObject(transferExpiryPlc ? new IgniteExternalizableExpiryPolicy(expiryPlc) : null); } @@ -879,11 +889,12 @@ public class IgniteTxEntry<K, V> implements GridPeerDeployAware, Externalizable, val.readFrom(in); ttl = in.readLong(); - drExpireTime = in.readLong(); explicitVer = CU.readVersion(in); grpLock = in.readBoolean(); - drVer = CU.readVersion(in); + + conflictExpireTime = in.readBoolean() ? in.readLong() : CONFLICT_EXPIRE_TIME_NOT_SET; + conflictVer = CU.readVersion(in); expiryPlc = (ExpiryPolicy)in.readObject(); } @@ -1103,6 +1114,7 @@ public class IgniteTxEntry<K, V> implements GridPeerDeployAware, Externalizable, * @throws IOException If failed. * @throws ClassNotFoundException If failed. */ + @SuppressWarnings("unchecked") public void readFrom(ObjectInput in) throws IOException, ClassNotFoundException { hasWriteVal = in.readBoolean(); valBytesSent = in.readBoolean(); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eee156a0/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 8ffe224..3a63236 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 @@ -48,6 +48,7 @@ import static org.apache.ignite.events.EventType.*; import static org.apache.ignite.internal.processors.cache.GridCacheOperation.*; import static org.apache.ignite.internal.processors.dr.GridDrType.*; import static org.apache.ignite.transactions.TransactionState.*; +import static org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry.*; /** * Transaction adapter for cache transactions. @@ -724,11 +725,9 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V> if (cacheCtx.isNear()) { ((GridNearCacheEntry<K, V>)cached).recordDhtVersion(txEntry.dhtVersion()); - if (txEntry.op() == CREATE || txEntry.op() == UPDATE && txEntry.drExpireTime() == -1L) { - ExpiryPolicy expiry = txEntry.expiry(); - - if (expiry == null) - expiry = cacheCtx.expiry(); + if ((txEntry.op() == CREATE || txEntry.op() == UPDATE) && + txEntry.conflictExpireTime() == CONFLICT_EXPIRE_TIME_NOT_SET) { + ExpiryPolicy expiry = cacheCtx.expiryForTxEntry(txEntry); if (expiry != null) { Duration duration = cached.hasValue() ? @@ -744,14 +743,12 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V> byte[] valBytes = res.get3(); // Deal with DR conflicts. - GridCacheVersion explicitVer = txEntry.drVersion() != null ? - txEntry.drVersion() : writeVersion(); - - if (op == CREATE || op == UPDATE && txEntry.drExpireTime() == -1L) { - ExpiryPolicy expiry = txEntry.expiry(); + GridCacheVersion explicitVer = txEntry.conflictVersion() != null ? + txEntry.conflictVersion() : writeVersion(); - if (expiry == null) - expiry = cacheCtx.expiry(); + if ((op == CREATE || op == UPDATE) && + txEntry.conflictExpireTime() == CONFLICT_EXPIRE_TIME_NOT_SET) { + ExpiryPolicy expiry = cacheCtx.expiryForTxEntry(txEntry); if (expiry != null) { Duration duration = cached.hasValue() ? @@ -771,7 +768,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V> if (drNeedResolve) { IgniteBiTuple<GridCacheOperation, GridCacheVersionConflictContext<K, V>> drRes = conflictResolve(op, txEntry.key(), val, valBytes, txEntry.ttl(), - txEntry.drExpireTime(), explicitVer, cached); + txEntry.conflictExpireTime(), explicitVer, cached); assert drRes != null; @@ -783,9 +780,9 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V> txEntry.ttl(conflictCtx.ttl()); if (conflictCtx.newEntry().dataCenterId() != cctx.dataCenterId()) - txEntry.drExpireTime(conflictCtx.expireTime()); + txEntry.conflictExpireTime(conflictCtx.expireTime()); else - txEntry.drExpireTime(-1L); + txEntry.conflictExpireTime(CONFLICT_EXPIRE_TIME_NOT_SET); } else { assert conflictCtx.isMerge(); @@ -796,7 +793,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V> explicitVer = writeVersion(); txEntry.ttl(conflictCtx.ttl()); - txEntry.drExpireTime(-1L); + txEntry.conflictExpireTime(CONFLICT_EXPIRE_TIME_NOT_SET); } } else @@ -810,7 +807,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V> txEntry.valueBytes(valBytes); txEntry.op(op); txEntry.entryProcessors(null); - txEntry.drVersion(explicitVer); + txEntry.conflictVersion(explicitVer); } if (op == CREATE || op == UPDATE) { @@ -828,7 +825,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V> topVer, null, cached.detached() ? DR_NONE : drType, - txEntry.drExpireTime(), + txEntry.conflictExpireTime(), cached.isNear() ? null : explicitVer, CU.subjectId(this, cctx), resolveTaskName()); @@ -848,7 +845,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V> topVer, CU.<K, V>empty(), DR_NONE, - txEntry.drExpireTime(), + txEntry.conflictExpireTime(), null, CU.subjectId(this, cctx), resolveTaskName()); @@ -892,10 +889,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V> nearCached.innerReload(); } else if (op == READ) { - ExpiryPolicy expiry = txEntry.expiry(); - - if (expiry == null) - expiry = cacheCtx.expiry(); + ExpiryPolicy expiry = cacheCtx.expiryForTxEntry(txEntry); if (expiry != null) { Duration duration = expiry.getExpiryForAccess(); @@ -2380,7 +2374,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V> if (updateTtl) { if (!read) { - ExpiryPolicy expiryPlc = txEntry.expiry() != null ? txEntry.expiry() : cacheCtx.expiry(); + ExpiryPolicy expiryPlc = cacheCtx.expiryForTxEntry(txEntry); if (expiryPlc != null) txEntry.ttl(CU.toTtl(expiryPlc.getExpiryForAccess())); @@ -3192,7 +3186,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V> filter, drVer); - txEntry.drExpireTime(drExpireTime); + txEntry.conflictExpireTime(drExpireTime); if (!hasDrTtl) txEntry.expiry(expiryPlc); @@ -3257,24 +3251,6 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V> /** * @param key Key. - * @param ttl Time to live. - * @return {@code true} if tx entry exists for this key, {@code false} otherwise. - */ - public boolean entryTtl(IgniteTxKey<K> key, long ttl) { - assert key != null; - - IgniteTxEntry<K, V> e = entry(key); - - if (e != null) { - e.ttl(ttl); - e.drExpireTime(-1L); - } - - return e != null; - } - - /** - * @param key Key. * @param expiryPlc Expiry policy. */ void entryExpiry(IgniteTxKey<K> key, @Nullable ExpiryPolicy expiryPlc) { @@ -3282,8 +3258,10 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V> IgniteTxEntry<K, V> e = entry(key); - if (e != null) + if (e != null) { e.expiry(expiryPlc); + e.conflictExpireTime(CONFLICT_EXPIRE_TIME_NOT_SET); + } } /** @@ -3300,10 +3278,8 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V> if (e != null) { e.ttl(ttl); - - e.drExpireTime(expireTime); - e.expiry(null); + e.conflictExpireTime(expireTime); } return e != null;