@Override public OperationContext newContext(final Executor executor1) { return new OperationContextImpl(executor1); }
@Override public void clearContext() { OperationContextImpl.clearContext(); }
@Override public void executeOnCompletion(IOCallback runnable) { executeOnCompletion(runnable, false); }
ExecutorService executor = Executors.newSingleThreadExecutor(ActiveMQThreadFactory.defaultThreadFactory()); try { OperationContextImpl impl = new OperationContextImpl(executor); final CountDownLatch latch1 = new CountDownLatch(1); final CountDownLatch latch2 = new CountDownLatch(1); impl.executeOnCompletion(new IOCallback() { impl.storeLineUp(); for (int i = 0; i < 3; i++) impl.pageSyncLineUp(); impl.executeOnCompletion(new IOCallback() { impl.done(); for (int i = 0; i < 2; i++) impl.pageSyncDone(); impl.done(); impl.pageSyncDone();
final OperationContextImpl context = new OperationContextImpl(executor) { @Override public void complete() { context.storeLineUp(); context.onError(ActiveMQExceptionType.UNSUPPORTED_PACKET.getCode(), "Poop happens!"); context.executeOnCompletion(new IOCallback() {
long tx = seqGenerator.incrementAndGet(); OperationContextImpl ctx = new OperationContextImpl(executor); storage.setContext(ctx); logger.info("Committed " + tx); ctx.executeOnCompletion(new IOCallback() { @Override public void onError(int errorCode, String errorMessage) {
@Override public boolean waitCompletion(final long timeout) throws InterruptedException, ActiveMQException { SimpleWaitIOCallback waitCallback = new SimpleWaitIOCallback(); executeOnCompletion(waitCallback); complete(); if (timeout == 0) { waitCallback.waitCompletion(); return true; } else { return waitCallback.waitCompletion(timeout); } }
final OperationContextImpl impl = new OperationContextImpl(executor) { @Override public void complete() { impl.storeLineUp(); impl.done();
@Test public void testSyncPage() throws Exception { Configuration config = createDefaultInVMConfig(); server = createServer(true, config, PagingTest.PAGE_SIZE, PagingTest.PAGE_MAX); server.start(); try { server.addAddressInfo(new AddressInfo(PagingTest.ADDRESS, RoutingType.ANYCAST)); server.createQueue(PagingTest.ADDRESS, RoutingType.ANYCAST, PagingTest.ADDRESS, null, true, false); final CountDownLatch pageUp = new CountDownLatch(0); final CountDownLatch pageDone = new CountDownLatch(1); OperationContext ctx = new DummyOperationContext(pageUp, pageDone); OperationContextImpl.setContext(ctx); PagingManager paging = server.getPagingManager(); PagingStore store = paging.getPageStore(ADDRESS); store.sync(); assertTrue(pageUp.await(10, TimeUnit.SECONDS)); assertTrue(pageDone.await(10, TimeUnit.SECONDS)); server.stop(); } finally { try { server.stop(); } catch (Throwable ignored) { } OperationContextImpl.clearContext(); } }
@Override public OperationContext getContext() { return OperationContextImpl.getContext(executorFactory); }
@Override public void waitCompletion() throws Exception { waitCompletion(0); }
@Override public void complete() { super.complete(); latch.countDown(); }
@Override public void setContext(final OperationContext context) { OperationContextImpl.setContext(context); }
@Override public synchronized void done() { stored++; checkTasks(); }
public static final OperationContext getContext() { return getContext(null); }
@Override public void run() { try { impl.waitCompletion(5000); } catch (Throwable e) { e.printStackTrace(); numberOfFailures.incrementAndGet(); } } };
@Override public void complete() { super.complete(); latch.countDown(); }
@Test public void testSyncPageTX() throws Exception { Configuration config = createDefaultInVMConfig(); server = createServer(true, config, PagingTest.PAGE_SIZE, PagingTest.PAGE_MAX); server.start(); server.createQueue(PagingTest.ADDRESS, RoutingType.ANYCAST, PagingTest.ADDRESS, null, true, false); final CountDownLatch pageUp = new CountDownLatch(0); final CountDownLatch pageDone = new CountDownLatch(1); OperationContext ctx = new DummyOperationContext(pageUp, pageDone); OperationContextImpl.setContext(ctx); PagingManager paging = server.getPagingManager(); PagingStore store = paging.getPageStore(ADDRESS); store.sync(); assertTrue(pageUp.await(10, TimeUnit.SECONDS)); assertTrue(pageDone.await(10, TimeUnit.SECONDS)); }
@Override public synchronized void pageSyncDone() { paged++; checkTasks(); }
@Override public void run() { try { // If any IO is done inside the callback, it needs to be done on a new context OperationContextImpl.clearContext(); task.done(); } finally { executorsPending.decrementAndGet(); } } });