[issue22114] You cannot call communicate() safely after receiving EAGAIN

2014-07-31 Thread Amrith Kumar
New submission from Amrith Kumar: Environment: - Linux (Ubuntu 14.04 LTS, x64) running Python 2.7. - Code uses eventlet.green.subprocess Code establishes subprocess as: subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE

[issue22114] You cannot call communicate() safely after receiving EAGAIN

2014-07-31 Thread Amrith Kumar
Amrith Kumar added the comment: I'll supply a patch for this proposed change. -- ___ Python tracker <http://bugs.python.org/issue22114> ___ ___ Python-bugs-l

[issue22114] You cannot call communicate() safely after receiving EAGAIN

2014-07-31 Thread Amrith Kumar
Amrith Kumar added the comment: I see three comments, one from r.david.murray, one from haypo and one from pitrou. I'll try and address all three. r.david.murray: The code in question is in https://github.com/openstack/oslo-incubator/blob/master/openstack/common/processutils.py#L177

[issue22114] You cannot call communicate() safely after receiving an exception (EINTR or EAGAIN)

2014-07-31 Thread Amrith Kumar
Changes by Amrith Kumar : -- title: You cannot call communicate() safely after receiving EAGAIN -> You cannot call communicate() safely after receiving an exception (EINTR or EAGAIN) ___ Python tracker <http://bugs.python.org/issu

[issue22114] You cannot call communicate() safely after receiving an exception (EINTR or EAGAIN)

2014-07-31 Thread Amrith Kumar
Amrith Kumar added the comment: haypo; no argument from me. I just updated the description to make it more exact. I may have received EINTR or EAGAIN. In either event, I need to debug some more and try and do a clean repro and then figure out a proper fix. In the meanwhile, I proposed a fix

[issue22114] You cannot call communicate() safely after receiving an exception (EINTR or EAGAIN)

2014-07-31 Thread Amrith Kumar
Amrith Kumar added the comment: r.david.murray, I guess the issue we have is that something (hypothesis: eventlet) is causing the blocking API to communicate() to throw an EAGAIN. This (https://bugs.launchpad.net/nova/+bug/1271331) is the bug that was fixed a while ago in OpenStack that

[issue22114] You cannot call communicate() safely after receiving an exception (EINTR or EAGAIN)

2014-08-02 Thread Amrith Kumar
Amrith Kumar added the comment: After some debugging and reading code in python's subprocess.py (v2.7), here's what I'm seeing. (a) the error has nothing to do with eventlet and monkey-patching. (b) the code in _communicate_with_select() and potentially _communicate_with

[issue22114] You cannot call communicate() safely after receiving an exception (EINTR or EAGAIN)

2014-08-05 Thread Amrith Kumar
Amrith Kumar added the comment: The issue turned out to be something funky in monkey patching. os.read() shouldn't be getting called if the monkey patch was correct in the first place. -- resolution: -> not a bug status: open -> closed ___

[issue28841] urlparse.urlparse() parses invalid URI without generating an error (examples provided)

2016-11-30 Thread Amrith Kumar
New submission from Amrith Kumar: The urlparse library incorrectly accepts a URI which specifies an invalid host identifier. Example: http://www.example.com:/abc Looking at the URI specifications, this is an invalid URI. By definition, you are supposed to specify a "hostport" and

[issue28841] urlparse.urlparse() parses invalid URI without generating an error (examples provided)

2016-11-30 Thread Amrith Kumar
Amrith Kumar added the comment: As requested ... >>> urlparse.urlparse('http://www.google.com:/abc') ParseResult(scheme='http', netloc='www.google.com:', path='/abc', params='', query='&#x

[issue28841] urlparse.urlparse() parses invalid URI without generating an error (examples provided)

2016-11-30 Thread Amrith Kumar
Amrith Kumar added the comment: Eric, Martin, I'm sure this is an interpretation (and I'll be fair and give you both) that a URL of the form: http://hostname.domain.tld:/path should be held invalid. The rationale is per the section of the spec you quoted. The other side of the a