On Tue, 2021-11-02 at 10:32 -0700, Adam Williamson wrote:
> 
> 3. I'm not sure why Bodhi is still not allowing the update to be
> submitted for stable even though the tests have been waived, this is
> odd. I ran the greenwave query manually and it returns (in part):
> 
>     "policies_satisfied": true,
>     "unsatisfied_requirements": []
> 
> which should always satisfy Bodhi. If I've figured this out before (as
> Kalev implied), then I've forgotten it now. :P But whenever the new
> Bodhi version actually does get released and deployed, it tweaks
> several things in this area, so whatever the problem is may get fixed.
> Hopefully, once I re-run the openQA tests and they actually pass, Bodhi
> will be happy.

Further to this: I did re-run the tests, they did pass, it did make
Bodhi happy, and I successfully submitted the update to stable. It
should get pushed in the next push, I hope.

It looks like what happened is that Bodhi didn't update its recorded
gating status for the update when the waivers were submitted. Note
there's two different calculations of the gating status in Bodhi, which
can confuse things. The status you see on the right-hand side of the
web UI - "All required tests passed" or whatever - is actually
generated *by the front end code* whenever your browser loads the page.
The JS front end code runs a (verbose) Greenwave query when you view
the page, and uses the results to generate that status and also the
Automated Tests results list itself. So that status will always be 'up
to date'.

When you try and push the update, though - whether by clicking on the
button in the web UI, or using the CLI client - Bodhi doesn't use that
status, because the Bodhi back end code doesn't *know* about that
status at all. Instead it checks a property of the update object, which
gets updated...sometimes. The "This update's test gating status has
been changed to XXX" messages that get posted on the update
periodically are actually telling you about *that* status check.
Basically, unless the most recent message was "This update's test
gating status has been changed to passed" or "This update's test gating
status has been changed to ignored", you will not be able to push it.

I think probably the bit that broke down here is that when you
submitted your waivers, Bodhi didn't get told. The way this is
*currently* supposed to work is that Greenwave listens out for new
waivers, decides whether they change an update push decision, and
publishes a greenwave.decision.update message if so. Bodhi listens for
the greenwave.decision.update messages and either just accepts what
they say or re-calculates the decision (it depends on some other stuff
that doesn't matter rn). Looking through datagrepper logs, I see
waiverdb.waiver.new messages from waiverdb when you created your
waivers, but I *don't* see greenwave.decision.update messages in
response to them. So I think Greenwave messed up and didn't think the
waivers changed the decision. So Bodhi didn't get a message telling it
to re-calculate the gating status, and it stayed at 'failed'.

There is, I believe, a cron job that runs every few hours or every day
or something that re-calculates the gating status of *every* active
update, so it would probably have got caught up at some point. But it
should really get recalculated as soon as a relevant waiver is
submitted.

I *hope* this should be fixed in the next Bodhi release, whenever it
gets done and deployed. I actually rewrote how that works completely:

https://github.com/fedora-infra/bodhi/pull/4230

mainly because I considered the existing design to be flat out wrong
(for reasons I won't go into unless you really care :>), but also
because I did, a few months ago, look through the code and find that
greenwave could get this wrong for openQA tests/waivers. I forget the
details, but there's some point at which it makes some assumptions
which are only true for CI tests/waivers. I started out aiming to fix
that, but instead decided the design was wrong and it made more sense
to have Bodhi just listen out for new result / new waiver messages
directly. I believe I wrote that properly so it will work for
waivers/results related to both CI and openQA tests, but we'll find out
for sure when it's deployed, I guess. :D

Sorry again for the trouble!
-- 
Adam Williamson
Fedora QA
IRC: adamw | Twitter: adamw_ha
https://www.happyassassin.net

_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam on the list, report it: 
https://pagure.io/fedora-infrastructure

Reply via email to