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

Robbie Gemmell commented on PROTON-1809:
----------------------------------------

I expect that this is because the client is awaiting the full message before 
processing it, while the full message cant actually arrive due to the session 
window being full, because the receiver didn't pull the available bytes out for 
the not-yet-complete message. The trace logs support that, you see the receiver 
somewhat redundantly tell the peer that the window is 0 at the end.

This is probably because the proton session endpoint has an 'incoming capacity' 
default of 1MB which it uses to govern the session window, which varies based 
on frame size as its byte-based while the window is frame-based. This 
'capacity' doesn't actually do anything unless you actually set a max frame 
size (which defaults to 4GB if not set). I recently removed this default in 
proton-j in PROTON-1739 because its a bit stupid how it does nothing unless you 
change a completely different setting, then results in strange interactions 
such as this which also affect performance in unexpected ways.

> [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: Major
>
> *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]

Reply via email to