Replace ctype.CDLL by ctypes.PyDLL in linux.ip_lib
Some linux.ip_lib functions make use of "ctype.CDLL" methods
(create_netns, remove_netns). Those methods are called inside a
"privsep" context; that means the function reference and the
arguments are passed to a privileged context that will execute
the method.
"privsep" library makes use of eventlet to implement multitasking.
If the method executed returns the GIL, nothing guarantees that
the "eventlet" executor will return it again to this task. This
could lead to timeouts during the execution of those methods.
From https://docs.python.org/3.6/library/ctypes.html#ctypes.PyDLL:
"Instances of this class behave like CDLL instances, except that
the Python GIL is not released during the function call, and
after the function execution the Python error flag is checked."
Change-Id: I36ef9bf59e9c93f50464457a5d9a968738844079
Closes-Bug: #1870352
(cherry picked from commit 306280813f34f8bbe384ae5bea67f0f66e316b61)
Reviewed: https:/ /review. opendev. org/751215 /git.openstack. org/cgit/ openstack/ neutron/ commit/ ?id=574ba2e9825 1690f73bfd09cf4 7c17caa712eb4c
Committed: https:/
Submitter: Zuul
Branch: stable/rocky
commit 574ba2e98251690 f73bfd09cf47c17 caa712eb4c
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Thu Apr 2 13:49:19 2020 +0000
Replace ctype.CDLL by ctypes.PyDLL in linux.ip_lib
Some linux.ip_lib functions make use of "ctype.CDLL" methods
(create_netns, remove_netns). Those methods are called inside a
"privsep" context; that means the function reference and the
arguments are passed to a privileged context that will execute
the method.
"privsep" library makes use of eventlet to implement multitasking.
If the method executed returns the GIL, nothing guarantees that
the "eventlet" executor will return it again to this task. This
could lead to timeouts during the execution of those methods.
From https:/ /docs.python. org/3.6/ library/ ctypes. html#ctypes. PyDLL:
"Instances of this class behave like CDLL instances, except that
the Python GIL is not released during the function call, and
after the function execution the Python error flag is checked."
Change-Id: I36ef9bf59e9c93 f50464457a5d9a9 68738844079 be384ae5bea67f0 f66e316b61)
Closes-Bug: #1870352
(cherry picked from commit 306280813f34f8b