Skip to content

slack: pace chat.postMessage to <=1/sec per channel#330

Closed
nazriz wants to merge 3 commits into
obelisk:mainfrom
nazriz:slack-per-channel-pacing
Closed

slack: pace chat.postMessage to <=1/sec per channel#330
nazriz wants to merge 3 commits into
obelisk:mainfrom
nazriz:slack-per-channel-pacing

Conversation

@nazriz

@nazriz nazriz commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

During alert bursts the notifier fires many chat.postMessage calls to the same channel
at once. Slack allows ~1/sec/channel, so the excess returns HTTP 429 and those alerts
are dropped.

To solve for this: Pace chat.postMessage per channel inside the Slack API: before posting, wait until the
channel's next 1s slot, then reserve the following one. Same-channel posts end up ~1s
apart; different channels are independent (the pacing lock is released before the wait).

Copilot AI review requested due to automatic review settings July 1, 2026 06:46

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds per-channel pacing for Slack chat.postMessage calls to reduce Slack 429s during alert bursts.

Changes:

  • Introduces per-channel pacing state (post_pacing) on the Slack client.
  • Adds slot-reservation logic (reserve_slot) plus unit tests for pacing behavior.
  • Gates post_message with an async wait to enforce ≤ 1 message/sec/channel.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 5 comments.

File Description
runtime/plaid/src/apis/slack/mod.rs Adds per-channel pacing state to the Slack client via a mutex-protected map.
runtime/plaid/src/apis/slack/api.rs Implements pacing logic + tests; applies pacing before chat.postMessage calls.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread runtime/plaid/src/apis/slack/mod.rs Outdated
Comment thread runtime/plaid/src/apis/slack/mod.rs
Comment thread runtime/plaid/src/apis/slack/api.rs Outdated
Comment thread runtime/plaid/src/apis/slack/mod.rs
Comment thread runtime/plaid/src/apis/slack/api.rs
Copilot AI review requested due to automatic review settings July 1, 2026 06:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

Comment thread runtime/plaid/src/apis/slack/api.rs Outdated
@nazriz nazriz closed this Jul 2, 2026
@nazriz

nazriz commented Jul 2, 2026

Copy link
Copy Markdown
Contributor Author

Closed in favour of: #332

@nazriz nazriz deleted the slack-per-channel-pacing branch July 2, 2026 04:00
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.

2 participants