-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
Expected Behavior
Offsets shall be committed even if all records in a poll are skipped by interceptors.
Current Behavior
Offsets are not committed when all records in a poll are skipped by interceptors, causing lags.
Context
In our project, we skip huge amounts of records (company-wide topics where only a fraction is important to us).
Therefore, polls often contain records that are all skipped by interceptors.
In such cases, partition offsets are not committed and we observe enormous lags (hundreds of thousands).
This behaviour effectively prevents us from detecting slow consumers.
The only workaround is to avoid interceptors and implement a custom CompositeRecordFilterStrategy that does the same thing.
However, we need to have our custom LoggingInterceptor in place (begins a new XRay Segment on intercept and ends it on afterRecord) that logs only non-skipped records.
Since the interceptors are called prior to the filters, we're forced into an ugly workaround where the LoggingInterceptor will have to call the CompositeRecordFilterStrategy to verify if a message will be filtered out and log those non-filtered.
This issue is created after a discussion with @garyrussell on StackOverflow.