Greg Majszak created PROTON-2439:
------------------------------------

             Summary: Python BlockingReceiver accept() fails when used with 
qpidd broker
                 Key: PROTON-2439
                 URL: https://issues.apache.org/jira/browse/PROTON-2439
             Project: Qpid Proton
          Issue Type: Bug
          Components: python-binding
    Affects Versions: proton-c-0.35.0
            Reporter: Greg Majszak


./qpidTest.bash script:

{{#!/usr/bin/env bash}}
 {{ }}
 {{function main() {}}
 {{  # Display Linux distro}}
 {{  echo "Linux distro:"}}
 {{  cat /etc/*release*}}
 {{  echo}}
 {{ }}
 {{  # Display Linux version}}
 {{  echo "Linux version:"}}
 {{  cat /proc/version}}
 {{  echo}}
 {{ }}
 {{  # Display Python 3 version}}
 {{  echo "Python3 version:"}}
 {{  python3 --version}}
 {{  echo}}
 {{ }}
 {{  # Display C++ Qpid qpidd broker version}}
 {{  echo "C++ Qpid qpidd broker version:"}}
 {{  qpidd --version}}
 {{  echo}}
 {{ }}
 {{  echo "Run of Qpid Python 3 example broker and helloworld_blocking 
scripts:"}}
 {{ }}
 {{  # Start and background Python 3 example Qpid broker}}
 {{  python3 ~/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/broker.py &}}
 {{  local brokerPid=$\{!}}}
 {{ }}
 {{  # Allow some time for Python 3 example Qpid broker to get up and running}}
 {{  sleep 1}}
 {{ }}
 {{  # Run helloworld_blocking.py (note no error, receiver.accept() performs as 
expected)}}
 {{  if [[ "Hello World!" == $(python3 
~/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/helloworld_blocking.py) 
]]; then}}
 {{    echo "Completed without error"}}
 {{  else}}
 {{    echo "Command 'python3 
~/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/helloworld_blocking.py' 
failed"}}
 {{  fi}}
 {{ }}
 {{  # Stop background Python 3 example Qpid broker}}
 {{  kill $\{brokerPid}}}
 {{  echo}}
 {{ }}
 {{  echo "Run of C++ Qpid qpidd broker and helloworld_blocking script:"}}
 {{ }}
 {{  # Start and background C++ Qpid qpidd broker}}
 {{  qpidd &}}
 {{  brokerPid=$\{!}}}
 {{ }}
 {{  # Allow some time for C++ Qpid qpidd broker to get up and running}}
 {{  sleep 1}}
 {{ }}
 {{  # Add exchange topic 'examples'}}
 {{  qpid-config add exchange topic examples '*' || {}}
 {{    echo "Command 'qpid-config add exchange topic examples '*'' failed"}}
{{ }}
 {{  # Run same helloworld_blocking.py (note error, receiver.accept() fails 
with 'IndexError: pop from an empty deque')}}
 {{  # If 'receiver.accept()' is commented out from helloworld_blocking.py, 
command succeeds and returns 'Hello World!'}}
 {{  # but message is 'leaked' and/or stored/queued awaiting acceptance}}
 {{  if [[ "Hello World!" == $(python3 
~/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/helloworld_blocking.py || 
echo "${?}") ]]; then}}
 {{    echo "Completed without error"}}
 {{  else}}
 {{    echo "'python3 
~/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/helloworld_blocking.py' 
failed"}}
 {{  fi}}
 {{ }}
 {{  # Stop background C++ Qpid qpidd broker}}
 {{  kill $\{brokerPid}}}
 {{}}}
 {{ }}
 {{main "${@}"}}
 {{ }}
 {{exit}}

./qpidTest.bash script run output:
[gmajszak@xxx-u-dev-wks20 ~]$ ./qpidTest.bash
{{Linux distro:}}
{{NAME="Red Hat Enterprise Linux Workstation"}}
{{VERSION="7.6 (Maipo)"}}
{{ID="rhel"}}
{{ID_LIKE="fedora"}}
{{VARIANT="Workstation"}}
{{VARIANT_ID="workstation"}}
{{VERSION_ID="7.6"}}
{{PRETTY_NAME="Red Hat Enterprise Linux Workstation 7.6 (Maipo)"}}
{{ANSI_COLOR="0;31"}}
{{CPE_NAME="cpe:/o:redhat:enterprise_linux:7.6:GA:workstation"}}
{{HOME_URL=[https://www.redhat.com/]}}
{{BUG_REPORT_URL=[https://bugzilla.redhat.com/]}}

{{REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"}}
{{REDHAT_BUGZILLA_PRODUCT_VERSION=7.6}}
{{REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"}}
{{REDHAT_SUPPORT_PRODUCT_VERSION="7.6"}}
{{Red Hat Enterprise Linux Workstation release 7.6 (Maipo)}}
{{Red Hat Enterprise Linux Workstation release 7.6 (Maipo)}}
{{cpe:/o:redhat:enterprise_linux:7.6:ga:workstation}}

{{Linux version:}}
{{Linux version 3.10.0-1160.45.1.el7.x86_64 
([[email protected]|mailto:[email protected]])
 (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Fri Sep 24 
10:17:16 UTC 2021}}

{{Python3 version:}}
{{Python 3.6.8}}

{{C++ Qpid qpidd broker version:}}
{{qpidd (qpid-cpp) version 1.39.0}}

{{Run of Qpid Python 3 example broker and helloworld_blocking scripts:}}
{{Completed without error}}

{{Run of C++ Qpid qpidd broker and helloworld_blocking script:}}
{{2021-10-13 15:04:53 [Broker] notice Broker (pid=4832) start-up}}
{{2021-10-13 15:04:53 [Security] notice SSL plugin not enabled, you must set 
--ssl-cert-db to enable it.}}
{{2021-10-13 15:04:53 [Store] notice Linear Store: Store module initialized; 
store-dir=/home/gmajszak/.qpidd}}
{{2021-10-13 15:04:53 [Network] notice Listening on TCP/TCP6 port 5672}}
{{./qpidTest.bash: line 3:  4827 Terminated              python3 
~/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/broker.py}}
{{Traceback (most recent call last):}}
{{  File 
"/home/gmajszak/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/helloworld_blocking.py",
 line 32, in <module>}}
{{    receiver.accept()}}
{{  File "/usr/lib64/python3.6/site-packages/proton/_utils.py", line 248, in 
accept}}
{{    self.settle(Delivery.ACCEPTED)}}
{{  File "/usr/lib64/python3.6/site-packages/proton/_utils.py", line 283, in 
settle}}
{{    self.fetcher.settle(state)}}
{{  File "/usr/lib64/python3.6/site-packages/proton/_utils.py", line 192, in 
settle}}
{{    delivery = self.unsettled.popleft()}}
{{IndexError: pop from an empty deque}}
{{'python3 
~/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/helloworld_blocking.py' 
failed}}
{{2021-10-13 15:04:54 [Broker] notice Broker (pid=4832) shut-down}}
{{[gmajszak@xxx-u-dev-wks20 ~]$}}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to