/** * @param key Key. * @return Entry. */ @Nullable public GridNearCacheEntry peekExx(KeyCacheObject key) { return (GridNearCacheEntry)peekEx(key); }
/** * @param idx Grid index. * @param key Key. * @return Near entry. */ @Nullable private GridNearCacheEntry nearEntry(int idx, int key) { return (GridNearCacheEntry)near(idx).peekEx(key); }
/** * @param cacheCtx Context. * @param key Key * @param ver Version. * @throws IgniteCheckedException If invalidate failed. */ private void invalidateNearEntry(GridCacheContext cacheCtx, KeyCacheObject key, GridCacheVersion ver) throws IgniteCheckedException { GridNearCacheAdapter near = cacheCtx.isNear() ? cacheCtx.near() : cacheCtx.dht().near(); GridCacheEntryEx nearEntry = near.peekEx(key); if (nearEntry != null) nearEntry.invalidate(ver); }
/** * @param msg Error message. * @param g Grid. * @param primary Primary flag. * @param v1 V1. * @param v2 V2. * @return String for assertion. */ private static String invalid(String msg, Ignite g, boolean primary, int v1, int v2) { return msg + " [igniteInstanceName=" + g.name() + ", primary=" + primary + ", v1=" + v1 + ", v2=" + v2 + (!primary ? ", nearEntry=" + near(g).peekEx(CNTR_KEY) : ", dhtEntry=" + dht(g).peekEx(CNTR_KEY) + ", dhtNear=" + near(g).peekEx(CNTR_KEY)) + ']'; }
/** * @param nodeId Node ID. * @param key Key. * @return Near entry. */ @Nullable private static GridCacheEntryEx nearEntry(UUID nodeId, Object key) { Ignite g = G.ignite(nodeId); GridNearCacheAdapter<Object, Integer> near = ((IgniteKernal)g).<Object, Integer>internalCache(DEFAULT_CACHE_NAME).context().near(); return near.peekEx(key); }
GridCacheEntryEx dhtNear = near(pri).peekEx(CNTR_KEY); log.info("Started tx [igniteInstanceName=" + pri.name() + ", primary=true, xid=" + tx.xid() + ", oldCntr=" + oldCntr + ", node=" + pri.name() + ", dhtEntry=" + dht(pri).peekEx(CNTR_KEY) + ", dhtNear=" + dhtNear + ']'); dhtNear = near(pri).peekEx(CNTR_KEY); ", node=" + pri.name() + ", dhtEntry=" + dht(pri).peekEx(CNTR_KEY) + ", dhtNear=" + dhtNear + ']');
/** * Safely performs {@code updateClojure} operation on near cache entry with given {@code entryKey}. * In case of {@link GridCacheEntryRemovedException} operation will be retried. * * @param cacheCtx Cache context. * @param entryKey Entry key. * @param updateClojure Near entry update clojure. * @throws IgniteCheckedException If update is failed. */ private void updateNearEntrySafely( GridCacheContext cacheCtx, KeyCacheObject entryKey, NearEntryUpdateClojure<GridCacheEntryEx> updateClojure ) throws IgniteCheckedException { while (true) { GridCacheEntryEx nearCached = cacheCtx.dht().near().peekEx(entryKey); if (nearCached == null) break; try { updateClojure.apply(nearCached); break; } catch (GridCacheEntryRemovedException ignored) { if (log.isDebugEnabled()) log.debug("Got removed entry during transaction commit (will retry): " + nearCached); cacheCtx.dht().near().removeEntry(nearCached); } } }
/** * @param key Key to check. * @throws Exception If failed. */ private void checkBackupConsistency(int key) throws Exception { IgniteCache<Integer, String> cache = jcache(0); String val = Integer.toString(key); cache.put(key, val); GridDhtCacheAdapter<Integer, String> dht0 = dht(0); GridDhtCacheAdapter<Integer, String> dht1 = dht(1); assertNull(near(0).peekEx(key)); assertNull(near(1).peekEx(key)); assertEquals(val, localPeek(dht0, key)); assertEquals(val, localPeek(dht1, key)); }
GridNearCacheEntry nearEntry = (GridNearCacheEntry)near.peekEx(k); GridDhtCacheEntry dhtEntry = (GridDhtCacheEntry)dht.peekEx(k);
/** * Entries for key. * * @param key Key. * @return Entries. * @throws IgniteCheckedException If failed. */ private String entries(int key) throws IgniteCheckedException { if (partitioned()) { GridNearCacheAdapter<Integer, String> near1 = near(1); GridNearCacheAdapter<Integer, String> near2 = near(2); GridDhtCacheAdapter<Integer, String> dht1 = dht(1); GridDhtCacheAdapter<Integer, String> dht2 = dht(2); return "Entries [ne1=" + near1.peekEx(key) + ", de1=" + dht1.peekEx(key) + ", ne2=" + near2.peekEx(key) + ", de2=" + dht2.peekEx(key) + ']'; } return "Entries [e1=" + "(" + key + ", " + ((IgniteKernal)ignite1).internalCache(DEFAULT_CACHE_NAME).get(key) + ")" + ", e2=" + "(" + key + ", " + ((IgniteKernal)ignite2).internalCache(DEFAULT_CACHE_NAME).get(key) + ")" + ']'; }
GridCacheEntryEx nearEntry = near(near).peekEx(CNTR_KEY);
/** @throws Exception If failed. */ @Test public void testTransactionSingleGet() throws Exception { IgniteCache<Object, Object> cache = jcache(); cache.put(1, "val1"); assertEquals("val1", dhtPeek(1)); assertNull(near().peekEx(1)); Transaction tx = grid().transactions().txStart(PESSIMISTIC, REPEATABLE_READ); assertEquals("val1", cache.get(1)); tx.commit(); assertEquals("val1", dhtPeek(1)); assertNull(near().peekEx(1)); }
/** * @param key Key. * @throws Exception If failed. */ private void checkTransactionSingleGet(int key) throws Exception { IgniteCache<Integer, String> cache = jcache(0); String val = Integer.toString(key); cache.put(key, val); assertEquals(val, dhtPeek(0, key)); assertEquals(val, dhtPeek(1, key)); assertNull(near(0).peekEx(key)); assertNull(near(1).peekEx(key)); if (transactional()) { try (Transaction tx = grid(0).transactions().txStart(PESSIMISTIC, REPEATABLE_READ)) { // Simple transaction get. assertEquals(val, cache.get(key)); tx.commit(); } } else assertEquals(val, cache.get(key)); assertEquals(val, dhtPeek(0, key)); assertEquals(val, dhtPeek(1, key)); assertNull(near(0).peekEx(key)); assertNull(near(1).peekEx(key)); }
/** @throws Exception If failed. */ @Test public void testTransactionSingleGetRemove() throws Exception { IgniteCache<Object, Object> cache = jcache(); cache.put(1, "val1"); assertEquals("val1", dhtPeek(1)); assertNull(near().peekEx(1)); Transaction tx = grid().transactions().txStart(PESSIMISTIC, REPEATABLE_READ); assertEquals("val1", cache.get(1)); assertTrue(cache.remove(1)); tx.commit(); assertNull(dhtPeek(1)); assertNull(near().peekEx(1)); }
assertNull(near(cache1).peekEx(i)); assertNotNull((dht(cache1).localPeek(i, null)));
assertNull(dhtPeek(2, key1)); assertNull(near(0).peekEx(key1)); assertNull(near(1).peekEx(key1)); assertNull(near(2).peekEx(key1)); assertEquals(val2, dhtPeek(2, key2)); assertEquals(val2, near(0).peekEx(key2).wrap().getValue()); assertNull(near(1).peekEx(key2)); assertNull(near(2).peekEx(key2)); assertEquals(val22, dhtPeek(2, key2)); assertEquals(val22, near(0).peekEx(key2).wrap().getValue()); assertNull(near(1).peekEx(key2)); assertNull(near(2).peekEx(key2)); assertNull(dhtPeek(2, key2)); assertTrue(near(0).peekEx(key2) == null || near(0).peekEx(key2).deleted()); assertNull(near(1).peekEx(key2)); assertNull(near(2).peekEx(key2)); assertNull(near(0).peekEx(key1)); assertNull(near(1).peekEx(key1)); assertNull(near(2).peekEx(key1));
assertNull(near(pri).peekEx(CNTR_KEY));