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

Christopher L. Shannon commented on AMQ-8412:
---------------------------------------------

[~mattrpav] - I misread the commit initially, I see that the error is thrown on 
the client side before the client even tries the send so it's using the 
estimated size in the sync send to compare to the maxFrameSize. So in this case 
keeping open the connection is probably fine if the client wants to handle it.

Preventing the client from even sending the message at all if too large in the 
first place is an interesting idea but I see a couple potential issues.

1) The getSize() method estimates the true size and is not exact so there could 
be slightly different results depending on the message type and isn't going to 
exactly match the true frame size when marshaled. So this could cause 
inconsistent behavior and would need to be tested.

2) The other issue is this only applies to sync send so now async send is 
different. We get into a scenario where sync fails fast but async doesn't which 
could lead to a little bit of confusion.

In terms of the test failure from AMQ-8183, that is because the test just uses 
maxFrameSize to create the error condition (connection closing causing the 
infinite loop). So if we make this change the test would need to be re-written 
to try and cause the same error using a different method (I can look into it 
more) or maybe I can override the send method in the client just for that test 
to send the message anyways to trigger the broker error. I'll take a look.

> Return a well-formed response to clients when max message size is sent
> ----------------------------------------------------------------------
>
>                 Key: AMQ-8412
>                 URL: https://issues.apache.org/jira/browse/AMQ-8412
>             Project: ActiveMQ
>          Issue Type: New Feature
>          Components: JMS client
>            Reporter: Matt Pavlovich
>            Assignee: Jean-Baptiste Onofré
>            Priority: Major
>             Fix For: 5.17.0, 5.16.4
>
>          Time Spent: 1h
>  Remaining Estimate: 0h
>
> Currently, clients get an inconclusive exception when a message that is too 
> large is sent. We should send a well-formed message, and then close.
> Options: 
> 1. Change the current IOException to something else to fall within existing 
> exception flow
> 2. Update current exception handling to send ExceptionResponse w/ the max 
> message size message to the client before closing



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to