Wednesday, 2025-06-11

damani[m]ralonsoh, i updated the patch https://review.opendev.org/c/openstack/oslo.service/+/95150508:29
ralonsohdamani[m], thanks! tkajinam ^08:29
ralonsohdamani[m], hi! I've tested the patch again and is working fine, thanks!10:21
ralonsohI have another issue10:21
ralonsohhttps://bugs.launchpad.net/oslo.service/+bug/211377510:21
ralonsohexample: https://paste.opendev.org/show/bUT6iZcmkwwlri4LrI6Q/10:21
hberaud[m]itamarst: just finished to read your blog post, that's really interesting (https://pythonspeed.com/articles/python-multiprocessing/), now I'm gonna go to check the updates in the recent conversations on the eventlet side (I was on PTO since few days so I'm a bit out dated with recent messages)12:34
zigoAny progress on adressing https://github.com/eventlet/eventlet/issues/1032 ?13:04
hberaud[m]itamarst: Concerning your warning about oslo.service, I think you are right about the impact of fork into oslo.service, and more broadly into OpenStack. I think we have to ensure that `ProcessLauncher`, `PeriodicTasks`, `ThreadGroup` do a `from multiprocessing import get_context; with get_context("spawn").Pool() as pool:` in some ways. We can observe that the ProcessLauncher allow to run a service in a forked process13:13
hberaud[m]https://opendev.org/openstack/oslo.service/src/branch/master/oslo_service/backend/threading/service.py#L213 If we setup some centralized logging configuration and if a new process is launched in fork mode, by using oslo.service to launch this process, then the Openstack service could face deadlocks. This new process will inherit the logging setup with logging queues containing locks but no active thread to drain/process13:13
hberaud[m]them. The same kind of preventing should be applied at the users level (the services using of the oslo.service lib)13:13
itamarsthberaud[m]: I made progress yesterday, I think I have fork() "working" on Python 3.1313:13
hberaud[m]awesome13:13
itamarstin eventlet. it broken 3.12 and earlier though 😢13:13
itamarstso that's next13:13
itamarsthberaud[m]: re fork in oslo.service, the docs had a justification involving "lots of stuff we want to run don't pickle"13:14
hberaud[m]zigo: no sorry I just went back from PTO, I still need to rewind on the past week to see the various conversations13:14
itamarst(lacking fork(), there's the issue of how to pass objects to a subprocess)13:15
itamarstI think that's hopefully solvable with cloudpickle13:15
itamarstother options are possible but might involve more API change, understanding that code is on my todo list once i'm done with eventlet side13:16
hberaud[m]ack13:16
hberaud[m]will try to have a look to cloudpickle to get a better understanding of that point13:17
hberaud[m]concerning the docs justification you pointed out, I think they are mostly related to the previous version of the implementation of oslo.service because the new doc version is still "work in progress", so I think we have to confirm that this pickle comment still factual with the new implementation. I guess it is still accurate.13:21
hberaud[m]s/comment still factual/comment is still factual/13:21
hberaud[m]zigo: so concerning this python 3.13 story I think you need to read that discussion https://github.com/eventlet/eventlet/issues/103013:37
zigohberaud[m]: What would help would be a quick way to reproduce.13:39
zigoNot involving Nova.13:39
zigoThen maybe Stefano can help ...13:39
hberaud[m]Any help is welcome13:39
hberaud[m]Itamar proposed a new tiny reproducer, but if Stefano have some extra scenario, then, that would definitely reinforce our testing against the observed behavior.13:42
zigoRight.13:50
zigotumbleweed: Itamar proposed a small reproducer with eventlet fork() at https://github.com/eventlet/eventlet/issues/103013:50
zigoWoops wrong chan.13:51
itamarstI have also opened a PR to fix the eventlet issue16:07
itamarstbut16:07
itamarstit's a "fix". fork() is asking for disaster, it should not be used with Python16:07

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