Skip to content

Deep offset commit resilience in Source #1

@JoshuaC215

Description

@JoshuaC215

Summary

Instead of using auto-commit (lazy implementation for MVP) which has small potential for data loss in case of application crash, ensure that a message is not committed in the Source Kafka partition until it has been successfully Acked/Failed.

Ideally this should also robustly handle failure to Send()/Fail() (at minimum reporting an Event with sufficient information for logging or similar).

Proposed Timeline

This will be a non-trivial lift since it requires quite a few feature changes and tracking all messages through to use the offset watermark effectively.

Proposed Solutions

For handling timeout / loss in kafka, (e.g. not committing the offset until we guarantee all messages before it have been fully handled) it looks like we would disable automatic commit store, manually track which messages were successfully handled, and then use one of the Commit() methods to manually commit. This is likely a post-MVP feature if we are going to maintain significant use of Kafka for a while. Should be thoughtful to leave sufficient hooks for this in the Receive() and Ack() methods.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions