#41 Support scheduling throttling for certain generic tests
Opened 5 years ago by kparal. Modified 3 years ago

In order to move Taskotron tests to Fedora CI (#36), we'd need a functionality in the test scheduler that allows the execution frequency for certain generic tests to be throttled/rate-limited. This is currently specific to our rpmdeplint test and while not strictly required, it could cause a non-trivial performance hit when not implemented.

Because rpmdeplint is executed for koji tags and not koji builds, the event that triggers it is a koji tag change. However, since rpmdeplint checks all rpms inside the tag every time, it doesn't make sense to trigger it for very fast consecutive events, that would only cause several of these tests to run in parallel and end with the same or similar results (possibly even race-condition when reporting them). In this case, we employ a throttling solution that only executes rpmdeplint at maximum once per half an hour (or similar). It is implemented as a fuse, which gets activated with the first event, and any other event with the same input data (the same koji tag name) gets ignored as long as the fuse is active. After a specified interval, the fuse "blows up", executes the test and resets the fuse. Events with different input data (different koji tag names) of course use separate fuses. With this naive implementation, the test execution is always delayed, but it's quite easy to improve the fuse implementation to get rid of the delay for the first event. Or any other implementation is fine, of course, as long as we can limit the number of these tests executed over a period of time.


Per my update in #36, is this also still valid after taskotron's EOL?

As a general concept, yes, I think it's still valid. I believe you'll hit this issue with other generic tests in the future.
Specifically for rpmdeplint, I think this is no longer valid, because rpmdeplint was implemented as a custom pipeline in Fedora CI, so this issue is either somehow resolved or sidestepped. Or perhaps not, I didn't implement it.

I provided a longer update in:
https://pagure.io/fedora-ci/general/issue/36#comment-650628

Login to comment on this ticket.

Metadata