feat: Retry failed Event requests #123
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Added Polly to retry failed Event requests, as recommended in .NET docs. As the various client SDKs differ in configuration I've set up a minimal config that can be easily adjusted and extended to more APIs (for example flags, config, etc) if needed. The default settings try to match js/python client configs. We cover
batchandcaptureendpoints for now, but not any of the flags or config endpoints to stay consistent with other clients.We can easily adjust the exceptions or
ApiResultstatuses that are being retried if needed, for now it retriesApiExceptionand timeouts, other exceptions throw directly.A
ResiliencePipelinecan be passed tonew PostHogClient(), ifnullit will create pipeline with default settings fromPostHogOptions, or if no retry needed -ResiliencePipeline.Emptyexecutes the callbacks directly with no extra logic.Honestly, the added test is a bit more of an integration test than unit, but at least helps verify the behavior and executes quickly.
Closes #7