Skip to content

fix(slack): retry 5xx and retryable JSON errors on every call - #84

Merged
MaximeGaudin merged 1 commit into
mainfrom
feat/slack-retry-5xx
Sep 14, 2026
Merged

MaximeGaudin merged 1 commit into
mainfrom
feat/slack-retry-5xx

Conversation

@MaximeGaudin

Copy link
Copy Markdown
Owner

Summary

  • Slack GET and POST now retry HTTP 5xx and JSON internal_error / fatal_error, same as existing 429 / ratelimited.
  • One policy on every call site, including chat.postMessage. Honour Retry-After. 401 and other real errors still fail fast.
  • Duplicate-send after a 5xx that already posted is accepted (same as Gmail fix(gmail): retry 403 rateLimitExceeded and 5xx with exponential backoff #80).

Closes #81

Test plan

  • Retry-After: 0 503 on conversations.list retries then returns Http
  • 500 then 200 on chat.postMessage succeeds
  • JSON internal_error then success on send
  • channel_not_found / invalid_auth still fail on the first attempt

Match Gmail: GET and POST (including chat.postMessage) retry 429, 5xx,
internal_error, and fatal_error. Honour Retry-After. Real errors still fail fast.

Co-authored-by: Cursor <cursoragent@cursor.com>
@MaximeGaudin
MaximeGaudin merged commit 045f44b into main Sep 14, 2026
7 checks passed
MaximeGaudin added a commit that referenced this pull request Sep 14, 2026
- Add DB indexes on (connector, external_id) for conversations and
  messages (migration v14) — avoids full table scans in
  find_by_connector_external_id queries.
- Extract MAX_THREAD_MESSAGES constant in gmail store module.
- Document POST retry trade-off in Slack transport.
- Add Gmail quota source reference in rate limiter constants.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

slack: retry 5xx and retryable JSON errors on every call site, including sends

1 participant