/** * @param tx Transaction. */ private void processCompletedEntries(IgniteInternalTx tx) { if (tx.needsCompletedVersions()) { GridCacheVersion min = minVersion(tx.readEntries(), tx.xidVersion(), tx); min = minVersion(tx.writeEntries(), min, tx); assert min != null; IgnitePair<Collection<GridCacheVersion>> versPair = versions(min); tx.completedVersions(min, versPair.get1(), versPair.get2()); } }
unlockMultiple(tx, tx.writeEntries());
unlockMultiple(tx, tx.writeEntries());
unlockMultiple(tx, tx.writeEntries());
/** * @param tx Transaction. */ private void removeObsolete(IgniteInternalTx tx) { Collection<IgniteTxEntry> entries = tx.local() ? tx.allEntries() : tx.writeEntries(); for (IgniteTxEntry entry : entries) { GridCacheEntryEx cached = entry.cached(); GridCacheContext cacheCtx = entry.context(); if (cached == null) cached = cacheCtx.cache().peekEx(entry.key()); if (cached.detached()) continue; try { if (cached.obsolete() || cached.markObsoleteIfEmpty(tx.xidVersion())) cacheCtx.cache().removeEntry(cached); if (!tx.near() && isNearEnabled(cacheCtx)) { GridNearCacheAdapter near = cacheCtx.isNear() ? cacheCtx.near() : cacheCtx.dht().near(); GridNearCacheEntry e = near.peekExx(entry.key()); if (e != null && e.markObsoleteIfEmpty(null)) near.removeEntry(e); } } catch (IgniteCheckedException e) { U.error(log, "Failed to remove obsolete entry from cache: " + cached, e); } } }
/** * @param tx Transaction. */ private void processCompletedEntries(IgniteInternalTx tx) { if (tx.needsCompletedVersions()) { GridCacheVersion min = minVersion(tx.readEntries(), tx.xidVersion(), tx); min = minVersion(tx.writeEntries(), min, tx); assert min != null; IgnitePair<Collection<GridCacheVersion>> versPair = versions(min); tx.completedVersions(min, versPair.get1(), versPair.get2()); } }
unlockMultiple(tx, tx.writeEntries());
unlockMultiple(tx, tx.writeEntries());
unlockMultiple(tx, tx.writeEntries());
/** * @param tx Transaction. */ private void removeObsolete(IgniteInternalTx tx) { Collection<IgniteTxEntry> entries = tx.local() ? tx.allEntries() : tx.writeEntries(); for (IgniteTxEntry entry : entries) { GridCacheEntryEx cached = entry.cached(); GridCacheContext cacheCtx = entry.context(); if (cached == null) cached = cacheCtx.cache().peekEx(entry.key()); if (cached.detached()) continue; try { if (cached.obsolete() || cached.markObsoleteIfEmpty(tx.xidVersion())) cacheCtx.cache().removeEntry(cached); if (!tx.near() && isNearEnabled(cacheCtx)) { GridNearCacheAdapter near = cacheCtx.isNear() ? cacheCtx.near() : cacheCtx.dht().near(); GridNearCacheEntry e = near.peekExx(entry.key()); if (e != null && e.markObsoleteIfEmpty(null)) near.removeEntry(e); } } catch (IgniteCheckedException e) { U.error(log, "Failed to remove obsolete entry from cache: " + cached, e); } } }