[ https://issues.apache.org/jira/browse/PROTON-1890?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16541345#comment-16541345 ]
Praveen Bodke commented on PROTON-1890: --------------------------------------- Hello Robbie Gemmell, With some modifications to credit window, now i am able to reproduce the issue. Attaching the modified scheduled_send_03.cpp and server_direct.cpp programs. Please let me know if you need any more information. I would be happy to provide you. Let me go through the scenario here. STEP 1: Two peers P1 and P2 have established the connection and following are the frame information. server listening on <P1-IP>:1239/examples [0x225f360]: <- AMQP [0x225f360]:0 <- @open(16) [container-id="b3d1fa29-84eb-4c1e-bd1e-2a11123b2a64", hostname="10.1.14.102", channel-max=32767, idle-time-out=15000] [0x225f360]:0 <- @begin(17) [next-outgoing-id=0, incoming-window=2147483647, outgoing-window=2147483647] [0x225f360]:0 <- @attach(18) [name="2b590c4a-e237-4522-81f1-8442f2f40844", handle=0, role=false, snd-settle-mode=2, rcv-settle-mode=0, source=@source(40) [durable=0, timeout=0, dynamic=false], target=@target(41) [address="example", durable=0, timeout=0, dynamic=false], initial-delivery-count=0, max-message-size=0] [0x225f360]: -> AMQP [0x225f360]:0 -> @open(16) [container-id="816b5f5c-4b6d-4e50-8a3e-096963ec5e26", channel-max=32767, idle-time-out=10000] [0x225f360]:0 -> @begin(17) [remote-channel=0, next-outgoing-id=0, incoming-window=2147483647, outgoing-window=2147483647] [0x225f360]:0 -> @attach(18) [name="2b590c4a-e237-4522-81f1-8442f2f40844", handle=0, role=true, snd-settle-mode=2, rcv-settle-mode=0, source=@source(40) [durable=0, timeout=0, dynamic=false], target=@target(41) [durable=0, timeout=0, dynamic=false], initial-delivery-count=0, max-message-size=0] [0x225f360]:0 -> @flow(19) [next-incoming-id=0, incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, handle=0, delivery-count=0, link-credit=100, drain=false] [0x225f360]:0 <- @attach(18) [name="2430291c-75ac-4a22-9e6d-dc5e179df431", handle=1, role=true, snd-settle-mode=2, rcv-settle-mode=0, source=@source(40) [address="X.X.X.X:1239/example", durable=0, timeout=0, dynamic=false], target=@target(41) [durable=0, timeout=0, dynamic=false], initial-delivery-count=0, max-message-size=0] [0x225f360]:0 <- @flow(19) [next-incoming-id=0, incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, handle=1, delivery-count=0, link-credit=200, drain=false] P1 receiver credit window is set to 200, this means the P2 sender credit limit is 200. [0x225f360]:0 <- @flow(19) [next-incoming-id=0, incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, handle=1, delivery-count=0, link-credit=200, drain=false] P2 receiver credit window is set to 100 [0x225f360]:0 -> @flow(19) [next-incoming-id=0, incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, handle=0, delivery-count=0, link-credit=100, drain=false] STEP 2: P2 sends the messages continuously.. during this time frame, we drop all the packets between two peers. STEP 3: P1 detects the idle-time-out expiry after sending the some empty frames. [0x1a36360]:0 -> @flow(19) [next-incoming-id=2000, incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, handle=0, delivery-count=2000, link-credit=100, drain=false] [0x1a36360]:0 -> @disposition(21) [role=true, first=1958, last=1999, settled=true, state=@accepted(36) []] [0x1a36360]:0 -> (EMPTY FRAME) [0x1a36360]:0 -> (EMPTY FRAME) [0x1a36360]:0 -> @close(24) [error=@error(29) [condition=:"amqp:resource-limit-exceeded", description="local-idle-timeout expired"]] [0x1a36360]: -> EOS amqp:resource-limit-exceeded: local-idle-timeout expired STEP 4: P2 still in ESTABLISHED state and never disconnects. [^PROTON-1890.zip] > [c++] implement idle_timeout and heartbeats > ------------------------------------------- > > Key: PROTON-1890 > URL: https://issues.apache.org/jira/browse/PROTON-1890 > Project: Qpid Proton > Issue Type: Bug > Components: cpp-binding > Affects Versions: 0.16.0 > Reporter: Praveen Bodke > Priority: Major > Attachments: PROTON-1890.zip > > > This is similar issue reported in PROTON-1782 for ruby. > We are facing this issue in cpp binding and i am able to reproduce the issue > with scheduled_send_03.cpp example. The test scenario is to drop all the > packets from both the interfaces after the successful connection. The only > change i made to this example is to send messages continuously inside the > send() method. The other end is detecting the error as it is sending the > empty frames and no response is heard. > The proton is not sending the heartbeat messages (empty frames) as the sender > is busy in sending the data frames. Is it not necessary to send empty frames > even if the data frames are sent? > -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org