Skip to content

Incompatibility issue with nsenter python library #471

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
huang195 opened this issue Mar 3, 2018 · 5 comments
Closed

Incompatibility issue with nsenter python library #471

huang195 opened this issue Mar 3, 2018 · 5 comments
Labels
lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed.

Comments

@huang195
Copy link

huang195 commented Mar 3, 2018

I have a piece of code that makes use of both the kubernetes python client and nsenter. This code used to work when the kubernetes python client was at version 3. However, starting at version 4, it no longer works, and I was getting the following error from nsenter:

  File "/usr/local/lib/python2.7/dist-packages/nsenter/__init__.py", line 109, in __enter__
    raise OSError(e, errno.errorcode[e])
OSError: [Errno 22] EINVAL

After a bit of digging, it seems the problem is due to setns (what nsenter eventually calls) does not allow the caller (my program) to be multi-threaded (see here: http://man7.org/linux/man-pages/man2/setns.2.html). Coincidentally, starting in version 4 of the kubernetes python client code, multiprocessing.pool was introduced to handle asynchronous requests (see here: https://github.com/kubernetes-client/python/blob/release-4.0/kubernetes/client/api_client.py#L19). I was able to confirm this is the culprit - after disabling the use of multiprocessing.pool (luckily, its use was completely confined to api_client.py, and changing only a few lines of code sufficed), my code worked the same way as v3 of kubernetes python client.

My question is if it is possible to add a constructor flag to enable/disable the use of multiprocessing.pool for handling async requests. It seems like a small change that I can take a stab at it.

@dims
Copy link
Collaborator

dims commented Mar 3, 2018

@huang195 yes, please do take a stab at it.

@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Apr 22, 2019
@fejta-bot
Copy link

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

@k8s-ci-robot k8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels May 22, 2019
@fejta-bot
Copy link

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

@k8s-ci-robot
Copy link
Contributor

@fejta-bot: Closing this issue.

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed.
Projects
None yet
Development

No branches or pull requests

4 participants