Alan Conway created PROTON-1078:
-----------------------------------

             Summary: go electron broker dequeues an extra message
                 Key: PROTON-1078
                 URL: https://issues.apache.org/jira/browse/PROTON-1078
             Project: Qpid Proton
          Issue Type: Bug
          Components: go-binding
    Affects Versions: 0.11
            Reporter: Alan Conway
            Assignee: Alan Conway


The go broker appears to dequeue an extra message in excess of link credit. It 
does not send the message but puts it back on the queue, but it should not have 
been dequeued in the first place without sufficient credit.

Run the go exampe broker
{code}
cd examples/go/electron
PN_TRACE_FRM=1 go run broker.go -debug
{code}

Then run this python client:

{code}
#!/usr/bin/python

from proton import *

messenger = Messenger()
messenger.incoming_window = 1

messenger.start()
messenger.subscribe("localhost/test")
m = Message()
messenger.recv(1)

t = messenger.get(m)
print m.address, m.subject or "(no subject)", m.properties, m.body
messenger.accept(t)

messenger.stop()
{code}

As the following output shows, the broker attempts to send 2 messages, fails on 
the second and puts it back on the queue. It should not have attempted to send 
the second message since only 1 credit was granted.

{code}
broker(4374): Accepted 127.0.0.1:5672-127.0.0.1:44522
[0x7fbb6c014990]:  <- AMQP
[0x7fbb6c014990]:0 <- @open(16) 
[container-id="AE522C5A-8BC0-4C3E-A75B-D1256C1AAA47", hostname="localhost", 
channel-max=32767]
[0x7fbb6c014990]:0 <- @begin(17) [next-outgoing-id=0, 
incoming-window=2147483647, outgoing-window=2147483647]
[0x7fbb6c014990]:0 <- @attach(18) [name="test", handle=0, role=true, 
snd-settle-mode=1, rcv-settle-mode=0, source=@source(40) [address="test", 
durable=0, timeout=0, dynamic=false], target=@target(41) [address="test", 
durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
[0x7fbb6c014990]:0 <- @flow(19) [incoming-window=2147483647, 
next-outgoing-id=0, outgoing-window=2147483647, handle=0, delivery-count=0, 
link-credit=1, drain=false]
broker(4374): incoming: session: &{}/0x1880800
broker(4374): incoming: link(sender): test(test->test)
broker(4374): test(test->test): sent "test-0"
[0x7fbb6c014990]:  -> AMQP
[0x7fbb6c014990]:0 -> @open(16) 
[container-id="A28BE353-586E-4023-9590-995C2EC8362C", channel-max=32767]
[0x7fbb6c014990]:0 -> @begin(17) [remote-channel=0, next-outgoing-id=0, 
incoming-window=2147483647, outgoing-window=2147483647]
[0x7fbb6c014990]:0 -> @attach(18) [name="test", handle=0, role=false, 
snd-settle-mode=2, rcv-settle-mode=0, source=@source(40) [address="test", 
durable=0, timeout=0, dynamic=false], target=@target(41) [address="test", 
durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
broker(4374): test(test->test): sent "test-1"
[0x7fbb6c014990]:0 -> @transfer(20) [handle=0, delivery-id=0, 
delivery-tag=b"1", message-format=0, settled=true, more=false] (72) 
"\x00Sp\xd0\x00\x00\x00\x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00"\x00\x00\x00\x0d@@@@@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00@R\x00@\x00Sw\xa1\x06test-0"
[0x7fbb6c014990]:0 <- @detach(22) [handle=0, closed=true]
[0x7fbb6c014990]:0 <- @close(24) []
[0x7fbb6c014990]:  <- EOS
[0x7fbb6c014990]:  <- EOS
[0x7fbb6c014990]:0 -> @detach(22) [handle=0, closed=true]
[0x7fbb6c014990]:0 -> @close(24) []
[0x7fbb6c014990]:  -> EOS
broker(4374): test(test->test) closed: EOF
broker(4374): message "test-1" put back, status unsent, error EOF
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to