Skip to content

docs: combined concurrency limits and queue gates - #4853

Open
matt-aitken wants to merge 8 commits into
feat/queue-concurrency-metricsfrom
docs/queue-concurrency-features
Open

docs: combined concurrency limits and queue gates#4853
matt-aitken wants to merge 8 commits into
feat/queue-concurrency-metricsfrom
docs/queue-concurrency-features

Conversation

@matt-aitken

Copy link
Copy Markdown
Member

Summary

Documents the queue concurrency features shipping in this stack: the combinedConcurrencyLimit queue option that caps a keyed queue across all of its concurrencyKey values, queue gates (array queue syntax for holding a slot in more than one queue), and the combined override/reset SDK methods and endpoints.

The concurrency guide gains sections on combined limits and gates with self-hosting notes for the server flags, the OpenAPI spec gains the two combined endpoints and the concurrency.combined response field, and the management reference gains pages for both new endpoints.

Stacked on #4830.

@changeset-bot

changeset-bot Bot commented Aug 31, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: eb33462

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

The OpenAPI specification adds combined concurrency override and reset endpoints. It documents combined concurrency state on QueueObject and requires a request body for the existing reset endpoint. The queue concurrency guide adds combined-limit patterns, gate queue examples, tenant and shared-resource limits, and SDK override and reset methods. Documentation navigation adds separate pages for the new endpoints.

Merge Risk: 🔵 Low · up to eb334

The new queue-concurrency guide can lead users to assume a combined cap covers all runs, though unkeyed runs bypass it. Clarify that the cap applies collectively to keyed runs before merging.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description accurately summarizes the documentation changes, but it omits most sections required by the template, including the issue reference, checklist, testing details, changelog, and screensh… Add the required template sections. Include the applicable issue reference, complete the checklist, describe testing performed, add a short changelog entry, and provide screenshots or state why they are not applicable.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main documentation changes for combined concurrency limits and queue gates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description accurately summarizes the documentation changes, but it omits most sections required by the template, including the issue reference, checklist, testing details, changelog, and screenshots.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/queue-concurrency-features

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

devin-ai-integration[bot]

This comment was marked as resolved.

@matt-aitken
matt-aitken force-pushed the docs/queue-concurrency-features branch 2 times, most recently from 05bef1a to 7998d68 Compare August 31, 2026 17:34
devin-ai-integration[bot]

This comment was marked as resolved.

@matt-aitken
matt-aitken force-pushed the docs/queue-concurrency-features branch 5 times, most recently from af1ed4f to ab4c607 Compare August 31, 2026 18:13
@matt-aitken
matt-aitken force-pushed the docs/queue-concurrency-features branch from e73840d to 34b2cfb Compare September 6, 2026 12:20
@pkg-pr-new

pkg-pr-new Bot commented Sep 6, 2026

Copy link
Copy Markdown

Open in StackBlitz

@trigger.dev/build

npm i https://pkg.pr.new/@trigger.dev/build@ec93625

trigger.dev

npm i https://pkg.pr.new/trigger.dev@ec93625

@trigger.dev/core

npm i https://pkg.pr.new/@trigger.dev/core@ec93625

@trigger.dev/python

npm i https://pkg.pr.new/@trigger.dev/python@ec93625

@trigger.dev/react-hooks

npm i https://pkg.pr.new/@trigger.dev/react-hooks@ec93625

@trigger.dev/redis-worker

npm i https://pkg.pr.new/@trigger.dev/redis-worker@ec93625

@trigger.dev/rsc

npm i https://pkg.pr.new/@trigger.dev/rsc@ec93625

@trigger.dev/schema-to-json

npm i https://pkg.pr.new/@trigger.dev/schema-to-json@ec93625

@trigger.dev/sdk

npm i https://pkg.pr.new/@trigger.dev/sdk@ec93625

commit: ec93625

coderabbitai[bot]

This comment was marked as resolved.

@matt-aitken
matt-aitken force-pushed the docs/queue-concurrency-features branch from 34b2cfb to 947879a Compare September 6, 2026 12:33
@matt-aitken
matt-aitken force-pushed the docs/queue-concurrency-features branch from 947879a to 2e0ae55 Compare September 6, 2026 12:37
@matt-aitken
matt-aitken force-pushed the docs/queue-concurrency-features branch from 2e0ae55 to 1772166 Compare September 6, 2026 12:45
coderabbitai[bot]

This comment was marked as resolved.

@matt-aitken
matt-aitken force-pushed the docs/queue-concurrency-features branch 2 times, most recently from 99fc054 to 7cd93f1 Compare September 6, 2026 13:00
@matt-aitken
matt-aitken force-pushed the docs/queue-concurrency-features branch from 7cd93f1 to 2250f8e Compare September 6, 2026 13:14
@matt-aitken
matt-aitken force-pushed the docs/queue-concurrency-features branch from 2250f8e to b70f42a Compare September 6, 2026 13:20
@matt-aitken
matt-aitken force-pushed the docs/queue-concurrency-features branch from b70f42a to b4d89eb Compare September 6, 2026 13:21
@matt-aitken
matt-aitken force-pushed the docs/queue-concurrency-features branch from b4d89eb to 56a9526 Compare September 6, 2026 13:23
…body required

The gates intro promised a task-wide cap the keyed example does not
deliver (a concurrencyKey splits the home queue per key); the combined
object is emitted on every queue with null fields rather than omitted;
and both reset endpoints reject a zero-length body, so the body is
required. Also restores the example that drifted off overriddenAt.
A Use cases index links each goal to its section, the multi-queue
section names the home queue and gate concepts once and gives each
pattern its own worked example (per-tenant cap across tasks, global cap
for a shared resource via a combined-only queue, pinned-key shared
pool), and the per-key-except-combined rule gets a warning callout.
Folds in the simplified wording and removes self-hosting notes.
The combined limit only counts keyed runs, so the shared-resource
example now shows the keyed trigger and warns that keyless runs bypass
the cap, pointing those cases at the pinned-key pool.
@matt-aitken
matt-aitken force-pushed the docs/queue-concurrency-features branch from 56a9526 to eb33462 Compare September 6, 2026 13:24

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Team

Run ID: 390c0511-37dd-471c-8ca9-6c0d7d3ac992

📥 Commits

Reviewing files that changed from the base of the PR and between 2e0ae55 and eb33462.

📒 Files selected for processing (1)
  • docs/queue-concurrency.mdx

Included review availability: Your plan provides up to 10 included reviews per hour; 3 remain after this review.

📜 Review details
⏰ Context from checks skipped due to timeout. (3)
  • GitHub Check: code-quality / code-quality
  • GitHub Check: Build and publish previews
  • GitHub Check: Analyze (javascript-typescript)
🧰 Additional context used
📓 Path-based instructions (2)
Add crumbs as you write code — not just when debugging.

📄 CodeRabbit inference engine (AGENTS.md)

Files:

  • docs/queue-concurrency.mdx
MDX documentation pages must include frontmatter with title (required), description (required), and sidebarTitle (optional) in YAML format Use Mintlify components for structured content: , , , , ,

📄 CodeRabbit inference engine (docs/CLAUDE.md)

Files:

  • docs/queue-concurrency.mdx
🧠 Learnings (1)
📚 Learning: 2026-04-30T20:30:29.458Z
Learnt from: ericallam
Repo: triggerdotdev/trigger.dev PR: 3226
File: docs/ai-chat/quick-start.mdx:13-13
Timestamp: 2026-04-30T20:30:29.458Z
Learning: In this repo’s documentation MDX files (`docs/**/*.mdx`), use `ts` and `tsx` (not `typescript`) as the code-fence language tags for TypeScript/TSX snippets. Do not flag `ts`/`tsx` code-fence language tags as incorrect in any docs MDX file, since this is the site-wide Mintlify-compatible convention.

Applied to files:

  • docs/queue-concurrency.mdx


`concurrencyKey` gives every key value its own copy of the queue, each with the queue's full `concurrencyLimit`. That means the queue's total concurrency grows with the number of active keys: ten active users on a queue with `concurrencyLimit: 5` can run 50 at once.

To bound the whole queue, set `combinedConcurrencyLimit`. Each key still gets at most `concurrencyLimit`, and the queue as a whole never exceeds the combined limit across all keys:

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Limit the combined-cap claim to keyed runs.

Line 174 states that the whole queue never exceeds combinedConcurrencyLimit. Line 188 states that unkeyed runs bypass that limit. A mixed workload can therefore exceed the combined limit in aggregate.

Describe combinedConcurrencyLimit as a cap for keyed runs collectively. Apply the same qualification to the warning at Lines 191-192.

Proposed wording
-Each key still gets at most `concurrencyLimit`, and the queue as a whole never exceeds the combined limit across all keys:
+Each key still gets at most `concurrencyLimit`, and keyed runs collectively never exceed the combined limit:
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
To bound the whole queue, set `combinedConcurrencyLimit`. Each key still gets at most `concurrencyLimit`, and the queue as a whole never exceeds the combined limit across all keys:
Each key still gets at most `concurrencyLimit`, and keyed runs collectively never exceed the combined limit:

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.

1 participant