@Override public void run() { async.run(); } });
@Override public void run() { async.run(); } });
@Override public void run() { async.run(); } });
@Override public void run() { async.run(); } });
private static void runOneCycle(AsyncIndexUpdate async){ async.run(); }
@Override public synchronized void run() { super.run(); }
@Override public String call() throws Exception { long t0 = nanoTime(); boolean done = false; while (!done) { async.run(); done = async.isFinished(); } return "Reindex completed in " + formatTime(nanoTime() - t0); } });
@Override public String call() throws Exception { long t0 = nanoTime(); boolean done = false; while (!done) { async.run(); done = async.isFinished(); } return "Reindex completed in " + formatTime(nanoTime() - t0); } });
@Override public String call() throws Exception { long t0 = nanoTime(); boolean done = false; while (!done) { async.run(); done = async.isFinished(); } return "Reindex completed in " + formatTime(nanoTime() - t0); } });
private void assertRun(AsyncIndexUpdate a, boolean failing) { a.run(); assertEquals("Unexpected failiure flag", failing, a.isFailing()); }
@Test public void indexedUpto() throws Exception{ AsyncIndexUpdate async = new AsyncIndexUpdate("async", store, provider); async.run(); AsyncIndexUpdate async2 = new AsyncIndexUpdate("foo-async", store, provider); async2.run(); Map<String, Long> result = service.getIndexedUptoPerLane(); assertFalse(result.isEmpty()); assertTrue(result.get("async") > -1); assertTrue(result.get("foo-async") > -1); }
@Test public void testAsyncPropertyNoChanges() throws Exception { NodeStore store = new MemoryNodeStore(); assertTrue(Iterables.isEmpty(store.checkpoints())); AsyncIndexUpdate async = new AsyncIndexUpdate(ASYNC_REINDEX_VALUE, store, provider, true); async.run(); async.run(); async.close(); assertTrue(Iterables.isEmpty(store.checkpoints())); } }
@Test public void names() throws Exception{ AsyncIndexUpdate async = new AsyncIndexUpdate("async", store, provider); async.run(); AsyncIndexUpdate async2 = new AsyncIndexUpdate("foo-async", store, provider); async2.run(); Set<String> names = ImmutableSet.copyOf(service.getAsyncLanes()); assertThat(names, containsInAnyOrder("async", "foo-async")); service.bindStatsMBeans(async.getIndexStats()); service.bindStatsMBeans(async2.getIndexStats()); }
@Test public void noRunWhenClosed() throws Exception{ NodeStore store = new MemoryNodeStore(); IndexEditorProvider provider = new PropertyIndexEditorProvider(); AsyncIndexUpdate async = new AsyncIndexUpdate("async", store, provider); async.run(); async.close(); LogCustomizer lc = createLogCustomizer(Level.WARN); async.run(); assertEquals(1, lc.getLogs().size()); assertThat(lc.getLogs().get(0), containsString("Could not acquire run permit")); lc.finished(); async.close(); }
private void runAsyncIndex() { AsyncIndexUpdate async = (AsyncIndexUpdate) WhiteboardUtils.getService(wb, Runnable.class, input -> input instanceof AsyncIndexUpdate); assertNotNull(async); async.run(); if (async.isFailing()) { fail("AsyncIndexUpdate failed"); } root.refresh(); }
@Test public void testLeaseDisabled() throws Exception { // take care of initial reindex before AsyncIndexUpdate async = new AsyncIndexUpdate(name, store, provider).setLeaseTimeOut(0); async.run(); testContent(store); assertRunOk(async); testContent(store); assertRunOk(async); executed.set(true); }
@Test public void testPostPrepare() { // take care of initial reindex before new AsyncIndexUpdate(name, store, provider).run(); final IndexStatusListener l1 = new IndexStatusListener() { @Override protected void postPrepare() { executed.set(true); // lease must prevent this run assertRunKo(new AsyncIndexUpdate(name, store, provider)); } }; assertRunOk(new SpecialAsyncIndexUpdate(name, store, provider, l1)); }
@Test public void testPrePrepare() throws Exception { // take care of initial reindex before new AsyncIndexUpdate(name, store, provider).run(); final IndexStatusListener l1 = new IndexStatusListener() { @Override protected void prePrepare() { executed.set(true); assertRunOk(new AsyncIndexUpdate(name, store, provider)); } }; assertRunKo(new SpecialAsyncIndexUpdate(name, store, provider, l1)); }
@Test public void asyncStateChanged() throws Exception{ AsyncIndexUpdate async = new AsyncIndexUpdate("async", store, provider); async.run(); AsyncIndexUpdate async2 = new AsyncIndexUpdate("foo-async", store, provider); async2.run(); NodeState root = store.getRoot(); assertFalse(service.hasIndexerUpdatedForAnyLane(root, root)); NodeBuilder builder = store.getRoot().builder(); builder.child(":async").setProperty(AsyncIndexUpdate.lastIndexedTo("async"), 42L); store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); assertTrue(service.hasIndexerUpdatedForAnyLane(root, store.getRoot())); }
@Test public void locking() throws Exception{ new AsyncIndexUpdate(name, store, provider).run(); assertFalse(getAsync().hasProperty(AsyncIndexUpdate.leasify(name))); ClusterNodeStoreLock lock = new ClusterNodeStoreLock(store); ClusteredLockToken token = lock.lock("async"); assertTrue(getAsync().hasProperty(AsyncIndexUpdate.leasify(name))); assertTrue(lock.isLocked(name)); lock.unlock(token); assertFalse(getAsync().hasProperty(AsyncIndexUpdate.leasify(name))); assertFalse(lock.isLocked(name)); }