L1nq0 opened a new pull request, #9094:
URL: https://github.com/apache/storm/pull/9094

   Relates to #9077
   
   This implements part of #9077: the unknown-task and unknown-stream checks in 
KryoTupleDeserializer now throw a typed exception, and a new config makes 
deserialization failures fatal again.
   
   What changed
   
   KryoTupleDeserializer throws TupleDeserializationException (a 
RuntimeException in org.apache.storm.serialization) when a tuple names a source 
task the receiving topology cannot resolve, or a stream id the source component 
does not declare. The unknown-task case previously threw a bare 
IllegalArgumentException; the unknown-stream case previously resolved to a null 
stream name and the tuple was delivered anyway.
   
   DeserializingConnectionCallback treats the new exception as a tolerated 
deserialization failure, so both cases are dropped and counted like the other 
decode failures, with the task or stream id in the message.
   
   The new config topology.tuple.deserialization.strict.enable (default false) 
makes any deserialization failure propagate instead of being dropped, restoring 
the pre-3.1.0 fail-fast behavior. The default keeps the behavior introduced by 
#9076.
   
   Behavior changes
   
   - The exception type for an unresolvable source task changes from 
IllegalArgumentException to TupleDeserializationException. The message text is 
unchanged.
   - A tuple whose stream id does not resolve for its source component is now 
dropped with an error naming the component and the stream id. Previously it was 
delivered with a null stream name.
   
   Tests
   
   DeserializingConnectionCallbackTest gains a test for the unknown-stream drop 
and one for strict mode making a truncated payload fatal. The existing 
unknown-task test now asserts the typed exception and that the message names 
the task id. The storm-client test suite passes.
   
   Open questions
   
   Whether the other tolerated exception types in 
DeserializingConnectionCallback should also be replaced by typed exceptions is 
left open; this change only types the failures KryoTupleDeserializer itself 
detects. The config flag name follows the existing topology.*.enable 
convention; happy to rename if maintainers prefer another form.
   


-- 
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]

Reply via email to