Default Mixpanel ingestion host to EU region#427
Conversation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 47 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
WalkthroughChanges the default Mixpanel analytics ingestion host from an empty string (US default) to ChangesMixpanel EU Default Host
Version Bump
Related Issues: #426 — Default Mixpanel host targets US, breaking EU data-residency ingestion after forwarding sunset. Suggested labels: bug, analytics, configuration Suggested reviewers: none identified Poem: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
The empty value is an intentional, tested path (empty -> SDK default US host), so "Do NOT set it to an empty value" mischaracterized a supported option as forbidden. Describe empty as the US selector instead. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Summary
Flips the shipped default of the
mixpanel_api_hostconfig field toapi-eu.mixpanel.comso analytics events are ingested directly in the EU region, and removes the empty-string override ofBLOCKSCOUT_MIXPANEL_API_HOSTfrom the two shipped artifacts (Dockerfile,.env.example).Closes #426.
Why
The central analytics project uses EU data residency and had been relying on Mixpanel's legacy US→EU forwarding, which was sunset on 2026-07-01. The server previously defaulted to the SDK's built-in US endpoint (
api.mixpanel.com), so after the sunset events would no longer reach the EU project. Additionally,Dockerfileand.env.examplesetBLOCKSCOUT_MIXPANEL_API_HOST=""— pydantic reads that empty string as an explicit override, which would silently route ingestion back to US and defeat the new default. Both shipped artifacts now leave the variable commented out so the config default takes effect, while still allowing a runtime override (e.g.-e BLOCKSCOUT_MIXPANEL_API_HOST=api.mixpanel.com) for US or other-region projects.What changed
blockscout_mcp_server/config.py—mixpanel_api_hostdefault changed from""to"api-eu.mixpanel.com", with an inline comment explaining the EU-default rationale and the US override path.analytics.pyis deliberately untouched: its existing routing already sends any non-empty host through a customConsumer.Dockerfile/.env.example— the active empty-value assignments are commented out (mirroring the existing token line), so no shipped artifact overrides the new default; the surrounding comments explain the override path.Consumer; empty host → SDK default), and made the existing analytics tests hermetic under the new EU default by patchinganalytics.Consumeralongsideanalytics.Mixpanel.0.17.0.dev3inpyproject.toml,blockscout_mcp_server/__init__.py, andserver.json(in lockstep, per the version-management rule).Notes for reviewers
SPEC.mdis intentionally unchanged — this is a low-level config default; the Direct Analytics section documents the token and gating, not the host/region, so no SPEC prose would add value here.mcpb/manifest.jsonandmcpb/manifest-dev.jsonare intentionally not bumped — neither theserverfield nor thetoolslist changed (per135-mcpb-manifest-version.mdc).Verification
uv run pytest→ 849 passed, 88 deselecteduv run ruff check .→ All checks passeduv run ruff format --check .→ 164 files already formatted🤖 Generated with Claude Code
Summary by CodeRabbit