Exa-Networks / exabgp

The BGP swiss army knife of networking
Other
2.05k stars 440 forks source link

exabgp 4.2.21 fails with py3.12 #1208

Closed elajkat closed 3 weeks ago

elajkat commented 1 month ago

Hi, We use exabgp for openstack/networking-bagpipe, currently 4.2.21 is pulled in and we started to test with py3.12 to have early warning for issues. We see the following traceback with py3.12:

File "/home/lajoskatona/github/networking-bagpipe/.tox/py312/lib/python3.12/site-packages/exabgp/configuration/environment.py", line 318, in <module>
    from exabgp.vendoring.six.moves import configparser as ConfigParser
ModuleNotFoundError: No module named 'exabgp.vendoring.six.moves'

Example log can be found in Openstack CI (after few weeks these will be deleted): https://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_6ed/periodic-weekly/opendev.org/openstack/networking-bagpipe/master/openstack-tox-py312/6ed9024/job-output.txt

Just the traceback in a paste: https://paste.opendev.org/show/bjcWycvJyWU4mut1rVoW/

I was able to reproduce the issue in a local env (Ubuntu 22.04) with py3.12 installed with pyenv.

$ pyenv latest 3.12
3.12.3
$ python3 --version
Python 3.12.3
$ git clone https://opendev.org/openstack/networking-bagpipe
....
$ cd networking-bagpipe
# Here I have to play a little to have all dependency like sqlite3 added to python, but I suppose any env with py312 works for the reproduction.
$ tox -epy312
.....
  File "/home/lajoskatona/github/networking-bagpipe/.tox/py312/lib/python3.12/site-packages/exabgp/configuration/environment.py", line 318, in <module>
    from exabgp.vendoring.six.moves import configparser as ConfigParser
ModuleNotFoundError: No module named 'exabgp.vendoring.six.moves'

================================================================================
The above traceback was encountered during test discovery which imports all the found test modules in the specified test_path.
ERROR: InvocationError for command /home/lajoskatona/github/networking-bagpipe/.tox/py312/bin/stestr run (exited with code 100)
__________________________________________________________________________________________ summary ___________________________________________________________________________________________
ERROR:   py312: commands failed
$
garybuhrmaster commented 1 month ago

This appears to be the same issue as #1177 and was addressed via commit 3f867af33f to the 4.2 branch.

You should be able to apply the patch manually and test.

elajkat commented 1 month ago

Thanks I will check it and come back with feedback.

elajkat commented 1 month ago

Thanks the above pr and using branch 4.2 really solves the issue. When we can expect a new release? (It is not that urgent officially we just experimentally test with py3.12, though some vendors use py3.12)

garybuhrmaster commented 1 month ago

When we can expect a new release?

I don't think there is any schedule. Last estimate I recall seeing from Thomas was when he responded to a different issue was that a new tag for the 4.2 branch was waiting on his available time to review/revise/revert a RIB patch. As exabgp is not a fully resourced project, when that time might be found is unknowable. Only the very fortunate open source developers find enough round tuits.

elajkat commented 1 month ago

Thanks for your efforts.

thomas-mangin commented 1 month ago

Thank you, @garybuhrmaster, for your help. I will leave this issue open until I can correctly resolve it.

thomas-mangin commented 1 month ago

Python 3.12 "breaks" the testing suite; this was fixed in the master but will need backporting.

Async servers do not close/return if an async function ends when run as a service and does not close the underlying writer. It was not necessary before 3.12.

This also need backporting to 4.2

thomas-mangin commented 4 weeks ago

3.12 was added to the CI. @elajkat are you happy to close this issue?

thomas-mangin commented 3 weeks ago

no news - good news.

elajkat commented 2 weeks ago

@thomas-mangin : I checked it, locally 4.2.22 was pulled and I suppose openstack CI will use the same, thanks it is perfect.

thomas-mangin commented 2 weeks ago

I did not backport the change to 4.2.22 but if it is important for openstack, happy to do it. Sorry, i am mixing 3.6 and 3.12 - 3.12 is fine.