[
https://issues.apache.org/jira/browse/QPIDJMS-621?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18117942#comment-18117942
]
Sathyanath Nagaraja commented on QPIDJMS-621:
---------------------------------------------
The decode was failing with an error like Error on transform: Index: 7, Size: 7
for which the library was sending MODIFIED_FAILED_UNDELIVERABLE.
Discovered that the underlying issue is due to PROTON-2554 and using
proton-j-0.34.1.jar, the decoding issue was not seen anymore.
> Make MODIFIED_FAILED_UNDELIVERABLE behavior configurable during message
> delivery transformation errors
> ------------------------------------------------------------------------------------------------------
>
> Key: QPIDJMS-621
> URL: https://issues.apache.org/jira/browse/QPIDJMS-621
> Project: Qpid JMS
> Issue Type: Improvement
> Components: qpid-jms-client
> Affects Versions: 0.59.0
> Reporter: Sathyanath Nagaraja
> Priority: Minor
>
> *Current Behavior*
> During `processDelivery()` in `AmqpConsumer.java` (line 559), when an error
> occurs during message transformation, the consumer always sends a
> `MODIFIED_FAILED_UNDELIVERABLE` disposition to the broker.
> *Problem*
> This behavior is problematic because:
> - *{*}Transient transformation errors{*}* can occur temporarily (e.g., due
> to unavailable resources, temporary encoding issues)
> - When `MODIFIED_FAILED_UNDELIVERABLE` is sent to Azure Service Bus (ASB),
> messages are placed in the *{*}dead-letter queue or deferred state{*}*
> - This causes valid messages to be unnecessarily lost or deferred, even when
> the error may be transient and recoverable
> - Applications cannot differentiate between permanent failures and transient
> failures during transformation
> *Desired Behavior*
> This behavior should be made *{*}configurable{*}*, allowing users to:
> - Specify different delivery failure dispositions (e.g., `RELEASED`,
> `REJECTED`, or `MODIFIED_FAILED_UNDELIVERABLE`)
> - Choose to retry on transient transformation errors instead of immediately
> marking messages as undeliverable
> - Prevent transient errors from causing permanent message loss
> *Affected Code*
> - *{*}File{*}*:
> `qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConsumer.java`
> - *{*}Method{*}*: `processDelivery()`
> - *{*}Line{*}*: ~559
> *Requested Implementation*
> Add a configuration property to allow customization of the delivery
> disposition for transformation errors:
> - `amqp.transformationErrorDisposition` - to specify the disposition
> (default: `MODIFIED_FAILED_UNDELIVERABLE` for backward compatibility)
> - Alternatively, add `amqp.retryOnTransientTransformationError` to enable
> retry behavior for transient failures
> #
> ##
> ### Impact
> *{*}Without this change{*}*: Transient transformation errors cause messages
> to be permanently deferred/dead-lettered in ASB
> *{*}With this change{*}*: Applications can handle transient errors more
> gracefully and prevent message loss
> *Related Links*
> - Code reference:
> [https://github.com/apache/qpid-jms/blob/main/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConsumer.java#L559]
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]