Repository navigation
feat: fetch project remote config at startup and periodically - #972
marandaneto wants to merge 4 commits into
Conversation
posthog-python Compliance ReportDate: 2026-09-21 12:09:04 UTC ✅ All Tests Passed!111/111 tests passed Capture_V1 Tests✅ 94/94 tests passed View Details
Feature_Flags Tests✅ 17/17 tests passed View Details
|
|
The PR should not merge until clients re-enabled after disabled construction can start remote-config polling; the sync-mode exit cleanup gap should also be addressed. Reviews (1) · Last reviewed commit: "feat: fetch project remote config at sta..." |
|
This PR hasn't seen activity in a week! Should it be merged, closed, or further worked on? If you want to keep it open, post a comment or remove the |
|
This PR hasn't seen activity in a week! Should it be merged, closed, or further worked on? If you want to keep it open, post a comment or remove the |
💡 Motivation and Context
Add project remote-config fetching based on the HTTP contract in PostHog/sdk-specs#70. Also read
sdkDiagnosticsEnabledfrom PostHog/posthog#103683. The new localsdk_diagnostics_enabledoption defaults toTrue. Effective diagnostics permission requires both the local option and the remote value to be true. Missing or invalid remote values mean false. This is experimental and does not collect or report diagnostics yet. Other fetched settings do not change SDK behavior.Clients fetch asynchronously at startup and refresh after each configured interval.
remote_config_poll_interval_secondsdefaults to 300 seconds.Nonedisables both startup and periodic fetches. Disabled clients keep an idle poller without making requests and resume fetching on the next interval after re-enabling.send=Falseand empty project tokens do not start a poller.Requests use the public project token, map US/EU ingestion hosts to their asset hosts, and preserve custom proxy paths. Failed fetches keep the last successful response in memory. Shutdown stops the worker, and forked clients recreate it unless already shut down. Sync-mode clients also register non-blocking poller cleanup at interpreter exit. A private subclass reuses the existing
Pollerloop and cleanup, adding only the immediate startup fetch and remote-config response handling.💚 How did you test it?
git diff --checkpassed.origin/mainpassed at06332f2with no actionable findings.📝 Checklist
If releasing new changes
sampo addto generate a changeset file🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Implemented with Pi using file editing, shell, GitHub CLI, and the isolated autoreview helper. The human-directed scope includes startup and periodic fetching, with a five-minute default and
Noneas the opt-out, plus experimental diagnostics permission. The local permission defaults to enabled but cannot override a remote disable. Code comments explicitly state that no diagnostics are collected yet. Human review is required.