/** * @return Tx key. */ public IgniteTxKey txKey() { if (txKey == null) txKey = new IgniteTxKey(key, cacheId); return txKey; }
/** {@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())) return e.getValue(); } } return null; }
/** {@inheritDoc} */ @Override public IgniteTxEntry entry(IgniteTxKey key) { if (entry != null && entry.get(0).txKey().equals(key)) return entry.get(0); return null; }
/** {@inheritDoc} */ @Override public void prepareMarshal(GridCacheSharedContext ctx) throws IgniteCheckedException { super.prepareMarshal(ctx); txKeysArr = new IgniteTxKey[txKeys.size()]; int i = 0; for (IgniteTxKey key : txKeys) { key.prepareMarshal(ctx.cacheContext(key.cacheId())); txKeysArr[i++] = key; } }
/** {@inheritDoc} */ @Override public void finishUnmarshal(GridCacheSharedContext ctx, ClassLoader ldr) throws IgniteCheckedException { super.finishUnmarshal(ctx, ldr); txKeys = U.newHashSet(txKeysArr.length); for (IgniteTxKey key : txKeysArr) { key.finishUnmarshal(ctx.cacheContext(key.cacheId()), ldr); txKeys.add(key); } txKeysArr = null; }
/** * */ @Test public void testObjectPlusStringToString() { IgniteTxKey k = new IgniteTxKey(new KeyCacheObjectImpl(1, null, 1), 123); info(k.toString()); assertTrue("Wrong string: " + k, k.toString().startsWith("IgniteTxKey [")); }
/** * @param key Key. * @return {@code True} if key is internal. */ protected boolean checkInternal(IgniteTxKey key) { if (key.key().internal()) { internal = true; return true; } return false; }
/** {@inheritDoc} */ @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) { writer.setBuffer(buf); if (!writer.isHeaderWritten()) { if (!writer.writeHeader(directType(), fieldsCount())) return false; writer.onHeaderWritten(); } switch (writer.state()) { case 0: if (!writer.writeInt("cacheId", cacheId)) return false; writer.incrementState(); case 1: if (!writer.writeMessage("key", key)) return false; writer.incrementState(); } return true; }
/** {@inheritDoc} */ @Override public void unwindEvicts(GridCacheSharedContext cctx) { assert readMap == null || readMap.isEmpty(); int singleCacheId = 0; Set<Integer> cacheIds = null; for (IgniteTxKey writeKey : writeMap.keySet()) { int cacheId = writeKey.cacheId(); assert cacheId != 0; // Have we already notified this cache? if (cacheId == singleCacheId || cacheIds != null && !cacheIds.add(cacheId)) continue; if (singleCacheId == 0) singleCacheId = cacheId; else if (cacheIds == null) { cacheIds = new HashSet<>(2); cacheIds.add(cacheId); } GridCacheContext ctx = cctx.cacheContext(cacheId); if (ctx != null) CU.unwindEvicts(ctx); } }
/** {@inheritDoc} * @param ctx*/ @Override public void prepareMarshal(GridCacheSharedContext ctx) throws IgniteCheckedException { super.prepareMarshal(ctx); GridCacheContext cctx = ctx.cacheContext(cacheId); if (nearEvicted != null) { for (IgniteTxKey key : nearEvicted) key.prepareMarshal(cctx); } if (preloadEntries != null) marshalInfos(preloadEntries, cctx.shared(), cctx.cacheObjectContext()); }
/** {@inheritDoc} */ @Override public void finishUnmarshal(GridCacheSharedContext ctx, ClassLoader ldr) throws IgniteCheckedException { super.finishUnmarshal(ctx, ldr); GridCacheContext cctx = ctx.cacheContext(cacheId); if (nearEvicted != null) { for (IgniteTxKey key : nearEvicted) key.finishUnmarshal(cctx, ldr); } if (preloadEntries != null) unmarshalInfos(preloadEntries, ctx.cacheContext(cacheId), ldr); }
/** {@inheritDoc} */ @Override public void prepareMarshal(GridCacheSharedContext ctx) throws IgniteCheckedException { super.prepareMarshal(ctx); if (nearTxKeyLocks != null && !nearTxKeyLocks.isEmpty()) { int len = nearTxKeyLocks.size(); nearTxKeysArr = new IgniteTxKey[len]; locksArr = new TxLockList[len]; int i = 0; for (Map.Entry<IgniteTxKey, TxLockList> entry : nearTxKeyLocks.entrySet()) { IgniteTxKey key = entry.getKey(); key.prepareMarshal(ctx.cacheContext(key.cacheId())); nearTxKeysArr[i] = key; locksArr[i] = entry.getValue(); i++; } } if (txKeys != null && !txKeys.isEmpty()) { txKeysArr = new IgniteTxKey[txKeys.size()]; int i = 0; for (IgniteTxKey key : txKeys) { key.prepareMarshal(ctx.cacheContext(key.cacheId())); txKeysArr[i++] = key; } } }
/** {@inheritDoc} */ @Override public void finishUnmarshal(GridCacheSharedContext ctx, ClassLoader ldr) throws IgniteCheckedException { super.finishUnmarshal(ctx, ldr); if (writes != null) unmarshalTx(writes, false, ctx, ldr); if (reads != null) unmarshalTx(reads, false, ctx, ldr); if (dhtVerKeys != null && dhtVers == null) { assert dhtVerVals != null; assert dhtVerKeys.size() == dhtVerVals.size(); Iterator<IgniteTxKey> keyIt = dhtVerKeys.iterator(); Iterator<GridCacheVersion> verIt = dhtVerVals.iterator(); dhtVers = U.newHashMap(dhtVerKeys.size()); while (keyIt.hasNext()) { IgniteTxKey key = keyIt.next(); key.finishUnmarshal(ctx.cacheContext(key.cacheId()), ldr); dhtVers.put(key, verIt.next()); } } if (txNodesMsg != null) txNodes = F.viewReadOnly(txNodesMsg, MSG_TO_COL); }
/** * Gets cache entry for given key and topology version. * * @param cacheCtx Cache context. * @param key Key. * @param topVer Topology version. * @return Cache entry. */ protected GridCacheEntryEx entryEx(GridCacheContext cacheCtx, IgniteTxKey key, AffinityTopologyVersion topVer) { return cacheCtx.cache().entryEx(key.key(), topVer); }
/** {@inheritDoc} */ @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) { writer.setBuffer(buf); if (!writer.isHeaderWritten()) { if (!writer.writeHeader(directType(), fieldsCount())) return false; writer.onHeaderWritten(); } switch (writer.state()) { case 0: if (!writer.writeInt("cacheId", cacheId)) return false; writer.incrementState(); case 1: if (!writer.writeMessage("key", key)) return false; writer.incrementState(); } return true; }
GridCacheContext cctx0 = cctx.cacheContext(e.getKey().cacheId());
/** {@inheritDoc} * @param ctx*/ @Override public void prepareMarshal(GridCacheSharedContext ctx) throws IgniteCheckedException { super.prepareMarshal(ctx); GridCacheContext cctx = ctx.cacheContext(cacheId); if (nearEvicted != null) { for (IgniteTxKey key : nearEvicted) key.prepareMarshal(cctx); } if (preloadEntries != null) marshalInfos(preloadEntries, cctx.shared(), cctx.cacheObjectContext()); }
/** {@inheritDoc} */ @Override public void finishUnmarshal(GridCacheSharedContext ctx, ClassLoader ldr) throws IgniteCheckedException { super.finishUnmarshal(ctx, ldr); GridCacheContext cctx = ctx.cacheContext(cacheId); if (nearEvicted != null) { for (IgniteTxKey key : nearEvicted) key.finishUnmarshal(cctx, ldr); } if (preloadEntries != null) unmarshalInfos(preloadEntries, ctx.cacheContext(cacheId), ldr); }
/** * @param key Key to construct tx key for. * @return Transaction key. */ public IgniteTxKey txKey(KeyCacheObject key) { return new IgniteTxKey(key, cacheId); }