#9521 Critical path generation (still) broken
Closed: Fixed 2 years ago by asaleh. Opened 3 years ago by adamwill.

I can't find an existing issue for this; please point me to it if there is one.

AFAICT, generation of the critical path is broken and has been for years. Bodhi uses PDC as its source of information as to what packages are in the critical path; the data in PDC is supposed to be generated and regularly updated based on what packages are in some specific comps groups, but that does not seem to be happening.

For e.g. the most recent change to the critpath groups in comps was this one in August, but if you ask PDC what's in critpath right now, xorg-x11-drv-amdgpu isn't there.

This is significant for me because openQA asks Bodhi if an update is critpath or not, and tests it if it is. So openQA is not testing updates for packages that have been added to the critpath since...whenever PDC was last updated...but it should be. I can whitelist 'missing' packages one at a time in openQA scheduling code, but it'd really be better if critpath generation worked.


Last change I can find before the xorg-x11-drv-amdgpu one was me adding dbus-broker in April 2019. That one does seem to have been applied.

@kevin says this may be getting done manually and not scripted, I always had the impression it was supposed to be automated/scripted, but maybe I'm wrong?

Metadata Update from @zlopez:
- Issue priority set to: Waiting on Assignee (was: Needs Review)
- Issue tagged with: medium-gain, medium-trouble, ops

3 years ago

We went with ops first as we need to update the current state and we should likely move it to dev once we've figured how to do it manually so we can automate it (sounds like a good toddler to do)

Metadata Update from @pingou:
- Issue untagged with: medium-gain, medium-trouble, ops
- Issue priority set to: Needs Review (was: Waiting on Assignee)

3 years ago

Metadata Update from @pingou:
- Issue priority set to: Waiting on Assignee (was: Needs Review)
- Issue tagged with: medium-gain, medium-trouble, ops

3 years ago

The gnome-shell/mutter focus bug I have been hitting just made me loose a nice long comment I put in here. :( Very fucking anoying.

Anyhow, to try and retype it:

This was to my understanding never automated. It's manually done by releng, and since it's not something thats listed as part of any cycle tasks it never gets done.

https://docs.pagure.org/releng/sop_update_critpath.html

So, perhaps we could make a toddler to do it, or perhaps we could add something to rawhide compose to do it daily then?

It's currently stored in pdc, but we really hope to kill pdc, so perhaps we should figure out where we might store this and then look at implementing the updating thing in the new location?

Note if we change it from being stored in PDC to somewhere else, at least Bodhi and the openQA scheduler will need updating to read it from the new place instead. Not sure if anything else reads it from PDC.

So, perhaps we could make a toddler to do it, or perhaps we could add something to rawhide compose to do it daily then?

This could be the easiest and simplest way forward for now.
We'll need a little more info to figure out what needs to be done though. Do we
have a link to the existing script to automate?

https://pagure.io/releng/blob/main/f/scripts/critpath.py is the script. It needs adjusting for new releases (or we should abstract that out of it and use the ansible variables or the new release events thing).

@mohanboddu could you run it and confirm it works for rawhide?

I can work on it later today.

So, updated rawhide:

DEBUG:update_critpath:Using pdc branch cache '/var/tmp/pdc-branch-cache.dbm'
DEBUG:update_critpath:Reading supplied 'critpath.txt'                                                               
DEBUG:update_critpath:Finding PDC branch IDs for supplied critpath list.  (See cache in /var/tmp/pdc-branch-cache.db
m)                                                                                                                  
DEBUG:update_critpath:Done finding PDC branch IDs for supplied critpath list.
DEBUG:update_critpath:Retrieving existing critpath list from PDC.          
DEBUG:update_critpath:Done retrieving existing critpath list from PDC.  
DEBUG:update_critpath:39 packages need critpath removed.                                                            
DEBUG:update_critpath:  Sending PATCH for lua-expat, (idx: 122513)  
DEBUG:update_critpath:  Sending PATCH for chkconfig, (idx: 12007)  
DEBUG:update_critpath:  Sending PATCH for tss2, (idx: 301794)    
DEBUG:update_critpath:  Sending PATCH for perl-threads-shared, (idx: 209992)
DEBUG:update_critpath:  Sending PATCH for openssl, (idx: 160811)
DEBUG:update_critpath:  Sending PATCH for qt5-qtwayland, (idx: 259493)
DEBUG:update_critpath:  Sending PATCH for liboauth, (idx: 112951) 
DEBUG:update_critpath:  Sending PATCH for speexdsp, (idx: 286149)
DEBUG:update_critpath:  Sending PATCH for libbsd, (idx: 105591)
DEBUG:update_critpath:  Sending PATCH for fipscheck, (idx: 65056)  
DEBUG:update_critpath:  Sending PATCH for libusbx, (idx: 117478)
DEBUG:update_critpath:  Sending PATCH for proj, (idx: 229988)      
DEBUG:update_critpath:  Sending PATCH for lua-lpeg, (idx: 122755)
DEBUG:update_critpath:  Sending PATCH for libquvi, (idx: 114694)     
DEBUG:update_critpath:  Sending PATCH for tracker-miners, (idx: 344803)
DEBUG:update_critpath:  Sending PATCH for libhandy, (idx: 396034)
DEBUG:update_critpath:  Sending PATCH for pciutils, (idx: 164983)         
DEBUG:update_critpath:  Sending PATCH for pulseaudio, (idx: 231061)
DEBUG:update_critpath:  Sending PATCH for unique, (idx: 304096) 
DEBUG:update_critpath:  Sending PATCH for lz4, (idx: 124204)      
DEBUG:update_critpath:  Sending PATCH for libquvi-scripts, (idx: 114752)         
DEBUG:update_critpath:  Sending PATCH for perl-Unicode-Normalize, (idx: 211158)    
DEBUG:update_critpath:  Sending PATCH for lxpolkit, (idx: 123917)
DEBUG:update_critpath:  Sending PATCH for ilmbase, (idx: 86034)  
DEBUG:update_critpath:  Sending PATCH for systemd-bootchart, (idx: 292916)
DEBUG:update_critpath:  Sending PATCH for libldm, (idx: 111041) 
DEBUG:update_critpath:  Sending PATCH for rdma-core, (idx: 262569)
DEBUG:update_critpath:  Sending PATCH for lua-socket, (idx: 122937)
DEBUG:update_critpath:  Sending PATCH for perl-threads, (idx: 209908)
DEBUG:update_critpath:  Sending PATCH for mozjs68, (idx: 448686)   
DEBUG:update_critpath:  Sending PATCH for GConf2, (idx: 23697)  
DEBUG:update_critpath:  Sending PATCH for iptables, (idx: 87878)       
DEBUG:update_critpath:  Sending PATCH for mozjs60, (idx: 394738)
DEBUG:update_critpath:  Sending PATCH for libibumad, (idx: 109726)
DEBUG:update_critpath:  Sending PATCH for libmodman, (idx: 111828)
DEBUG:update_critpath:  Sending PATCH for tracker, (idx: 299810)    
DEBUG:update_critpath:  Sending PATCH for lua-json, (idx: 122544)      
DEBUG:update_critpath:  Sending PATCH for xorg-x11-xkb-utils, (idx: 319167)
DEBUG:update_critpath:  Sending PATCH for libcroco, (idx: 106337)
DEBUG:update_critpath:69 packages need critpath added.                                                              
DEBUG:update_critpath:  Sending PATCH for zram-generator, (idx: 394580)
DEBUG:update_critpath:  Sending PATCH for kde-style-breeze, (idx: 500672)
DEBUG:update_critpath:  Sending PATCH for libqb, (idx: 114587)
DEBUG:update_critpath:  Sending PATCH for serd, (idx: 280646)
DEBUG:update_critpath:  Sending PATCH for libdvdnav, (idx: 107062)         
DEBUG:update_critpath:  Sending PATCH for libeconf, (idx: 445696)
DEBUG:update_critpath:  Sending PATCH for libiscsi, (idx: 110351)
DEBUG:update_critpath:  Sending PATCH for liburing, (idx: 449929)
DEBUG:update_critpath:  Sending PATCH for fmt, (idx: 66522)
DEBUG:update_critpath:  Sending PATCH for grubby, (idx: 45862)
DEBUG:update_critpath:  Sending PATCH for glusterfs, (idx: 72559)
DEBUG:update_critpath:  Sending PATCH for soundtouch, (idx: 285199)
DEBUG:update_critpath:  Sending PATCH for libjcat, (idx: 473014)
DEBUG:update_critpath:  Sending PATCH for libdvdread, (idx: 107066)
DEBUG:update_critpath:  Sending PATCH for kernel-srpm-macros, (idx: 476398)
DEBUG:update_critpath:  Sending PATCH for xorg-x11-drv-amdgpu, (idx: 317790)
DEBUG:update_critpath:  Sending PATCH for sord, (idx: 285006)
DEBUG:update_critpath:  Sending PATCH for gst-editing-services, (idx: 74950)
DEBUG:update_critpath:  Sending PATCH for protobuf, (idx: 229984)
DEBUG:update_critpath:  Sending PATCH for memstrack, (idx: 472445)
DEBUG:update_critpath:  Sending PATCH for lv2, (idx: 123229)
DEBUG:update_critpath:  Sending PATCH for sheepdog, (idx: 281333)
DEBUG:update_critpath:  Sending PATCH for gnome-color-manager, (idx: 73580)
DEBUG:update_critpath:  Sending PATCH for tracker3-miners, (idx: 498723)
DEBUG:update_critpath:  Sending PATCH for make, (idx: 125138)
DEBUG:update_critpath:  Sending PATCH for libmicrodns, (idx: 370696)
DEBUG:update_critpath:  Sending PATCH for protobuf-c, (idx: 229960)
DEBUG:update_critpath:  Sending PATCH for tracker3, (idx: 498722)
DEBUG:update_critpath:  Sending PATCH for raptor2, (idx: 261606)
DEBUG:update_critpath:  Sending PATCH for ed, (idx: 27615) 
DEBUG:update_critpath:  Sending PATCH for mdevctl, (idx: 446887)
DEBUG:update_critpath:  Sending PATCH for libhandy1, (idx: 474661)
DEBUG:update_critpath:  Sending PATCH for jq, (idx: 94407) 
DEBUG:update_critpath:  Sending PATCH for ladspa, (idx: 103169)
DEBUG:update_critpath:  Sending PATCH for hunspell-en, (idx: 81275)
DEBUG:update_critpath:  Sending PATCH for libtpms, (idx: 116970)
DEBUG:update_critpath:  Sending PATCH for checkpolicy, (idx: 11151)
DEBUG:update_critpath:  Sending PATCH for gtk4, (idx: 75609)
DEBUG:update_critpath:  Sending PATCH for fdk-aac-free, (idx: 394985)
DEBUG:update_critpath:  Sending PATCH for libnfs, (idx: 112666)
DEBUG:update_critpath:  Sending PATCH for libftdi, (idx: 108156)
DEBUG:update_critpath:  Sending PATCH for xdg-user-dirs-gtk, (idx: 313650)
DEBUG:update_critpath:  Sending PATCH for sratom, (idx: 287152)
DEBUG:update_critpath:  Sending PATCH for libnice, (idx: 112625)
DEBUG:update_critpath:  Sending PATCH for setxkbmap, (idx: 500746)
DEBUG:update_critpath:  Sending PATCH for xorg-x11-server-Xwayland, (idx: 501841)
DEBUG:update_critpath:  Sending PATCH for gstreamer1-plugins-bad-free, (idx: 75080)
DEBUG:update_critpath:  Sending PATCH for SDL2, (idx: 279623)
DEBUG:update_critpath:  Sending PATCH for gupnp-igd, (idx: 77226)
DEBUG:update_critpath:  Sending PATCH for libldac, (idx: 396286)
DEBUG:update_critpath:  Sending PATCH for xkbcomp, (idx: 500747)
DEBUG:update_critpath:  Sending PATCH for lttng-ust, (idx: 122350)
DEBUG:update_critpath:  Sending PATCH for mozjs78, (idx: 476508)
DEBUG:update_critpath:  Sending PATCH for libsrtp, (idx: 116137)
DEBUG:update_critpath:  Sending PATCH for libjaylink, (idx: 110373)
DEBUG:update_critpath:  Sending PATCH for liblrdf, (idx: 111158)
DEBUG:update_critpath:  Sending PATCH for libphonenumber, (idx: 473318)
DEBUG:update_critpath:  Sending PATCH for libva, (idx: 117485)
DEBUG:update_critpath:  Sending PATCH for guile22, (idx: 77025)
DEBUG:update_critpath:  Sending PATCH for appstream, (idx: 9596)
DEBUG:update_critpath:  Sending PATCH for python3-pbr, (idx: 449235)
DEBUG:update_critpath:  Sending PATCH for python3-gssapi, (idx: 347451)
DEBUG:update_critpath:  Sending PATCH for libopenmpt, (idx: 449839)
DEBUG:update_critpath:  Sending PATCH for swtpm, (idx: 394978)
DEBUG:update_critpath:  Sending PATCH for oniguruma, (idx: 158702)
DEBUG:update_critpath:  Sending PATCH for flashrom, (idx: 65600)
DEBUG:update_critpath:  Sending PATCH for libusb1, (idx: 117386)    
DEBUG:update_critpath:  Sending PATCH for inih, (idx: 86770)           
DEBUG:update_critpath:  Sending PATCH for lilv, (idx: 119833)      

and f34:

DEBUG:update_critpath:Using pdc branch cache '/var/tmp/pdc-branch-cache.dbm'
DEBUG:update_critpath:Reading supplied 'critpath-f34.txt'
DEBUG:update_critpath:Finding PDC branch IDs for supplied critpath list.  (See cache in /var/tmp/pdc-branch-cache.dbm)
DEBUG:update_critpath:Done finding PDC branch IDs for supplied critpath list.
DEBUG:update_critpath:Retrieving existing critpath list from PDC.
DEBUG:update_critpath:Done retrieving existing critpath list from PDC.
DEBUG:update_critpath:0 packages need critpath removed.
DEBUG:update_critpath:0 packages need critpath added.

The process is basically to use the releng/scripts/critpath.py to find the packages, then use update_critpath.py to set it in pdc it does need a pdc token.

@pingou can we make this a toddler? I would guess it only changes when fedora-comps commits land, so we could trigger on those?

Shall we keep this ticket to track that? Or open a new one over on toddlers project to add it?

Or is this so rare we should only just do it once a month or something manually?

Toddler might be an overkill, we can simply create a cron job for it.

And thanks @kevin I said I will look at it, but couldn't get to it.

It does seem like it doesn't get changed very much, though that may be more due to simple neglect than because it doesn't need to be changed very much :P As I said in the first comment, the last change before the one that I noticed was missing seems to have been in 2019.

Toddler might be an overkill, we can simply create a cron job for it.

Toddler can be configured to be cron jobs, we already have a few.
An advantage is that it keeps the code-base in a known location, so I'd be in
favor of a toddler personally.

@pingou can we make this a toddler? I would guess it only changes when fedora-comps commits land, so we could trigger on those?

Happy to do this if I can be pointed to the current code doing it :)

Shall we keep this ticket to track that? Or open a new one over on toddlers project to add it?

I think it makes more sense to track this on the infra board, but either a new
ticket or this one work for me

@pingou can we make this a toddler? I would guess it only changes when fedora-comps commits land, so we could trigger on those?

Happy to do this if I can be pointed to the current code doing it :)

Run once for each branch to generate the list:
https://pagure.io/releng/blob/main/f/scripts/critpath.py

Then run once for each branch to merge that with what pdc has:
https://pagure.io/releng/blob/main/f/scripts/update-critpath.py

It does need a admin pdc token.

Shall we keep this ticket to track that? Or open a new one over on toddlers project to add it?

I think it makes more sense to track this on the infra board, but either a new
ticket or this one work for me

ok. Lets just use this one.

I think it would be good to make it a toddler simply because then it will not be forgotten.

The PR seems to be failing. ;(

The CI is finally passing there :)

Yeah, when will this land? :)

Just updated toddlers in production, closing this, let me know/reopen if the thing is not working :-)

Metadata Update from @asaleh:
- Issue close_status updated to: Fixed
- Issue status updated to: Closed (was: Open)

2 years ago

Login to comment on this ticket.

Metadata
Boards 1
ops Status: Done