fix(source-slack): use RATE_LIMITED action for rate limit response filters#76997
fix(source-slack): use RATE_LIMITED action for rate limit response filters#76997devin-ai-integration[bot] wants to merge 3 commits intomasterfrom
Conversation
…lters The Slack connector's error handlers used action: RETRY for rate-limited responses (both the ratelimited predicate and http_codes: [429] filters). The CDK only emits RATE_LIMITED stream status messages and logs when the response action is RATE_LIMITED, not RETRY. This caused rate limiting to be invisible in the source logs and UI timeline. Changed all rate-limit response filters from action: RETRY to action: RATE_LIMITED across the shared slack_api_error_handler, the default requester, and the users_stream error handler. Co-Authored-By: Christo Grabowski <christo.grab@gmail.com>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
👋 Greetings, Airbyte Team Member!Here are some helpful tips and reminders for your convenience. 💡 Show Tips and TricksPR Slash CommandsAirbyte Maintainers (that's you!) can execute the following slash commands on your PR:
📚 Show Repo GuidanceHelpful Resources
|
|
…d responses Co-Authored-By: Christo Grabowski <christo.grab@gmail.com>
Co-Authored-By: Christo Grabowski <christo.grab@gmail.com>
|
Deploy preview for airbyte-docs ready!
Deployed with vercel-action |
Reviewing PR for connector safety and quality.
|
|
↪️ Triggering Reason: PR is ready for review with no prior AI review on file. |
AI PR Review ReportReview Action: APPROVED
📋 PR DetailsConnector & PR InfoConnector(s): Risk LevelLevel: 4 — High Risk Level is reported for downstream consumers (e.g. auto-merge policy, reviewer routing). It does not change the review action — APPROVE here means "no blocking objection," not "safe to merge unattended." Review Action DetailsAPPROVED - All enforced gates pass. Submitted APPROVE PR review. This does NOT authorize auto-merge; the merge decision remains with humans or a separate policy.
🔍 Gate Evaluation DetailsGate-by-Gate Analysis
Behavioral Changes — DetailChanged diff lines (manifest.yaml, 5 hunks):
Matched keywords: Impact: The CDK treats
Filters changed:
Transient error filters (500/503, 📚 Evidence ConsultedEvidence
|
What
The Slack connector's error handlers use
action: RETRYfor rate-limited responses (both theratelimitedJSON predicate andhttp_codes: [429]filters). The CDK only emitsRATE_LIMITEDstream status messages when the response action isRATE_LIMITED, notRETRY. This causes rate-limiting events to be invisible in the source logs and connection timeline UI.The CDK's
DEFAULT_ERROR_MAPPINGcorrectly maps HTTP 429 toResponseAction.RATE_LIMITED, but the connector's custom response filters intercept the response first and downgrade toRETRY, bypassing the RATE_LIMITED status emission inhttp_client.py.How
Changed
action: RETRYtoaction: RATE_LIMITEDin all 5 rate-limit response filters across the manifest:slack_api_error_handler--ratelimitedpredicaterequester--ratelimitedpredicaterequester--http_codes: [429]users_stream--ratelimitedpredicateusers_stream--http_codes: [429]Transient error filters (
request_timeout,service_unavailable, etc.) and 500/503 filters remainRETRY.Updated
test_should_retryto expectRATE_LIMITEDfor theok_false_ratelimitedtest case.Review guide
airbyte-integrations/connectors/source-slack/manifest.yaml-- all manifest changesairbyte-integrations/connectors/source-slack/unit_tests/test_streams.py-- test expectation updateUser Impact
RATE_LIMITEDstream status, making them visible in source logs and the connection timeline UIRetry-Afterheader is missing from a rate-limited response, the connector will now retry endlessly instead of giving up aftermax_retriesattemptsCan this PR be safely reverted and rolled back?
Link to Devin session: https://app.devin.ai/sessions/05d20b37626d402bb5343d74af506d93