/** * @param entry Entry. * @return Value. */ @Nullable protected CacheObject peekVisibleValue(GridCacheEntryEx entry) { return locked ? entry.rawGet() : entry.peekVisibleValue(); }
GridCacheEntryEx entryEx = entry.cached(); CacheObject cacheVal = entryEx != null ? entryEx.rawGet() : null;
@Override public boolean applyx() { try { if (c.get(key) != null) return false; // Get "cache" field from GridCacheProxyImpl. GridCacheAdapter c0 = cacheFromCtx(c); if (!c0.context().deferredDelete()) { GridCacheEntryEx e0 = c0.entryEx(key); return e0 == null || (e0.rawGet() == null && e0.valueBytes() == null); } else return true; } catch (GridCacheEntryRemovedException e) { throw new RuntimeException(e); } } }, Math.min(ttl * 10, getTestTimeout())));
@Override public boolean applyx() { try { Integer val = c.get(key); if (val != null) { info("Value is in cache [key=" + key + ", val=" + val + ']'); return false; } // Get "cache" field from GridCacheProxyImpl. GridCacheAdapter c0 = cacheFromCtx(c); if (!c0.context().deferredDelete()) { GridCacheEntryEx e0 = c0.peekEx(key); return e0 == null || (e0.rawGet() == null && e0.valueBytes() == null); } else return true; } catch (GridCacheEntryRemovedException e) { throw new RuntimeException(e); } } }, Math.min(ttl * 10, getTestTimeout())));
@Override public boolean applyx() { try { Integer val = c.get(key); if (val != null) { info("Value is in cache [key=" + key + ", val=" + val + ']'); return false; } // Get "cache" field from GridCacheProxyImpl. GridCacheAdapter c0 = cacheFromCtx(c); if (!c0.context().deferredDelete()) { GridCacheEntryEx e0 = c0.peekEx(key); return e0 == null || (e0.rawGet() == null && e0.valueBytes() == null); } else return true; } catch (GridCacheEntryRemovedException e) { throw new RuntimeException(e); } } }, Math.min(ttl * 10, getTestTimeout())));
/** {@inheritDoc} */ @Override public void batchEvict(Collection<?> keys, @Nullable GridCacheVersion obsoleteVer) throws IgniteCheckedException { boolean recordable = cctx.events().isRecordable(EVT_CACHE_ENTRY_EVICTED); GridCacheAdapter cache = cctx.cache(); // Get all participating entries to avoid deadlock. for (Object k : keys) { KeyCacheObject cacheKey = cctx.toCacheKeyObject(k); GridCacheEntryEx entry = cache.peekEx(cacheKey); if (entry != null && entry.evictInternal(GridCacheVersionManager.EVICT_VER, null, false)) { if (plcEnabled) notifyPolicy(entry); if (recordable) cctx.events().addEvent(entry.partition(), entry.key(), cctx.nodeId(), null, null, null, EVT_CACHE_ENTRY_EVICTED, null, false, entry.rawGet(), entry.hasValue(), null, null, null, false); } } }
@Override public boolean applyx() throws IgniteCheckedException { try { Integer val = c.get(key); if (val != null) { info("Value is in cache [key=" + key + ", val=" + val + ']'); return false; } if (!internalCache(c).context().deferredDelete()) { GridCacheEntryEx e0 = internalCache(c).peekEx(key); return e0 == null || (e0.rawGet() == null && e0.valueBytes() == null); } else return true; } catch (GridCacheEntryRemovedException ignored) { // If e0.valueBytes() thrown this exception then entry has been removed. return true; } } }, Math.min(ttl * 10, getTestTimeout())));
/** * Test Optimistic repeatable read write-through. * * @throws Exception If failed. */ @Test public void testOptimisticTxWriteThrough() throws Exception { IgniteCache<Object, Object> near = jcache(); GridCacheAdapter<Integer, String> dht = dht(); try (Transaction tx = grid().transactions().txStart(OPTIMISTIC, REPEATABLE_READ) ) { near.put(2, "2"); near.put(3, "3"); assert "2".equals(near.get(2)); assert "3".equals(near.get(3)); GridCacheEntryEx entry = dht.peekEx(2); assert entry == null || entry.rawGet() == null : "Invalid entry: " + entry; tx.commit(); } assert "2".equals(near.get(2)); assert "3".equals(near.get(3)); assert "2".equals(dht.get(2)); assert "3".equals(dht.get(3)); assertEquals(2, near.size()); assertEquals(2, near.size()); assertEquals(2, dht.size()); assertEquals(2, dht.size()); }
CacheObject oldVal = recordable ? entry.rawGet() : null;
/** * @param cacheName Cache to check. * @param vals Key-value pairs. * @throws Exception If failed. */ private void checkEntries(String cacheName, Object... vals) throws Exception { for (int g = 0; g < NODES_CNT; g++) { IgniteKernal kernal = (IgniteKernal)grid(g); GridCacheAdapter<Object, Object> cache = kernal.context().cache().internalCache(cacheName); for (int i = 0; i < vals.length; i += 2) { Object key = vals[i]; Object val = vals[i + 1]; GridCacheEntryEx entry = cache.peekEx(key); if (entry != null) { assertFalse("Entry is locked [g=" + g + ", cacheName=" + cacheName + ", entry=" + entry + ']', entry.lockedByAny()); assertEquals("Invalid entry value [g=" + g + ", cacheName=" + cacheName + ", entry=" + entry + ']', val, entry.rawGet().value(cache.context().cacheObjectContext(), false)); } } } } }
assertEquals(Integer.valueOf(0), dhtEntry.rawGet().value(dhtEntry.context().cacheObjectContext(), false));
CacheObject val = cached.rawGet();
/** {@inheritDoc} */ @Override protected void afterTest() throws Exception { for (int i = 0; i < gridCount(); i++) { GridCacheAdapter<Object, Object> c = ((IgniteKernal)grid(i)).internalCache(DEFAULT_CACHE_NAME); for (GridCacheEntryEx e : c.map().entries(c.context().cacheId())) { Object key = e.key().value(c.context().cacheObjectContext(), false); Object val = CU.value(e.rawGet(), c.context(), false); if (key instanceof BinaryObject) assert ((BinaryObjectImpl)key).detached() : val; if (val instanceof BinaryObject) assert ((BinaryObjectImpl)val).detached() : val; } } IgniteCache<Object, Object> c = jcache(0); for (int i = 0; i < ENTRY_CNT; i++) c.remove(i); assertEquals(0, c.size()); }
assertNotNull(e.rawGet());
CacheObject obj = e.rawGet();
CacheObject obj = e.rawGet();