private void testConcurrentIterate() { MVStore s = new MVStore.Builder().pageSplitSize(3).open(); s.setVersionsToKeep(100); final MVMap<Integer, Integer> map = s.openMap("test"); final int len = 10; final Random r = new Random(); Task t = new Task() { @Override public void call() throws Exception { while (!stop) { int x = r.nextInt(len); if (r.nextBoolean()) { map.remove(x); } else { map.put(x, r.nextInt(100)); } } } }; t.execute(); for (int k = 0; k < 10000; k++) { Iterator<Integer> it = map.keyIterator(r.nextInt(len)); long old = s.getCurrentVersion(); s.commit(); while (map.getVersion() == old) { Thread.yield(); } while (it.hasNext()) { it.next(); } } t.get(); s.close(); }