Ken Giusti created PROTON-1743:
----------------------------------
Summary: BlockingReceiver raises IndexError when accepting
presettled messages
Key: PROTON-1743
URL: https://issues.apache.org/jira/browse/PROTON-1743
Project: Qpid Proton
Issue Type: Bug
Components: python-binding
Affects Versions: proton-c-0.19.0
Reporter: Ken Giusti
Fix For: proton-c-0.20.0
Attachments: testy.py
The following exception is raised by the attached reproducer when the receiver
attempts to accept a message:
python ~/work/dispatch/qpid-dispatch/BUILD/testy.py
Hello World!
Traceback (most recent call last):
File "/home/kgiusti/work/dispatch/qpid-dispatch/BUILD/testy.py", line 34, in
<module>
receiver.accept()
File "/home/kgiusti/PY27/lib/python2.7/site-packages/proton/utils.py", line
158, in accept
self.settle(Delivery.ACCEPTED)
File "/home/kgiusti/PY27/lib/python2.7/site-packages/proton/utils.py", line
172, in settle
self.fetcher.settle(state)
File "/home/kgiusti/PY27/lib/python2.7/site-packages/proton/utils.py", line
122, in settle
delivery = self.unsettled.popleft()
IndexError: pop from an empty deque
The issue is caused by having the receiver accept() a pre-settled message.
The real issue is that there is no way for the BlockingReceiver to know if the
message is pre-settled since the delivery corresponding to the received message
is not available to the receiver. Therefore it must call accept (or reject,
modify, etc) on each message.
Expected behavior - attempting to settle a pre-settled message should be
treated as a no-op.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]