Dropping records during decaton v9 migration due to incompatible retry task format · Issue #250 · line/decaton · GitHub
More Web Proxy on the site http://driver.im/
You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
During migration to Decaton v9, we encountered dropping records in retry topics due to deserialization failures. The issue occurs when a processor with decaton.retry.task.in.legacy.format=true produces retry tasks while still having the dt_meta header present, causing a format mismatch when those tasks are later consumed.
Situation
decaton-client: v9.1.0
decaton-processor: v9.1.0
decaton.retry.task.in.legacy.format=true
decaton.legacy.parse.fallback.enabled=true
I migrated Decaton according to Case D of the migration guide. After updating the clients to produce v9+ format messages, I encountered the following error logs:
Decaton clients produce tasks with the dt_meta header if their version is v9 or higher.
The DecatonTaskRetryQueueingProcessor produces tasks in legacy format if decaton.retry.task.in.legacy.format=true and retains headers, including dt_meta.
The Decaton processor attempts to deserialize messages as v9+ format if the dt_meta header is present; otherwise, it uses the legacy format.
This leads to deserialization errors when processing tasks in the retry topic that have the dt_meta header and are in legacy format.
Proposed Solution
Modify DecatonTaskRetryQueueingProcessor to remove the dt_meta header when decaton.retry.task.in.legacy.format=true to prevent the format mismatch.
The fix should be applied at:
Uh oh!
There was an error while loading. Please reload this page.
Problem Overview
During migration to Decaton v9, we encountered dropping records in retry topics due to deserialization failures. The issue occurs when a processor with
decaton.retry.task.in.legacy.format=true
produces retry tasks while still having thedt_meta
header present, causing a format mismatch when those tasks are later consumed.Situation
decaton.retry.task.in.legacy.format=true
decaton.legacy.parse.fallback.enabled=true
I migrated Decaton according to Case D of the migration guide. After updating the clients to produce v9+ format messages, I encountered the following error logs:
Root cause
dt_meta
header if their version is v9 or higher.decaton.retry.task.in.legacy.format=true
and retains headers, includingdt_meta
.dt_meta
header is present; otherwise, it uses the legacy format.This leads to deserialization errors when processing tasks in the retry topic that have the
dt_meta
header and are in legacy format.Proposed Solution
Modify DecatonTaskRetryQueueingProcessor to remove the
dt_meta
header whendecaton.retry.task.in.legacy.format=true
to prevent the format mismatch.The fix should be applied at:
decaton/processor/src/main/java/com/linecorp/decaton/processor/runtime/internal/DecatonTaskRetryQueueingProcessor.java
Line 84 in ef89f5f
The text was updated successfully, but these errors were encountered: