Wednesday, 2024-11-20

itamarsthello! JayF sent me here, and wanted to share some things I've been working on14:07
itamarst1. Trying to upgrade pysnmp to newer version in ironic. pysnmp 7 uses asyncio, so that means ironic needs to support asyncio, which means it needs to use asyncio eventlet hub14:08
itamarst2. When I enabled asyncio eventlet hub in ironic, the tests immediately hit an issue in oslo.log where PipeMutex (which is monkeypatched into stdlib logging) doesn't work with asyncio hub. I have code that fixes the oslo.log code, but14:09
itamarst3. I also found a bug in the eventlet asyncio hub; a fix has been merged.14:09
itamarstso order of operation will need to be (A) new asyncio release  (B) update version on eventlet wherever these dependency versions are recorded (not really an openstack developer so I dunno)  (C) get fix merged into oslo.log (D) look at ironic changes14:11
itamarstin practice there may be more blockers, so I will continue running ironic tests on asyncio hub and see if there are more problems14:12
itamarst(correction: not "(A) new asyncio release", but rather "(A) new eventlet release")14:12
hberaud[m]o/15:00
hberaud[m]Welcome here itamarst 15:00
hberaud[m]I think there is a "E" step15:01
sean-k-mooneyitamarst: on point c15:01
sean-k-mooneyfixign the pipemutex is prebaly best doen by removing it or reimpelmeting it15:01
hberaud[m]our requirement upgrade is for now blocked by a neutron job problem https://review.opendev.org/c/openstack/requirements/+/93325715:01
sean-k-mooneythe reason it causes issues today is the shareing of the file descriptors between threads15:02
hberaud[m]so until the neutron cross-job is fixed we are not able to bump the global requirements 15:02
hberaud[m]s/until/while/15:02
sean-k-mooneythat forced a workaroudn to disabel that proection for exsiting users os simpley disabling it for asynico hub does nto change teh fact that its unsafe today15:03
hberaud[m]s/is fixed/is not fixed/15:03
sean-k-mooneyhberaud[m]: ya that partly blocked behind os-vif as well but im oging to disable the flaky test to unblock that15:03
hberaud[m]cool15:03
sean-k-mooneythe eventlet bump it blocked by neutron and oslo bump it blocked by droping netifaces in os-vif15:04
itamarstsean-k-mooney: I reimplemented pipemutex for the asyncio case15:08
sean-k-mooneyitamarst: i woudl like to have an impleation that works without asyncio too15:08
sean-k-mooneydoes it have a depency on asyncio?15:08
itamarstso the reason that exists at all is because of eventlet15:09
itamarsti.e. it's monkeypatched into logging stdlib because of eventlet15:09
sean-k-mooneyyes but the imeplemation uses a debug option that is not intened for use in production15:09
itamarstso I made a version for asyncio eventlet hub (that doesn't  use debug issue)15:09
itamarstbut if you didn't use eventlet at all you'd just not monkeypatch15:10
sean-k-mooneyit was added to solve a bug in how oslo.log worked but that bugfix intoduced another bug15:10
sean-k-mooneysure there are 2 iessues. one the pipemutex that was added to work around a diffent bug uses a debug flag that should not be used in production code15:11
sean-k-mooneysecond that flag is not supproted with teh asyncio hub15:11
sean-k-mooneyso it blocks usign eventlet with the asyncio hub currently15:11
sean-k-mooneyand wehn using the eventlet native hub its runing evently in an unsafe debug mode15:12
itamarstI am only focusing on the second issue, yes15:12
JayFSo itamarst pushed the fix for (2) above here: https://review.opendev.org/c/openstack/oslo.log/+/93580015:58
JayFif we can get that reviewed and landed, I'll take the action to port that fix into the swift version of that pipemutex15:58
itamarstthat's a different fix actually15:59
JayFoh, really?15:59
itamarstyeah that's deadlocks in non-asyncio (default, current) hub16:00
itamarstwhich hopefully don't happen in practice but hey who knows16:00
JayFah yeah, that's obviously clear upon seeing it16:00
itamarstthe fix for (2) is a whole new lock implementation16:00
JayFI may have not actually read the patch yet this morning 🙈16:00
JayFthat sounds ... horrible16:02
hberaud[m]itamarst, JayF do you mind if I attach your patch to the topic "eventlet-removal"? https://review.opendev.org/q/topic:%22eventlet-removal%2216:02
JayFPlease do that16:03
hberaud[m]👍️16:03
JayFsometimes you have to add some eventlet [unit test support] to remove some eventlet :)16:03
hberaud[m]This is the magic of eventlet16:04
JayFanother channel I'm in was conjecturing about the alternate future16:04
JayFwhere 'eventlet' (really, it's model) became the stdlib16:04
hberaud[m]well, when you start to fork all the deprecated stdlib module into eventlet you are becoming the stdlib16:06
hberaud[m]this is how eventlet work actually...16:06
JayFOh yeah, but the implications of it being just the stdlib *everyone uses* would be neat16:10

Generated by irclog2html.py 2.17.3 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!