You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Future<?> future = this.executorService.submit(() -> this.doHandle(payloadSink, input));
try {
// Block until the event has been processedfuture.get();
} catch (...) {
//
}
The future.get() call has no timeout, so if for some reason the handler does not terminate (infinite loop, deadlock...), the http handler thread which executes EditingContextEventProcessor stays blocked indefinitely. If enough http requests trigger the offending handler, we can get to a point where enough threads are holding server resources (e.g. JDBC connections) that new requests can not be handled at all.
We can't do much to prevent buggy event handlers to run forever, but we can probably avoid the blocking to affect the EditingContextEventProcessor's thread.
The text was updated successfully, but these errors were encountered:
In
EditingContextEventProcessor
, we have:The
future.get()
call has no timeout, so if for some reason the handler does not terminate (infinite loop, deadlock...), the http handler thread which executesEditingContextEventProcessor
stays blocked indefinitely. If enough http requests trigger the offending handler, we can get to a point where enough threads are holding server resources (e.g. JDBC connections) that new requests can not be handled at all.We can't do much to prevent buggy event handlers to run forever, but we can probably avoid the blocking to affect the
EditingContextEventProcessor
's thread.The text was updated successfully, but these errors were encountered: