[Bug 573233] ATimerService doesn't handle late timeouts
Bugzilla Link | 573233 |
Status | ASSIGNED |
Importance | P3 normal |
Reported | Apr 29, 2021 04:41 EDT |
Modified | Jun 18, 2021 11:48 EDT |
Version | 3.1 |
See also | Gerrit change 179978, Git commit f53d93e3, Gerrit change 180548, Git commit 3d46aebb, Gerrit change 181792 |
Description
The ATimerService processes active timers every PhysicalThread polling cycle. When processing a periodic timer that needs to schedule a new expiry time, the service doesn't take into account that the new expiry time might be less than the current time.
This can happen if the setTimer() request value is less than the PhysicalThread polling interval, or if the setTimer() value close to the polling interval and there is enough jitter or scheduling delay.
In the worst case, this can cause a feedback loop of timeout messages that overwhelms the etMessageService.
The two parts to change would be:
- Add a recovery mechanism.
- Add some form of notification so that the user knows when this late timeout situation occurs.