-
Notifications
You must be signed in to change notification settings - Fork 5.6k
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
feat(outputs): Add framework to retry on startup errors #14884
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really like this.
In general, all outputs are connecting to something or creating a server for something to connect to with the exception file? And I don't think we would want to change anything for file.
What do you think are the next steps?
Download PR build artifacts for linux_amd64.tar.gz, darwin_arm64.tar.gz, and windows_amd64.zip. 📦 Click here to get additional PR build artifactsArtifact URLs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for this! Did you want to look at the wavefront graphite output in this or as a second PR?
@powersj here are my findings regarding the graphite output... The current behavior of graphite is to always succeed on startup even though no server can be connected. The plugin will then try to connect to the given servers in each Regarding the framework, the conversion of the graphite output has some drawbacks:
So given the challenges above and the little gain in terms of code-removal I suggest to not convert the graphite output for now, at least until we also handle the reconnect case in the framework... |
@DStrand1 all yours to do a final review. |
Summary
A frequently requested feature is to retry startup for plugins in case of error e.g. if the connection to a remote machine fails.
Instead of implementing the logic for retrying in each plugin, this PR provides a framework for output-plugins to use if they wish to support retries. As an example, the Kafka output plugin is converted to use the new framework
More details can be found in the TSD-006 specification.
Checklist
Related issues
resolves #14803
resolves #9778