[
https://issues.apache.org/jira/browse/PROTON-1809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16417147#comment-16417147
]
Robbie Gemmell commented on PROTON-1809:
----------------------------------------
I was going to say that didnt surprise me, but looking at the rest of the code
for recieve.c it actually did surprise me.
I expected it was simply waiting for the full message to arrive before reading
any of it, thus meaning it couldnt all arrive due to the now-unexpectedly-low
session window being closed.
However, it looks like actually it does read the partial message content as it
arrives. When it does that, theres a check to see if the window is 0, which is
meant to ensure the window can be recomputed and assuming enough data was read
it will reopen.
In proton-j this happens by marking the link as modified when the read occurs,
which later causes it to send a flow, which also recomputes and includes the
session window.
In proton-c its not clear to me that happens. In pn_link_recv it seems to add
the delivery to the transport work list (pni_add_tpwork(delivery)), so unless
that has a side effect of causing a flow for the link or session, it wont
actually reopen the session window.
> [python, ruby] Unable to receive messages when max-frame-size is set to more
> than 2^20
> --------------------------------------------------------------------------------------
>
> Key: PROTON-1809
> URL: https://issues.apache.org/jira/browse/PROTON-1809
> Project: Qpid Proton
> Issue Type: Bug
> Components: python-binding, ruby-binding
> Affects Versions: proton-c-0.22.0
> Environment: RHEL 7 x86_64
> Reporter: Radim Kubis
> Assignee: Alan Conway
> Priority: Minor
>
> *Python:*
> {code:java}
> def on_session_init(self, event):
> event.transport._set_max_frame_size(VALUE)
> {code}
> I noticed that the receiver is not able to receive messages when the value
> for max-frame-size is larger than 2^20 (1048576) bytes (remote_max_frame_size
> is 4294967295). I'm not really sure if that is expected. This may be
> reproduced when adding the code above ie.: to simple_recv.py.
> Note: This is not a good use case as setting the max-frame-size in
> on_session_init is really too late. But given that it is too late to set the
> max-frame-size, I would expect it won't have any effect on the client.
>
> *Ruby:*
> From [https://github.com/rh-messaging/cli-proton-ruby]
> [cli-proton-ruby|https://github.com/rh-messaging/cli-proton-ruby]
> {{cli-proton-ruby-receiver -b <broker> -c <msg_count> --log-msgs dict
> --conn-max-frame-size 1048577}}
> Receiver is stuck.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]