Skip to content

Releases: line/decaton

v9.1.0

29 Jan 03:47
Compare
Choose a tag to compare

Important

Please read the upgrade guide in https://github.com/line/decaton/releases/tag/v9.0.0 carefully

Breaking Changes

New Features

  • Put back support to produce in the old DecatonTaskRequest for migration #248

Bug Fixes

Improvements

Other Changes

9.0.1

02 Sep 05:52
Compare
Choose a tag to compare

Important

Please read the upgrade guide in https://github.com/line/decaton/releases/tag/v9.0.0 carefully

Breaking Changes

New Features

Bug Fixes

Improvements

  • Lower log level of partition processor core creation, to be virtual thread friendly #245

Other Changes

9.0.0

19 Aug 05:33
Compare
Choose a tag to compare

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

EDIT 2025.01.29

In addition to the above migration procedure, if you are using DecatonClient (decaton-client) in your application, which also runs a ProcessorSubscription (decaton-processor module) AND the tasks produced by the same app are coming back to the processor of the same app (i.e, looping-back), by you upgrading decaton-processor dep it also pulls a newer decaton-client dep which no longer produces tasks in the deprecated DecatonTaskRequest format.
Under this situation we also need to keep the DecatonClient producing tasks in the old format until all destination processors are upgraded and reasy to parse thew new header-based metadata, and for this case we've recently added a new flag to DecatonClientBuilder to instruct it keep using the deprecated format - produceInOldTaskRequest.
Please make sure to set the parameter if your application matches the above case.
See also #248.

DecatonClient.producing(topic, new ProtocolBuffersSerializer<HelloTask>())
                        ...
                       .produceInOldTaskRequest(true) // This will make the resulting DecatonClient to keep using the old task format
                       .build();

8.0.1

17 May 05:16
Compare
Choose a tag to compare

Breaking Changes

New Features

Bug Fixes

  • Use TopicPartition.topic for metrics #235

Improvements

Other Changes

  • Bump dependencies (micrometer/tracing, spring-boot, central-dogma) #233
  • Fix ResourceTracker in benchmark to work fine with VIRTUAL_THREAD #234

8.0.0

28 Mar 09:00
Compare
Choose a tag to compare

Breaking Changes

  • Add virtual threads support #224
    • AsyncShutdownable interface was replaced to AsyncClose

New Features

  • Add virtual threads support #224

Bug Fixes

Improvements

  • Cache CD dynamic properties #222

Other Changes

7.2.0

28 Nov 06:36
Compare
Choose a tag to compare

Breaking Changes

New Features

  • Add delivery latency and scheduled delay metrics (#218)

Bug Fixes

Improvements

  • Some updates and improvements for the benchmark module (#219)
  • New metrics follow up for #218 (#220)

Other Changes

  • Drop Java8 support, upgrade gradle and junit (#214)
    • NOTE: Java8 is still supported because we reverted it in #215
  • Bring back java 8 support (#215)

7.1.1

19 Sep 09:35
Compare
Choose a tag to compare

Breaking Changes

New Features

Bug Fixes

  • Prevent non-RuntimeException causes completion-leak fixes #211 (#212)

Improvements

Other Changes

7.1.0

17 Aug 08:45
Compare
Choose a tag to compare

Breaking Changes

New Features

  • Support spring boot 3 on decaton-spring #210

Bug Fixes

Improvements

Other Changes

7.0.0

21 Jul 01:59
Compare
Choose a tag to compare

Breaking Changes

  • Make max.pending.records property reloadable (#207)

New Features

Bug Fixes

Improvements

Other Changes

6.5.0

22 May 06:08
Compare
Choose a tag to compare

Breaking Changes

New Features

  • Support micrometer-tracing (#205)

Bug Fixes

Improvements

Other Changes