@Override public void run() { int id = idGen.getAndIncrement(); int step = 10; assert cnt % step == 0; int start = id * cnt; int end = start + cnt; Collection<Long> set = new HashSet<>(step); for (int i = start; i < end; i++) lru.offer(0, i, i); for (int i = start; i < end; i += step) { for (int j = 0; j < step; j++) { long qAddr = lru.prePoll(); assertTrue(qAddr != 0); assertTrue(set.add(qAddr)); } for (long qAddr : set) lru.poll(qAddr); set.clear(); } } }, 10);
/** * @param cnt Count. */ private void checkOffer(int cnt) { init(); for (int i = 0; i < cnt; i++) lru.offer(0, i, i); assertEquals(cnt, lru.size()); info("Finished check offer for stripes count: " + stripes); }
/** * @param cnt Count. */ private void checkRemove(int cnt) { init(); Collection<Long> set = new HashSet<>(cnt); for (int i = 0; i < cnt; i++) assertTrue(set.add(lru.offer(0, i, i))); assertEquals(cnt, lru.size()); for (long addr : set) lru.remove(addr); assertEquals(0, lru.size()); }
/** * @param hash Hash. * @param keyBytes Key bytes. */ void enableEviction(int hash, byte[] keyBytes) { assert lru != null; long binAddr = writeLock(hash); try { long addr = Bin.first(binAddr, mem); while (addr != 0) { if (Entry.keyEquals(addr, keyBytes, mem)) { long qAddr = Entry.queueAddress(addr, mem); if (qAddr == 0) { qAddr = lru.offer(part, addr, hash); Entry.queueAddress(addr, qAddr, mem); } return; } addr = Entry.nextAddress(addr, mem); } } finally { writeUnlock(); } }
/** * @param cnt Count. */ private void checkPoll(int cnt) { init(); int step = 10; assert cnt % step == 0; Collection<Long> set = new HashSet<>(step); for (int i = 0; i < cnt; i++) lru.offer(0, i, i); assertEquals(cnt, lru.size()); for (int i = 0; i < cnt; i += step) { for (int j = 0; j < step; j++) { long qAddr = lru.prePoll(); assertTrue(qAddr != 0); assertTrue(set.add(qAddr)); } for (long qAddr : set) lru.poll(qAddr); set.clear(); } assertEquals(0, lru.size()); }
long qAddr = lru == null ? 0 : lru.offer(part, addr, hash);
/** * @param hash Hash. * @param keyBytes Key bytes. */ void enableEviction(int hash, byte[] keyBytes) { assert lru != null; long binAddr = writeLock(hash); try { long addr = Bin.first(binAddr, mem); while (addr != 0) { if (Entry.keyEquals(addr, keyBytes, mem)) { long qAddr = Entry.queueAddress(addr, mem); if (qAddr == 0) { qAddr = lru.offer(part, addr, hash); Entry.queueAddress(addr, qAddr, mem); } return; } addr = Entry.nextAddress(addr, mem); } } finally { writeUnlock(); } }
long qAddr = lru == null ? 0 : lru.offer(part, addr, hash);