if (ack.isInTransaction() || !task.cancel()) { try { task.future.get();
protected void addQueueTask(KahaDBMessageStore store, StoreQueueTask task) throws IOException { store.asyncTaskMap.put(new AsyncJobKey(task.getMessage().getMessageId(), store.getDestination()), task); this.queueExecutor.execute(task); }
if (ack.isInTransaction() || !task.cancel()) { try { task.future.get();
if (ack.isInTransaction() || !task.cancel()) { try { task.future.get();
if (ack.isInTransaction() || !task.cancel()) { try { task.future.get();
@Override public void removeAsyncMessage(ConnectionContext context, MessageAck ack) throws IOException { if (isConcurrentStoreAndDispatchQueues()) { AsyncJobKey key = new AsyncJobKey(ack.getLastMessageId(), getDestination()); StoreQueueTask task = null; synchronized (asyncTaskMap) { task = (StoreQueueTask) asyncTaskMap.get(key); } if (task != null) { if (!task.cancel()) { try { task.future.get(); } catch (InterruptedException e) { throw new InterruptedIOException(e.toString()); } catch (Exception ignored) { LOG.debug("removeAsync: cannot cancel, waiting for add resulted in ex", ignored); } removeMessage(context, ack); } else { synchronized (asyncTaskMap) { asyncTaskMap.remove(key); } } } else { removeMessage(context, ack); } } else { removeMessage(context, ack); } }
@Override public ListenableFuture<Object> asyncAddQueueMessage(final ConnectionContext context, final Message message) throws IOException { if (isConcurrentStoreAndDispatchQueues()) { message.beforeMarshall(wireFormat); StoreQueueTask result = new StoreQueueTask(this, context, message); ListenableFuture<Object> future = result.getFuture(); message.getMessageId().setFutureOrSequenceLong(future); message.setRecievedByDFBridge(true); // flag message as concurrentStoreAndDispatch result.aquireLocks(); synchronized (asyncTaskMap) { addQueueTask(this, result); if (indexListener != null) { indexListener.onAdd(new IndexListener.MessageContext(context, message, null)); } } return future; } else { return super.asyncAddQueueMessage(context, message); } }
@Override public ListenableFuture<Object> asyncAddQueueMessage(final ConnectionContext context, final Message message) throws IOException { if (isConcurrentStoreAndDispatchQueues()) { message.beforeMarshall(wireFormat); StoreQueueTask result = new StoreQueueTask(this, context, message); ListenableFuture<Object> future = result.getFuture(); message.getMessageId().setFutureOrSequenceLong(future); message.setRecievedByDFBridge(true); // flag message as concurrentStoreAndDispatch result.aquireLocks(); synchronized (asyncTaskMap) { addQueueTask(this, result); if (indexListener != null) { indexListener.onAdd(new IndexListener.MessageContext(context, message, null)); } } return future; } else { return super.asyncAddQueueMessage(context, message); } }
@Override public ListenableFuture<Object> asyncAddQueueMessage(final ConnectionContext context, final Message message) throws IOException { if (isConcurrentStoreAndDispatchQueues()) { message.beforeMarshall(wireFormat); StoreQueueTask result = new StoreQueueTask(this, context, message); ListenableFuture<Object> future = result.getFuture(); message.getMessageId().setFutureOrSequenceLong(future); message.setRecievedByDFBridge(true); // flag message as concurrentStoreAndDispatch result.aquireLocks(); synchronized (asyncTaskMap) { addQueueTask(this, result); if (indexListener != null) { indexListener.onAdd(new IndexListener.MessageContext(context, message, null)); } } return future; } else { return super.asyncAddQueueMessage(context, message); } }
public void run() { this.store.doneTasks++; try { if (this.done.compareAndSet(false, true)) { this.store.addMessage(context, message); removeQueueTask(this.store, this.message.getMessageId()); this.future.complete(); } else if (cancelledTaskModMetric > 0 && this.store.canceledTasks++ % cancelledTaskModMetric == 0) { System.err.println(this.store.dest.getName() + " cancelled: " + (this.store.canceledTasks / this.store.doneTasks) * 100); this.store.canceledTasks = this.store.doneTasks = 0; } } catch (Exception e) { this.future.setException(e); } finally { releaseLocks(); } }
protected void addQueueTask(KahaDBMessageStore store, StoreQueueTask task) throws IOException { store.asyncTaskMap.put(new AsyncJobKey(task.getMessage().getMessageId(), store.getDestination()), task); this.queueExecutor.execute(task); }
public boolean cancel() { releaseLocks(); if (this.done.compareAndSet(false, true)) { return this.future.cancel(false); } return false; }
protected void addQueueTask(KahaDBMessageStore store, StoreQueueTask task) throws IOException { store.asyncTaskMap.put(new AsyncJobKey(task.getMessage().getMessageId(), store.getDestination()), task); this.queueExecutor.execute(task); }
protected void addQueueTask(KahaDBMessageStore store, StoreQueueTask task) throws IOException { synchronized (store.asyncTaskMap) { store.asyncTaskMap.put(new AsyncJobKey(task.getMessage().getMessageId(), store.getDestination()), task); } this.queueExecutor.execute(task); }
protected void addQueueTask(KahaDBMessageStore store, StoreQueueTask task) throws IOException { store.asyncTaskMap.put(new AsyncJobKey(task.getMessage().getMessageId(), store.getDestination()), task); this.queueExecutor.execute(task); }
@Override public Future<Object> asyncAddQueueMessage(final ConnectionContext context, final Message message) throws IOException { if (isConcurrentStoreAndDispatchQueues()) { StoreQueueTask result = new StoreQueueTask(this, context, message); result.aquireLocks(); addQueueTask(this, result); return result.getFuture(); } else { return super.asyncAddQueueMessage(context, message); } }
@Override public ListenableFuture<Object> asyncAddQueueMessage(final ConnectionContext context, final Message message) throws IOException { if (isConcurrentStoreAndDispatchQueues()) { message.beforeMarshall(wireFormat); StoreQueueTask result = new StoreQueueTask(this, context, message); ListenableFuture<Object> future = result.getFuture(); message.getMessageId().setFutureOrSequenceLong(future); message.setRecievedByDFBridge(true); // flag message as concurrentStoreAndDispatch result.aquireLocks(); synchronized (asyncTaskMap) { addQueueTask(this, result); if (indexListener != null) { indexListener.onAdd(new IndexListener.MessageContext(context, message, null)); } } return future; } else { return super.asyncAddQueueMessage(context, message); } }