ignore error sending message after shut down
This commit is contained in:
parent
342c212ba8
commit
e2e2963b99
@ -58,7 +58,7 @@ public class UserThread {
|
||||
}
|
||||
|
||||
public static void execute(Runnable command) {
|
||||
UserThread.executor.execute(() -> {
|
||||
executor.execute(() -> {
|
||||
Thread.currentThread().setName(USER_THREAD_NAME);
|
||||
command.run();
|
||||
});
|
||||
@ -79,7 +79,8 @@ public class UserThread {
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isUserThread(Thread thread) {
|
||||
// TODO: better way to determine if on UserThread, since this is not reliable
|
||||
private static boolean isUserThread(Thread thread) {
|
||||
return USER_THREAD_NAME.equals(thread.getName());
|
||||
}
|
||||
|
||||
|
@ -306,27 +306,25 @@ public abstract class NetworkNode implements MessageListener {
|
||||
}
|
||||
|
||||
public void onFailure(@NotNull Throwable throwable) {
|
||||
UserThread.execute(() -> {
|
||||
if (!resultFuture.setException(throwable)) {
|
||||
// In case the setException returns false we need to cancel the future.
|
||||
resultFuture.cancel(true);
|
||||
}
|
||||
});
|
||||
UserThread.execute(() -> resolveWithException(resultFuture, throwable));
|
||||
}
|
||||
}, MoreExecutors.directExecutor());
|
||||
|
||||
} catch (RejectedExecutionException exception) {
|
||||
if (!executor.isShutdown()) {
|
||||
log.error("RejectedExecutionException at sendMessage: ", exception);
|
||||
UserThread.execute(() -> {
|
||||
if (!resultFuture.setException(exception)) {
|
||||
// In case the setException returns false we need to cancel the future.
|
||||
resultFuture.cancel(true);
|
||||
UserThread.execute(() -> resolveWithException(resultFuture, exception));
|
||||
}
|
||||
});
|
||||
}
|
||||
return resultFuture;
|
||||
}
|
||||
|
||||
private void resolveWithException(SettableFuture<?> future, Throwable exception) {
|
||||
if (!future.setException(exception)) {
|
||||
future.cancel(true); // In case the setException returns false we need to cancel the future.
|
||||
}
|
||||
}
|
||||
|
||||
public ReadOnlyObjectProperty<NodeAddress> nodeAddressProperty() {
|
||||
return nodeAddressProperty;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user