commit 1c2320e11e77e3c996b4a6ba753097ec5f048ced
Author: Michał Dulko <email address hidden>
Date: Thu Nov 2 19:30:51 2017 +0100
Prevent pyroute2.IPDB threads leaking
pyroute2.IPDB is an interesting entity. It's much more than a simple
interface to `ip` command, as it is more similar to a database process.
When created IPDB object spawns a thread that will be responsible for
updating the object with changes to the underlying OS. Thread stays up
until the user will call `release()` method.
Turns out code in kuryr_kubernetes.cni.binding wasn't taking that into
account and was slowly leaking threads (and possibly processes). This
became apparent when running Kuryr with CNI daemon enabled.
This commit fixes the problem by switching all IPDB usages to context
managers, so `release()` method is called automatically. Also the IPDB
objects cache is removed as already released IPDB objects cannot be
reused. kuryr_kubernetes.cni.binding modules were missing unit tests,
this commit adds them as well.
Reviewed: https:/ /review. openstack. org/517406 /git.openstack. org/cgit/ openstack/ kuryr-kubernete s/commit/ ?id=1c2320e11e7 7e3c996b4a6ba75 3097ec5f048ced
Committed: https:/
Submitter: Zuul
Branch: master
commit 1c2320e11e77e3c 996b4a6ba753097 ec5f048ced
Author: Michał Dulko <email address hidden>
Date: Thu Nov 2 19:30:51 2017 +0100
Prevent pyroute2.IPDB threads leaking
pyroute2.IPDB is an interesting entity. It's much more than a simple
interface to `ip` command, as it is more similar to a database process.
When created IPDB object spawns a thread that will be responsible for
updating the object with changes to the underlying OS. Thread stays up
until the user will call `release()` method.
Turns out code in kuryr_kubernete s.cni.binding wasn't taking that into
account and was slowly leaking threads (and possibly processes). This
became apparent when running Kuryr with CNI daemon enabled.
This commit fixes the problem by switching all IPDB usages to context s.cni.binding modules were missing unit tests,
managers, so `release()` method is called automatically. Also the IPDB
objects cache is removed as already released IPDB objects cannot be
reused. kuryr_kubernete
this commit adds them as well.
Change-Id: I82afda3f217dac 56228677bb66703 c3d80e5d751
Closes-Bug: 1728996