PrioritizedExecutorService: Properly wrap on direct calls to "execute".#11956
Merged
gianm merged 2 commits intoapache:masterfrom Nov 22, 2021
Merged
PrioritizedExecutorService: Properly wrap on direct calls to "execute".#11956gianm merged 2 commits intoapache:masterfrom
gianm merged 2 commits intoapache:masterfrom
Conversation
Usually, "execute" is called by methods defined in the superclass AbstractExecutorService, and the passed-in Runnable has been wrapped by newTaskFor inside a PrioritizedListenableFutureTask. But this method can also be called directly, and if so, the same wrapping is necessary for the delegate to get a Runnable that can be entered into a priority queue with the others.
capistrant
approved these changes
Nov 19, 2021
clintropolis
approved these changes
Nov 20, 2021
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Usually, "execute" is called by methods defined in the superclass
AbstractExecutorService, and the passed-in Runnable has been wrapped
by newTaskFor inside a PrioritizedListenableFutureTask. But this method
can also be called directly, and if so, the same wrapping is necessary
for the delegate to get a Runnable that can be entered into a priority
queue with the others.
I don't think this affects production, because I didn't find any production
code that calls this method. I noticed it while working on another branch
doing something that did end up calling this method on a
PrioritizedExecutorService, so I thought it would be nice to split the fix
into its own patch and test.