/** {@inheritDoc} */ @Override public Iterable<T> findAll() { final Iterator<Cache.Entry<ID, T>> iter = cache.iterator(); return new Iterable<T>() { @Override public Iterator<T> iterator() { return new Iterator<T>() { @Override public boolean hasNext() { return iter.hasNext(); } @Override public T next() { return iter.next().getValue(); } @Override public void remove() { iter.remove(); } }; } }; }
/** {@inheritDoc} */ @Override public Iterable<T> findAll() { final Iterator<Cache.Entry<ID, T>> iter = cache.iterator(); return new Iterable<T>() { @Override public Iterator<T> iterator() { return new Iterator<T>() { @Override public boolean hasNext() { return iter.hasNext(); } @Override public T next() { return iter.next().getValue(); } @Override public void remove() { iter.remove(); } }; } }; }
/** {@inheritDoc} */ @Override public Iterator<IgniteBiTuple<String, ModelDescriptor>> iterator() { return StreamSupport.stream(Spliterators.spliteratorUnknownSize(models.iterator(), Spliterator.ORDERED), false) .map(e -> new IgniteBiTuple<>(e.getKey(), e.getValue())) .iterator(); } }
/** * @param g Grid. * @return Random entry from cache. */ @Nullable private Cache.Entry<Integer, Object> randomEntry(Ignite g) { return g.<Integer, Object>cache(DEFAULT_CACHE_NAME).iterator().next(); }
@Override public Object call() { return ignite.cache("binary").iterator().next(); } },
@Override public Object call() { return ignite.cache("binary").iterator().next(); } },
@SuppressWarnings("UnusedAssignment") @Override public Object call() throws Exception { Iterator<Cache.Entry<Integer, String>> it = c.iterator(); for (int i = 0; i < 1000; i++) { c.put(i, String.valueOf(i)); if (i == 0) it.hasNext(); } // Make sure that hard references are gone. it = null; System.gc(); return null; } }, Math.min(16, Runtime.getRuntime().availableProcessors()));
/** * Checks iterators are cleared after using. * * @param cache Cache. * @throws Exception If failed. */ private void checkIteratorEmpty(IgniteCache<String, Integer> cache) throws Exception { int cnt = 5; for (int i = 0; i < cnt; ++i) { Iterator<Cache.Entry<String, Integer>> iter = cache.iterator(); iter.next(); assert iter.hasNext(); } System.gc(); waitForIteratorsCleared(cache, 10); }
/** * If hasNext() is called repeatedly, it should return the same result. */ private void checkIteratorHasNext() { Iterator<Cache.Entry<String, Integer>> iter = jcache(0).iterator(); assertEquals(iter.hasNext(), iter.hasNext()); while (iter.hasNext()) iter.next(); assertFalse(iter.hasNext()); }
/** * If hasNext() is called repeatedly, it should return the same result. */ private void checkIteratorHasNext() { Iterator<Cache.Entry<Object, Object>> iter = jcache(0).iterator(); assertEquals(iter.hasNext(), iter.hasNext()); while (iter.hasNext()) iter.next(); assertFalse(iter.hasNext()); }
/** * @param cache Cache. * @param key Key to remove. */ private void removeCacheIterator(IgniteCache<String, Integer> cache, String key) { Iterator<Cache.Entry<String, Integer>> iter = cache.iterator(); int delCnt = 0; while (iter.hasNext()) { Cache.Entry<String, Integer> cur = iter.next(); if (cur.getKey().equals(key)) { iter.remove(); delCnt++; } } assertEquals(1, delCnt); }
/** * @param cache Cache. * @param key Key to remove. */ private void removeCacheIterator(IgniteCache<String, Integer> cache, String key) { Iterator<Cache.Entry<String, Integer>> iter = cache.iterator(); int delCnt = 0; while (iter.hasNext()) { Cache.Entry<String, Integer> cur = iter.next(); if (cur.getKey().equals(key)) { iter.remove(); delCnt++; } } assertEquals(1, delCnt); }
@Override public List<Person> applyx(CountDownLatch startLatch, CountDownLatch endLatch2) throws IgniteCheckedException { Iterator<Cache.Entry<Integer, Person>> it = cache().iterator(); List<Cache.Entry<Integer, Person>> pres = new ArrayList<>(); for (int i = 0; i < 50; i++) pres.add(it.next()); if (startLatch != null) startLatch.countDown(); while (it.hasNext()) pres.add(it.next()); if (endLatch2 != null) U.await(endLatch2); return entriesToPersons(pres); } };
/** * Checks iterators are cleared after using. * * @param cache Cache. * @throws Exception If failed. */ private void checkIteratorEmpty(IgniteCache<String, Integer> cache) throws Exception { int cnt = 5; for (int i = 0; i < cnt; ++i) { Iterator<Cache.Entry<String, Integer>> iter = cache.iterator(); iter.next(); assert iter.hasNext(); } System.gc(); for (int i = 0; i < 10; i++) { try { cache.size(); // Trigger weak queue poll. checkIteratorsCleared(); } catch (AssertionFailedError e) { if (i == 9) throw e; log.info("Set iterators not cleared, will wait"); Thread.sleep(1000); } } }
/** * @param cache Cache. * @param entries Expected entries in the cache. */ private void checkIteratorCache(IgniteCache<String, Integer> cache, Map<String, Integer> entries) { Iterator<Cache.Entry<String, Integer>> iter = cache.iterator(); int cnt = 0; while (iter.hasNext()) { Cache.Entry<String, Integer> cur = iter.next(); assertTrue(entries.containsKey(cur.getKey())); assertEquals(entries.get(cur.getKey()), cur.getValue()); cnt++; } assertEquals(entries.size(), cnt); }
/** * @param cache Cache. * @param entries Expected entries in the cache. */ private void checkIteratorCache(IgniteCache cache, Map<String, Integer> entries) { Iterator<Cache.Entry<String, Integer>> iter = cache.iterator(); int cnt = 0; while (iter.hasNext()) { Cache.Entry<String, Integer> cur = iter.next(); assertTrue(entries.containsKey(cur.getKey())); assertEquals(entries.get(cur.getKey()), cur.getValue()); cnt++; } assertEquals(entries.size(), cnt); }
/** * Checks that cache is empty. * * @param cache Cache to check. * @throws org.apache.ignite.internal.IgniteInterruptedCheckedException If interrupted while sleeping. */ @SuppressWarnings({"ErrorNotRethrown", "TypeMayBeWeakened"}) private void checkEmpty(IgniteCache<String, String> cache) throws IgniteInterruptedCheckedException { for (int i = 0; i < 3; i++) { try { assertTrue(!cache.iterator().hasNext()); break; } catch (AssertionError e) { if (i == 2) throw e; info(">>> Cache is not empty, flushing evictions."); U.sleep(1000); } } } }
/** * @param cache Cache. * @param entries Expected entries in the cache. */ private void checkIteratorRemove(IgniteCache<String, Integer> cache, Map<String, Integer> entries) { // Check that we can remove element. String rmvKey = Integer.toString(5); removeCacheIterator(cache, rmvKey); entries.remove(rmvKey); assertFalse(cache.containsKey(rmvKey)); assertNull(cache.get(rmvKey)); checkIteratorCache(entries); // Check that we cannot call Iterator.remove() without next(). final Iterator<Cache.Entry<String, Integer>> iter = jcache(0).iterator(); assertTrue(iter.hasNext()); iter.next(); iter.remove(); GridTestUtils.assertThrows(log, new Callable<Object>() { @Override public Void call() throws Exception { iter.remove(); return null; } }, IllegalStateException.class, null); }
/** * @param cache Cache. * @param entries Expected entries in the cache. */ private void checkIteratorRemove(IgniteCache<String, Integer> cache, Map<String, Integer> entries) { // Check that we can remove element. String rmvKey = Integer.toString(5); removeCacheIterator(cache, rmvKey); entries.remove(rmvKey); assertFalse(cache.containsKey(rmvKey)); assertNull(cache.get(rmvKey)); checkIteratorCache(entries); // Check that we cannot call Iterator.remove() without next(). final Iterator<Cache.Entry<Object, Object>> iter = jcache(0).iterator(); assertTrue(iter.hasNext()); iter.next(); iter.remove(); GridTestUtils.assertThrows(log, new Callable<Object>() { @Override public Void call() throws Exception { iter.remove(); return null; } }, IllegalStateException.class, null); }
/** * @param key Key. * @throws Exception If failed. */ private void zeroOnAccess(Integer key) throws Exception { IgniteCache<Integer, Integer> cache = jcache(); cache.put(key, 1); // Create. assertEquals((Integer)1, cache.get(key)); // Access should expire entry. waitExpired(F.asList(key)); assertFalse(cache.iterator().hasNext()); }