L1nq0 commented on code in PR #9094:
URL: https://github.com/apache/storm/pull/9094#discussion_r4192985480
##########
storm-client/src/jvm/org/apache/storm/messaging/DeserializingConnectionCallback.java:
##########
@@ -104,7 +110,7 @@ public void recv(List<TaskMessage> batch) {
try {
tuple = des.deserialize(message.message());
} catch (Exception e) {
- if (!isToleratedDeserializationFailure(e)) {
+ if (strictMode || !isToleratedDeserializationFailure(e)) {
throw e;
Review Comment:
Confirmed, and thanks for tracing it to the Netty layer.
The mechanism, as far as I can tell: StormServerHandler.exceptionCaught
hands the cause to Utils.handleUncaughtException with ALLOWED_EXCEPTIONS
containing only IOException, and the check walks the cause chain. A broken or
oversized compressed frame fails inside decompression as an IOException, which
ZstdUtils.decompress and KryoTupleDeserializer.deserializeTuple wrap in a
RuntimeException, so under strict mode the rethrown failure still matches the
IOException exemption. The connection is closed, the batch including valid
tuples is discarded, and the worker keeps running. Tuple-level decode failures
such as unknown task or stream ids carry no IOException in the chain, so they
reach the Error path and the worker exits.
The documentation in this PR now describes both outcomes instead of claiming
the worker always terminates: the Config javadoc, the configuration table in
docs/Serialization.md, and the deserializationFailures paragraph in
docs/Metrics.md.
The behavior itself is filed as #9157: whether strict mode should terminate
the worker uniformly, or whether the connection-close outcome is the intended
boundary for failures the messaging layer classifies as transport-level. The
missing deserializationFailures increment on the strict path belongs there too.
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]