FELIX-6140: possible deadlock in ResolverImpl.EnhancedExecutor.await()
Change await implementation to use a Queue<Future<Void>> to avoid
inaccurate accounting of task count to wait for completion when an
exception is thrown from executor.execute() method. There are scenarios
where the resolver algorithm can take a huge amount of memory resulting
in out of memory errors. If this happens to occur when dispatching a
task to the executor then the count was never decremented.
|