[
https://issues.apache.org/jira/browse/CAMEL-24428?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18107810#comment-18107810
]
Andrea Cosentino commented on CAMEL-24428:
------------------------------------------
PR: https://github.com/apache/camel/pull/25685
muteException added to KnativeConfiguration, defaulting to true, carried to the
consumer through KnativeTransportConfiguration (three-argument constructor
retained, delegating with true).
Note for review: the muted body is an empty byte array rather than null.
KnativeHttpConsumer sends 204 No Content when the computed body is null, so
returning null would have replaced the 500 with a 204 - swapping a disclosed
stack trace for a hidden failure. The tests assert the status alongside the
body.
Backports apply to camel-4.22.x and camel-4.18.x (identical code on both,
verified after a fetch); camel-4.14.x is EOL. The default flip needs the same
upgrade-guide note on the maintenance lines - CAMEL-23651 set that precedent
when it flipped netty-http and undertow in 4.14.8/4.18.3/4.21.0.
_Claude Code on behalf of oscerd_
> camel-knative - add a muteException consumer option
> ---------------------------------------------------
>
> Key: CAMEL-24428
> URL: https://issues.apache.org/jira/browse/CAMEL-24428
> Project: Camel
> Issue Type: Improvement
> Components: camel-knative
> Reporter: Andrea Cosentino
> Assignee: Andrea Cosentino
> Priority: Major
> Fix For: 4.23.0
>
>
> CAMEL-23651 aligned the {{muteException}} consumer option so that a failed
> exchange does not return the exception's stack trace or message to the remote
> caller. The option exists in camel-http-common (and therefore camel-servlet
> and camel-jetty), camel-http, camel-netty-http, camel-platform-http and
> camel-undertow. A grep for {{muteException}} across {{components/}} still
> shows it in the http family only.
> {{KnativeHttpConsumer.computeResponseBody()}} returns the *full stack trace*
> of the route exception as the response body, unconditionally:
> {code:java}
> Exception exception = message.getExchange().getException();
> if (exception != null) {
> // we failed due an exception so print it as plain text
> final String stackTrace = ExceptionHelper.stackTraceToString(exception);
> // the body should then be the stacktrace
> body = stackTrace.getBytes(StandardCharsets.UTF_8);
> // force content type to be text/plain as that is what the stacktrace is
> message.setHeader(Exchange.CONTENT_TYPE, "text/plain");
> {code}
> Proposal: add a {{muteException}} consumer option, defaulting to {{true}} to
> match the post-CAMEL-23651 behaviour of the http family, with an
> upgrade-guide entry noting that routes relying on the detail must set it to
> {{false}} explicitly.
> *This issue was rescoped to camel-knative only.* The three other consumers it
> originally covered are now tracked separately so that each can be fixed and
> released on its own:
> * CAMEL-24476 - camel-mina
> * CAMEL-24477 - camel-cxf
> * CAMEL-24478 - camel-grpc
--
This message was sent by Atlassian Jira
(v8.20.10#820010)