Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
None
-
None
Description
Upon restart, if there are a large number of processors that take a long time to start up (i.e., their @OnScheduled methods take a long time to complete), then other processors may also timeout while waiting for their @OnScheduled method to complete. It looks like this is due to the fact that when we schedule many processors we determine the 'timeout timestamp' before submitting the background task to call @OnScheduled. As a result, if several processors don't finish or take a long time to finish, then other processors may just sit, waiting for their chance to have @OnScheduled called and eventually timeout before they even have a chance to invoke the method.
When this happens, the result is that the Runnable to call @OnScheduled never is called before the corresponding Future is canceled. So the Processor is never scheduled. However, its Active Thread count has already been incremented. So it appears as if the Processor has an Active Thread but it will never make progress.
Attachments
Issue Links
- links to