Skip to content

9.0.0

Compare
Choose a tag to compare
@ocadaruma ocadaruma released this 19 Aug 05:33
· 4 commits to master since this release

Important

Please read the upgrade guide section carefully

Breaking Changes

  • TaskMetadata as header (#238)
    • decaton-client:
      • DecatonClient no longer wraps tasks with DecatonTaskRequest-protobuf
    • decaton-processor:
      • DecatonTaskRequest is moved to com.linecorp.decaton.protocol.internal and marked as deprecated
      • Retry tasks are no longer produced in DecatonTaskRequest format unless decaton.retry.task.in.legacy.format is set to true
      • KafkaProducerSupplier signature change
      • TaskExtractor 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 as DecatonTaskRequest-protobuf at all, unless decaton.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