fix deadlock by offloading distributed mapreduce result collection to async executor