You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I found another issue in production that is rather impactful but was hard to discover, which stems from ScheduledFireTimeUtc being provided as UTC now, when it should have been earlier in the past due to a misfire e.g. because the device was in sleep during the scheduled fire time or when the system clock is pushed into the future. As a consequence the code wrongly never sees any misfires right now, because misfires are detected based on ScheduledFireTimeUtc.
I have made a pull request with the test TestScheduledFireTimeUtc that reproduces this problem. Note that it is a semi-manual test requiring you to manually either push the operating system clock forward or put the device to sleep at the right time, in order to cause a misfire.
As a start for the detective work of why ScheduledFireTimeUtc is wrong, it looks like it is set from RAMJobStore as trigger.GetPreviousFireTimeUtc(). This may mean that PreviousFireTimeUtc is not working correctly as well, or it may mean that ScheduledFireTimeUtc should not be set as trigger.GetPreviousFireTimeUtc() in some circumstances, not sure? The other place that ScheduledFireTimeUtc is set is in the AdoJobStore namespace.
Thanks for your expert work!
The text was updated successfully, but these errors were encountered:
Hi again!
I found another issue in production that is rather impactful but was hard to discover, which stems from ScheduledFireTimeUtc being provided as UTC now, when it should have been earlier in the past due to a misfire e.g. because the device was in sleep during the scheduled fire time or when the system clock is pushed into the future. As a consequence the code wrongly never sees any misfires right now, because misfires are detected based on ScheduledFireTimeUtc.
I have made a pull request with the test TestScheduledFireTimeUtc that reproduces this problem. Note that it is a semi-manual test requiring you to manually either push the operating system clock forward or put the device to sleep at the right time, in order to cause a misfire.
As a start for the detective work of why ScheduledFireTimeUtc is wrong, it looks like it is set from RAMJobStore as trigger.GetPreviousFireTimeUtc(). This may mean that PreviousFireTimeUtc is not working correctly as well, or it may mean that ScheduledFireTimeUtc should not be set as trigger.GetPreviousFireTimeUtc() in some circumstances, not sure? The other place that ScheduledFireTimeUtc is set is in the AdoJobStore namespace.
Thanks for your expert work!
The text was updated successfully, but these errors were encountered: