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

Ganesh Murthy commented on PROTON-2056:
---------------------------------------

Here are the disposition frames for all 50
{noformat}
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=301, settled=true, 
state=@accepted(36) []]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=302, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=4910, 
incoming-window=2147483627, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=309, link-credit=245, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=303, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=4983, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=314, link-credit=242, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=304, last=305, 
settled=true, state=@released(38) []]

[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=306, 
state=@released(38) []]
[0x55a85068cdf0]:0 -> @disposition(21) [role=false, first=306, settled=true]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=306, last=307, 
settled=true, state=@released(38) []]

[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5280, 
incoming-window=2147483441, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=332, link-credit=232, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=308, last=313, 
settled=true, state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5281, 
incoming-window=2147483440, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=332, link-credit=233, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=314, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5437, 
incoming-window=2147483336, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=342, link-credit=224, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=315, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5560, 
incoming-window=2147483295, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=350, link-credit=220, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=316, last=319, 
settled=true, state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483301, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=220, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=320, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=321, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483470, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=222, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=322, last=323, 
settled=true, state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=223, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=324, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=224, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=325, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=225, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=328, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=226, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=326, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=227, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=327, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=228, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=329, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=229, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=330, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=230, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=331, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=231, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=332, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=234, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=333, last=335, 
settled=true, state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=235, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=336, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=237, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=337, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=239, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=338, last=340, 
settled=true, state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=241, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=341, last=342, 
settled=true, state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=242, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=343, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=245, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=344, last=346, 
settled=true, state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=246, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=347, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=247, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=348, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=248, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=349, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=249, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=350, settled=true, 
state=@released(38) []]
[0x55a85068cdf0]:0 <- @flow(19) [next-incoming-id=5602, 
incoming-window=2147483647, next-outgoing-id=0, outgoing-window=2147483647, 
handle=0, delivery-count=352, link-credit=250, drain=false]
[0x55a85068cdf0]:0 <- @disposition(21) [role=true, first=351, settled=true, 
state=@released(38) []]{noformat}

> [proton-python]  on_settled callback not called when disposition arrives in 2 
> frames
> ------------------------------------------------------------------------------------
>
>                 Key: PROTON-2056
>                 URL: https://issues.apache.org/jira/browse/PROTON-2056
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: proton-c, python-binding
>    Affects Versions: proton-c-0.28.0
>            Reporter: Ganesh Murthy
>            Priority: Major
>         Attachments: proton-2056.patch
>
>
> When very large anonymous messages are sent to the router and these messages 
> have no receiver, they are immediately released. The router waits for the 
> entire large message to arrive in the router before settling it. Due to this, 
> in some cases, two disposition frames are sent for the same delivery, the 
> first has state=released and the second has settled=true as seen below
>  
> {noformat}
> 0x56330c891430]:0 <- @disposition(21) [role=true, first=315, 
> state=@released(38) []]
> [0x56330c891430]:0 <- @disposition(21) [role=true, first=315, settled=true, 
> state=@released(38) []]{noformat}
>  
> When this case happens, the on_settled is not called for the python binding. 
> The on_released is called. The on_settled must be called when a settlement 
> arrives for every delivery. I observed this behavior in a python system test 
> in Dispatch Router. The test called
> test_51_anon_sender_mobile_address_large_msg_edge_to_edge_two_interior can be 
> found in tests/system_tests_edge_router.py
> The test does not fail all the time but when it does it is due to the 
> on_settled not being called for deliveries that have this two part 
> disposition.
>  
> I tried in vain to write a standalone python reproducer. I could not do it.
>  
> To run the specific system test run the following from the 
> qpid-dispatch/build folder
>  
> {noformat}
>  /usr/bin/python "/home/gmurthy/opensource/qpid-dispatch/build/tests/run.py" 
> "-m" "unittest" "-v" 
> "system_tests_edge_router.RouterTest.test_51_anon_sender_mobile_address_large_msg_edge_to_edge_two_interior"{noformat}
>  
> The following is the test failure
> {noformat}
> test_51_anon_sender_mobile_address_large_msg_edge_to_edge_two_interior 
> (system_tests_edge_router.RouterTest) ... FAIL
> ======================================================================
> FAIL: test_51_anon_sender_mobile_address_large_msg_edge_to_edge_two_interior 
> (system_tests_edge_router.RouterTest)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File 
> "/home/gmurthy/opensource/qpid-dispatch/tests/system_tests_edge_router.py", 
> line 964, in 
> test_51_anon_sender_mobile_address_large_msg_edge_to_edge_two_interior
>     self.assertEqual(None, test.error)
> AssertionError: None != u'Timeout Expired - n_sent=350 n_accepted=300 
> n_modified=0 n_released=48'
> ----------------------------------------------------------------------
> Ran 1 test in 17.661s
> FAILED (failures=1)
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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

Reply via email to