PostHog / PostHog/posthog-elixir
Add public bounded flush API
Nobody has claimed this yet.
- Dominant language
- Elixir
- Stars
- 65
- Forks
- 30
- Avg merge
- 1d 16h
- Merged PRs (30d)
- 16
Description
Summary
Add a public bounded flush API.
Why
sdk-specs marks flush as applicable to both client and server SDKs. Backend users need deterministic delivery before process/request boundaries, tests, scripts, and serverless exits.
Current status
PostHog.Sender flushes on batch size, timer, and GenServer termination, but there is no public flush API. Python has a related issue about adding a max timeout to flush: https://github.com/PostHog/posthog-python/issues/79.
Suggested scope
- Add a public
PostHog.flush/1orPostHog.flush/2accepting a named instance and timeout. - Flush all sender queues immediately without waiting for threshold/timer.
- Return safely when queues are empty.
- Bound the wait with a timeout and return/report status rather than blocking indefinitely.
- Preserve retryable failed events for future retry once retry queue support exists.
- Add tests and docs.
References
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the PostHog.Sender implementation and the referenced sdk-specs flush specification to understand queue behavior and the required contract. Define the public PostHog.flush API, its named-instance and timeout behavior, then add tests and documentation showing empty queues, bounded waits, immediate delivery, and status reporting.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- elixir
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100