-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Retrying task will be discarded on task deserialization with using DefaultTaskExtractor #123
Comments
Thanks for pointing out. Yeah, that's the heritage from when Decaton didn't support consuming arbitrary task format. (Initially, Decaton only supported When we introduced
In short, you have to use I guess we can solve this problem fundamentally in this attempt (#80), but unfortunately it's now stuck due to our lack of resource. |
We are using I think the problem of the code is here If we specify If we call |
This my comment was bit wrong. Precisely, you have to use ProcessorsBuilder#consuming(String, Deserializer) to consume DecatonTaskRequest format.
Yeah, right. Though throwing an exception or logging is an option, if users "wrap" DefaultTaskExtractor (like you did) in outer extractor, it may not work. I think adding some |
We are consuming Kafka topic using Decaton processor with retrying.
However,
ProcessorsBuilder.consuming(String topic, TaskExtractor<T> taskExtractor)
is not working correctly withDefaultTaskExtractor
.retryTaskExtractor
will unwrapDecatonTaskRequest
usingDefaultTaskExtractor
, thentaskExtractor.extract()
here.https://github.com/line/decaton/blob/v3.0.2/processor/src/main/java/com/linecorp/decaton/processor/runtime/ProcessorsBuilder.java#L76
But if
taskExtractor
isDefaultTaskExtractor
or aTaskExctractor
which is delegating deserialization toDefaultTaskExtractor
, deserialization will be failed onretryTaskExtractor
and the retrying task will be discarded.Stacktrace:
We passed original
com.linecorp.bot.commons.decaton.processor.TimedTaskExtractor
totaskExtractor
which is like following (written in Kotlin).This
TimedTaskExtractor
is for observing consuming delay.The issue will cause with delegate =
DefaultTaskExtractor
.The text was updated successfully, but these errors were encountered: