Skip to content

[otap-dataflow] Retry Control Processor #509

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
lquerel opened this issue May 30, 2025 · 0 comments
Open

[otap-dataflow] Retry Control Processor #509

lquerel opened this issue May 30, 2025 · 0 comments
Labels
enhancement New feature or request pipeline Rust Pipeline Related Tasks rust Pull requests that update Rust code

Comments

@lquerel
Copy link
Contributor

lquerel commented May 30, 2025

The purpose of this processor is to generalize support for the retry mechanism for recoverable errors. This approach eliminates the need to implement retry logic within exporters and other components that require this functionality.

Benefits: a single configuration, one unified retry logic, less work for exporters.

This processor will utilize the concept of control messages of types Ack and Nack. An exporter that fails to process a message must emit a Nack control message (see details of the fields below). When message processing succeeds, the exporter must emit an Ack control message.

Definition of the Ack and Nack messages.

pub enum ControlMessage {
    Ack {
        msg_ids: Vec<String>,
    },
    Nack {
        msg_ids: Vec<String>,
        error: ErrorDetail,
        retry_policy: Option<RetryPolicy>,
    },
}

pub struct RetryPolicy {
    pub retry_delay_ms: u64,
}

pub struct ErrorDetail {
    pub recoverable: bool,
    pub reason: String,
}
@lquerel lquerel added enhancement New feature or request pipeline Rust Pipeline Related Tasks rust Pull requests that update Rust code labels May 30, 2025
@lquerel lquerel changed the title [otap-pipeline] Retry Control Processor [otap-dataflow] Retry Control Processor May 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request pipeline Rust Pipeline Related Tasks rust Pull requests that update Rust code
Projects
Status: No status
Development

No branches or pull requests

1 participant