9.0.0
Important
Please read the upgrade guide section carefully
Breaking Changes
- TaskMetadata as header (#238)
decaton-client
:DecatonClient
no longer wraps tasks withDecatonTaskRequest
-protobuf
decaton-processor
:DecatonTaskRequest
is moved tocom.linecorp.decaton.protocol.internal
and marked as deprecated- Retry tasks are no longer produced in
DecatonTaskRequest
format unlessdecaton.retry.task.in.legacy.format
is set totrue
KafkaProducerSupplier
signature changeTaskExtractor
signature change
- Please read below upgrade guide carefully!!!
- Make Decaton can consume any topic with deserializer (#241)
decaton-processor
:ProcessorsBuilder#consuming(String topic, Deserializer<T> deserializer)
no longer parses messages asDecatonTaskRequest
-protobuf at all, unlessdecaton.legacy.parse.fallback.enabled
- Please read below upgrade guide carefully!!!
New Features
Bug Fixes
Improvements
Other Changes
- Fix potential key exposure in PKQ (#237)
- Add task batching doc (#150)
- Update docs and examples for 9.0.0 (#239)
Upgrade guide from 8.0.1 or earlier
- As described in "Breaking Changes" section, Decaton made two big breaking changes in this release.
- You MUST read below guide carefully and follow the instructions, or your application may encounter deserialization errors and fail to process tasks.
Depending on your use cases, there are 4 different upgrade paths.
Using retry queueing? | Using DecatonClient? (i.e. tasks are parsed by Deserializer rather than TaskExtractor ) |
Upgrade path |
---|---|---|
N | N | Case A |
N | Y | Case B |
Y | N | Case C |
Y | Y | Case D |
Case A: No retry queueing && non-DecatonClient
In this case, you can upgrade as usual without any special care.
- Step1: Upgrade decaton-processors to 9.0.0 or higher.
- That's it.
Case B: No retry queueing && DecatonClient
- Step1: Upgrade decaton-processors to 9.0.0 or higher with
decaton.legacy.parse.fallback.enabled=true
- Step2: Upgrade decaton-clients to 9.0.0 or higher
- Step3: Wait all old-format tasks are processed after Step2.
- You can monitor topic's committed offset is caught-up
- Step4: Set
decaton.legacy.parse.fallback.enabled=false
Case C: Retry queueing && non-DecatonClient
- Step1: Upgrade decaton-processors to 9.0.0 or higher with
decaton.retry.task.in.legacy.format=true
,decaton.legacy.parse.fallback.enabled=true
- Step2: After all decaton-processors are upgraded, set
decaton.retry.task.in.legacy.format=false
- Step3: Wait all retry tasks are processed after Step2.
- You can monitor retry-topic's offset lag becomes 0.
- Step4: Set
decaton.legacy.parse.fallback.enabled=false
Case D: Retry queueing && DecatonClient
- Step1: Upgrade decaton-processors to 9.0.0 or higher with
decaton.retry.task.in.legacy.format=true
,decaton.legacy.parse.fallback.enabled=true
- Step2: Upgrade decaton-clients to 9.0.0 or higher
- Step3: After all decaton-processors are upgraded, set
decaton.retry.task.in.legacy.format=false
- Step4: Wait all old-format tasks and retry tasks are processed after Step3.
- You can monitor topic's committed offset is caught-up and retry-topic's offset lag becomes 0.
- Step5: Set
decaton.legacy.parse.fallback.enabled=false