[
https://issues.apache.org/jira/browse/ARTEMIS-1975?focusedWorklogId=390029&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-390029
]
ASF GitHub Bot logged work on ARTEMIS-1975:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 20/Feb/20 16:15
Start Date: 20/Feb/20 16:15
Worklog Time Spent: 10m
Work Description: tabish121 commented on pull request #2986: ARTEMIS-1975
Real Large Message support into AMQP
URL: https://github.com/apache/activemq-artemis/pull/2986#discussion_r382104032
##########
File path:
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerReceiverContext.java
##########
@@ -278,39 +283,66 @@ public void onMessage(Delivery delivery) throws
ActiveMQAMQPException {
return;
}
- if (delivery.isAborted()) {
- // Aborting implicitly remotely settles, so advance
- // receiver to the next delivery and settle locally.
- receiver.advance();
- delivery.settle();
+ try {
+ if (delivery.isAborted()) {
+ // Aborting implicitly remotely settles, so advance
+ // receiver to the next delivery and settle locally.
+ receiver.advance();
+ delivery.settle();
+
+ // Replenish the credit if not doing a drain
+ if (!receiver.getDrain()) {
+ receiver.flow(1);
+ }
+
+ return;
+ } else if (delivery.isPartial()) {
Review comment:
I think you need to add some more metrics here on what constitutes a "large"
message as there isn't anything that requires a client to strictly adhere to
max frame size limits other that it shouldn't go over, it can certainly send
under that amount. A client could split a 4k message into 4 1k chunks etc so
assuming that a message is large just based on partial will lead to likely
considering messages that don't meet the normal Artemis definition of a large
message as being large. Also even if not partial you ought to be checking if
what you have in a complete message that meets your definition of a large
message as the AMQP max frame size is configurable on the protocol adapter so
you might need a second metric there to say it's not partial but it exceeds
what we consider "not large" and would prefer to store it in the large message
way.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 390029)
Time Spent: 40m (was: 0.5h)
> Real LargeMessage support for AMQP
> ----------------------------------
>
> Key: ARTEMIS-1975
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1975
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Affects Versions: 2.6.2
> Reporter: Clebert Suconic
> Assignee: Clebert Suconic
> Priority: Blocker
> Fix For: 2.12.0
>
> Time Spent: 40m
> Remaining Estimate: 0h
>
> This is quite a blocker for ever releasing master.
> And this task in between a bug and an improvement.
>
> Currently LargeMessages in AMQP are converted to Core.
> We should at least not require a conversion.. keep large messages in AMQP
> without conversions.
>
> Optionally it would be nice to stream in AMQP as well. but if we can at least
> prevent conversions it's already a big win!
--
This message was sent by Atlassian Jira
(v8.3.4#803005)