You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Pavel Moravec (JIRA)" <ji...@apache.org> on 2014/07/29 12:37:38 UTC

[jira] [Commented] (QPID-5933) Python client infinite recursion if connection dropped

    [ https://issues.apache.org/jira/browse/QPID-5933?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14077594#comment-14077594 ] 

Pavel Moravec commented on QPID-5933:
-------------------------------------

There was a regression caused by wrong fix of QPID-5852 (in r1605855) that was properly fixed and regression removed in r1613270.

Could you try the script prior both commits or after both? (both commits change just one place in one file, trivial to revert).

As on trunk, I get expected output:

~~~
Traceback (most recent call last):
  File "test.py", line 9, in <module>
    s.receiver("q")
  File "<string>", line 6, in receiver
  File "/home/pmoravec/qpid-trunk/qpid/python/qpid/messaging/endpoints.py", line 645, in receiver
    receiver._ewait(lambda: receiver.linked)
  File "/home/pmoravec/qpid-trunk/qpid/python/qpid/messaging/endpoints.py", line 1011, in _ewait
    result = self.session._ewait(lambda: self.error or predicate(), timeout)
  File "/home/pmoravec/qpid-trunk/qpid/python/qpid/messaging/endpoints.py", line 595, in _ewait
    result = self.connection._ewait(lambda: self.error or predicate(), timeout)
  File "/home/pmoravec/qpid-trunk/qpid/python/qpid/messaging/endpoints.py", line 234, in _ewait
    self.check_error()
  File "/home/pmoravec/qpid-trunk/qpid/python/qpid/messaging/endpoints.py", line 227, in check_error
    raise e
qpid.messaging.exceptions.ConnectionError: [Errno 104] Connection reset by peer
~~~

> Python client infinite recursion if connection dropped
> ------------------------------------------------------
>
>                 Key: QPID-5933
>                 URL: https://issues.apache.org/jira/browse/QPID-5933
>             Project: Qpid
>          Issue Type: Bug
>          Components: Python Client
>    Affects Versions: 0.28
>            Reporter: Alan Conway
>            Assignee: Alan Conway
>
> The python client goes into an infinite recursion if the connection is dropped at the wrong moment. This script demonstrates:
> ====
> import subprocess, qpid.messaging as qm, time
> out = open("qpidd.log", "w")
> broker = subprocess.Popen(["qpidd",  "--auth=no"],
>                           stdout=out, stderr=subprocess.STDOUT)
> time.sleep(2)
> c = qm.Connection.establish("0.0.0.0")
> s = c.session()
> broker.kill()
> s.receiver("q")
> ====
> The recursion looks like this;
>   File "/usr/local/lib/python2.6/site-packages/qpid/messaging/endpoints.py", line 644, in receiver
>     receiver._ewait(lambda: receiver.linked)
>   File "/usr/local/lib/python2.6/site-packages/qpid/messaging/endpoints.py", line 1010, in _ewait
>     result = self.session._ewait(lambda: self.error or predicate(), timeout)
>   File "/usr/local/lib/python2.6/site-packages/qpid/messaging/endpoints.py", line 594, in _ewait
>     result = self.connection._ewait(lambda: self.error or predicate(), timeout)
>   File "/usr/local/lib/python2.6/site-packages/qpid/messaging/endpoints.py", line 233, in _ewait
>     self.check_error()
>   File "/usr/local/lib/python2.6/site-packages/qpid/messaging/endpoints.py", line 225, in check_error
>     self.close()
>   File "<string>", line 6, in close
>   File "/usr/local/lib/python2.6/site-packages/qpid/messaging/endpoints.py", line 344, in close
>     ssn.close(timeout=timeout)
>   File "<string>", line 6, in close
>   File "/usr/local/lib/python2.6/site-packages/qpid/messaging/endpoints.py", line 768, in close
>     self.sync(timeout=timeout)
>   File "<string>", line 6, in sync
>   File "/usr/local/lib/python2.6/site-packages/qpid/messaging/endpoints.py", line 759, in sync
>     if not self._ewait(lambda: not self.outgoing and not self.acked, timeout=timeout):
>   File "/usr/local/lib/python2.6/site-packages/qpid/messaging/endpoints.py", line 594, in _ewait
>     result = self.connection._ewait(lambda: self.error or predicate(), timeout)
>   File "/usr/local/lib/python2.6/site-packages/qpid/messaging/endpoints.py", line 233, in _ewait
>     self.check_error()
>   File "/usr/local/lib/python2.6/site-packages/qpid/messaging/endpoints.py", line 225, in check_error



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org