/** * @param deleted {@code True} if deleted. */ protected final void deletedUnlocked(boolean deleted) { assert lock.isHeldByCurrentThread(); assert cctx.deferredDelete(); if (deleted) { assert !deletedUnlocked() : this; flags |= IS_DELETED_MASK; decrementMapPublicSize(); } else { assert deletedUnlocked() : this; flags &= ~IS_DELETED_MASK; incrementMapPublicSize(); } }
/** {@inheritDoc} */ @Override public final boolean deleted() { if (!cctx.deferredDelete()) return false; lockEntry(); try { return deletedUnlocked(); } finally { unlockEntry(); } }
/** {@inheritDoc} */ @Override public final boolean obsoleteOrDeleted() { lockEntry(); try { return obsoleteVersionExtras() != null || (cctx.deferredDelete() && (deletedUnlocked() || !hasValueUnlocked())); } finally { unlockEntry(); } }
@Override public boolean apply(@Nullable CacheDataRow row) { boolean update0; GridCacheVersion currentVer = row != null ? row.version() : GridCacheMapEntry.this.ver; boolean isStartVer = cctx.shared().versions().isStartVersion(currentVer); if (cctx.group().persistenceEnabled()) { if (!isStartVer) { if (cctx.atomic()) update0 = ATOMIC_VER_COMPARATOR.compare(currentVer, ver) < 0; else update0 = currentVer.compareTo(ver) < 0; } else update0 = true; } else update0 = isStartVer; update0 |= (!preload && deletedUnlocked()); return update0; } };
/** {@inheritDoc} */ @Override public boolean checkSerializableReadVersion(GridCacheVersion serReadVer) throws GridCacheEntryRemovedException { lockEntry(); try { checkObsolete(); if (!serReadVer.equals(ver)) { boolean empty = isStartVersion() || deletedUnlocked(); if (serReadVer.equals(IgniteTxEntry.SER_READ_EMPTY_ENTRY_VER)) return empty; else if (serReadVer.equals(IgniteTxEntry.SER_READ_NOT_EMPTY_VER)) return !empty; return false; } return true; } finally { unlockEntry(); } }
assert !entry.deletedUnlocked(); entry.deletedUnlocked(true); assert entry.deletedUnlocked() || new0 || entry.isInternal() : "Invalid entry [entry=" + this + ", locNodeId=" + cctx.localNodeId() + ']'; entry.deletedUnlocked(true);
if (!deletedUnlocked()) { update(null, 0L, 0L, ver, true); deletedUnlocked(true);
storeValue(val, expTime, newVer); if (deletedUnlocked()) deletedUnlocked(false);
storeValue(ret, expTime, nextVer); if (cctx.deferredDelete() && !isInternal() && !detached() && deletedUnlocked()) deletedUnlocked(false); removeValue(); if (cctx.deferredDelete() && !isInternal() && !detached() && !deletedUnlocked()) deletedUnlocked(true);
/** {@inheritDoc} */ @Nullable @Override public GridCacheEntryInfo info() { GridCacheEntryInfo info = null; lockEntry(); try { if (!obsolete()) { info = new GridCacheEntryInfo(); info.key(key); info.cacheId(cctx.cacheId()); long expireTime = expireTimeExtras(); boolean expired = expireTime != 0 && expireTime <= U.currentTimeMillis(); info.ttl(ttlExtras()); info.expireTime(expireTime); info.version(ver); info.setNew(isStartVersion()); info.setDeleted(deletedUnlocked()); if (!expired) info.value(val); } } finally { unlockEntry(); } return info; }
entry.update(null, CU.TTL_ETERNAL, CU.EXPIRE_TIME_ETERNAL, entry.ver, true); if (!entry.deletedUnlocked()) entry.deletedUnlocked(true);
entry.update(null, CU.TTL_ETERNAL, CU.EXPIRE_TIME_ETERNAL, entry.ver, true); if (!entry.deletedUnlocked() && !entry.isStartVersion()) entry.deletedUnlocked(true);
assert entry.deletedUnlocked();
if (!deletedUnlocked() && !isStartVersion()) { update(null, 0L, 0L, ver, true); deletedUnlocked(true);
if (cctx.deferredDelete() && deletedUnlocked() && !detached()) deletedUnlocked(false);
if (cctx.deferredDelete() && deletedUnlocked()) return false; if (cctx.deferredDelete() && deletedUnlocked()) return false;
assert entry.deletedUnlocked();
if (cctx.deferredDelete() && deletedUnlocked() && !isInternal() && !detached()) deletedUnlocked(false);
if (cctx.deferredDelete() && deletedUnlocked() && !detached()) deletedUnlocked(false);
if (cctx.deferredDelete() && entry.deletedUnlocked() && !entry.detached()) entry.deletedUnlocked(false);