Details
-
Bug
-
Resolution: Done
-
Major
-
9.4.16.Final, 10.0.1.Final
-
None
Description
CompletionStages.continueOnExecutor() returns a CompletableFuture that is supposed to complete after the supplied action has run on the supplied executor. If the executor rejects the action, e.g. because it was stopped, the CompletableFuture never completes.
E.g. JGroupsTransport.receiveClusterView() indirectly uses CompletionStages.continueOnExecutor(), and it blocks view handling forever if a view is received after the async operations executor has been shut down. In turn this blocks all further view processing and the cache manager shutdown.