@Override public void execute(final Runnable command) { getDelegate().execute(wrapRunnable(command)); }
@Override public <T> ListenableFuture<T> submit(final Callable<T> task) { return wrapListenableFuture(super.submit(wrapCallable(task))); }
@Override public <T> ListenableFuture<T> submit(final Runnable task, final T result) { return wrapListenableFuture(super.submit(wrapRunnable(task), result)); }
@Override protected SerializedDOMDataBroker create() { // This Databroker is dedicated for netconf metadata, not expected to be under heavy load ExecutorService listenableFutureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(1, 100, "commits", getClass()); ExecutorService commitExecutor = SpecialExecutors.newBoundedSingleThreadExecutor(100, "WriteTxCommit", getClass()); // TODO HONEYCOMB-164 try to provide more lightweight implementation of DataBroker Map<LogicalDatastoreType, DOMStore> map = new LinkedHashMap<>(); map.put(LogicalDatastoreType.CONFIGURATION, cfgDataStore); map.put(LogicalDatastoreType.OPERATIONAL, operDataStore); return new SerializedDOMDataBroker(map, new DeadlockDetectingListeningExecutorService(commitExecutor, TransactionCommitDeadlockException.DEADLOCK_EXCEPTION_SUPPLIER, listenableFutureExecutor)); } }
private @NonNull Runnable wrapRunnable(final @Nullable Runnable task) { requireNonNull(task); return () -> { final SettableBoolean b = primeDetector(); try { task.run(); } finally { b.reset(); } }; }
@Override public ListenableFuture<?> submit(final Runnable task) { return wrapListenableFuture(super.submit(wrapRunnable(task))); }
new DeadlockDetectingListeningExecutorService(commitExecutor, TransactionCommitDeadlockException.DEADLOCK_EXCEPTION_SUPPLIER, listenableFutureExecutor));
private @NonNull Runnable wrapRunnable(final @Nullable Runnable task) { requireNonNull(task); return () -> { final SettableBoolean b = primeDetector(); try { task.run(); } finally { b.reset(); } }; }
@Override public <T> ListenableFuture<T> submit(final Runnable task, final T result) { return wrapListenableFuture(super.submit(wrapRunnable(task), result)); }
@Override public void execute(final Runnable command) { getDelegate().execute(wrapRunnable(command)); }
@Override public <T> ListenableFuture<T> submit(final Callable<T> task) { return wrapListenableFuture(super.submit(wrapCallable(task))); }
private <T> @NonNull Callable<T> wrapCallable(final @NonNull Callable<T> task) { requireNonNull(task); return () -> { final SettableBoolean b = primeDetector(); try { return task.call(); } finally { b.reset(); } }; }
@Override public ListenableFuture<?> submit(final Runnable task) { return wrapListenableFuture(super.submit(wrapRunnable(task))); }
private <T> @NonNull Callable<T> wrapCallable(final @NonNull Callable<T> task) { requireNonNull(task); return () -> { final SettableBoolean b = primeDetector(); try { return task.call(); } finally { b.reset(); } }; }