-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
feat(webapp,run-engine,core,clickhouse): concurrency limits management API, metrics and the Concurrency page #4830
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
matt-aitken
wants to merge
75
commits into
feat/queue-concurrency-overrides
from
feat/queue-concurrency-metrics
Open
Changes from all commits
Commits
Show all changes
75 commits
Select commit
Hold shift + click to select a range
b1a6f1a
feat(webapp,run-engine,core,clickhouse): surface total concurrency in…
matt-aitken c51afe2
fix(run-engine,clickhouse,webapp): total gauges on enqueue paths; res…
matt-aitken 60c3bcc
fix(clickhouse): keep migration comments semicolon-free
matt-aitken 3e7c719
fix(webapp): skip the total concurrency read when the queue has no cap
matt-aitken 1e10c98
feat(webapp): show the Total column in the non-metrics queues table too
matt-aitken 3d6413f
feat(webapp): fold the total cap into the Limit column
matt-aitken d5b5866
fix(webapp): saturate the total-cap warning on keyed runs only
matt-aitken a46c6e0
refactor(webapp,core,clickhouse): combined concurrency in responses, …
matt-aitken 451d4c9
feat(webapp): bracketed combined limit in the Limit column
matt-aitken bee8ae5
fix(webapp): combined-limit tooltip renders beside the cell link
matt-aitken 9d1a386
Better tooltip message
matt-aitken 8375efb
docs(core): combined.current is the declared cap, clamped at admit time
matt-aitken a188bcb
fix(run-engine): sample the combined gauge after batch admission
matt-aitken fdd0af1
refactor(run-engine,webapp): drop per-key override admit reads and li…
matt-aitken d9f6412
refactor(webapp): concurrency keys resource stops reading per-key ove…
matt-aitken 36e873b
refactor(run-engine): drop the now-unreferenced ck-limits key builders
matt-aitken aca9667
chore: lift the run-queue knip ignore
matt-aitken 9671fb4
fix(run-engine,webapp,clickhouse): review fixes for the metrics tier
matt-aitken 2bc50f7
chore: drop the pre-rename changeset superseded by the combined one
matt-aitken 2d15c4f
perf(run-engine): share the combined-limit read between the admit gat…
matt-aitken 5d8db93
perf(run-engine): dequeue gauges sample once, at return
matt-aitken 9553fff
test(run-engine): pin dequeue-emitted gauges so a sampling regression…
matt-aitken 600610d
test(run-engine): wait for the metrics emitter connection before exer…
matt-aitken 6000cca
test(run-engine,metrics-pipeline): bound emitter-readiness waits and …
matt-aitken cc1358e
test(run-engine): abort the readiness race timer so its losing branch…
matt-aitken d0e5cfa
test(run-engine): close the emitter when the readiness wait times out
matt-aitken 6212f6e
test(metrics-pipeline,run-engine): readiness wait for the per-stream …
matt-aitken 8198c11
test(run-engine): fire-and-forget the emitter close on readiness timeout
matt-aitken bb24193
rename(webapp,clickhouse): concurrency vocabulary for the unlaunched …
matt-aitken ca58abd
fix(webapp,clickhouse,run-engine): rename follow-ups from review
matt-aitken 604582e
fix(webapp,clickhouse): pre-cap history keeps its truthful gap in the…
matt-aitken 09f361c
fix(webapp): carry-guard column reaches the chart points, Total namin…
matt-aitken 903af5a
feat(webapp): rename the Concurrency page to Concurrency limits
matt-aitken 2cfd2ff
fix(webapp): deeplinks, favorites and report links follow the concurr…
matt-aitken 8840228
chore(webapp): remove the combined concurrency override and reset end…
matt-aitken ed25b3d
fix(webapp): agent page labels follow the concurrency-limits rename
matt-aitken 9c7c130
fix(run-engine): base-queue gauges reuse the shared total-limit read
matt-aitken 8182703
fix(run-engine): base-queue admit paths enforce the total limit for k…
matt-aitken e92efa4
fix(run-engine): the total concurrency limit spans keyed and keyless …
matt-aitken 86e77a0
fix(run-engine): keyless releases drain the total-concurrency group set
matt-aitken 803145a
fix(run-engine): the repair clear drains the group set for keyless runs
matt-aitken c4b933f
fix(run-engine): the keyless repair clear derives the group key from …
matt-aitken 403cc6d
fix(run-engine): the TTL sweep's defensive removal drains the group s…
matt-aitken 49183d0
feat(run-engine): exact per-gate queued counters
matt-aitken d97ba34
fix(run-engine): gate queued counters dedupe by base and re-anchor on…
matt-aitken 5b66634
fix(webapp): limit rows mirror the declared shape exactly
matt-aitken 1cadf89
feat(run-engine): expose the per-gate queued counts on the engine
matt-aitken 3347b63
feat(webapp): concurrency limits management API
matt-aitken ebd6a63
chore(webapp): keep concurrency limit mapping helpers module-local
matt-aitken c1af5bc
fix(webapp,run-engine): recoverable resets, conflict-guarded limit mu…
matt-aitken b759342
fix(webapp): limit mutations answer concurrent changes with a 409
matt-aitken dd2aeff
test(webapp): focused coverage for concurrency limit mutations
matt-aitken d9e9fbb
fix(webapp,run-engine): limit mutations survive every race direction
matt-aitken 18ffedf
fix(webapp): reset compensation converges instead of restoring a stal…
matt-aitken 804186a
fix(webapp): reset failures keep their original error and every path …
matt-aitken 1220066
fix(webapp): engine writes settle before any failure is reported
matt-aitken 8e2f27d
fix(webapp): no compensation on the not-overridden validation error
matt-aitken 41ff31d
feat(webapp): named concurrency limits appear on the queues page
matt-aitken 98c8122
feat(webapp): the Queues page becomes Concurrency
matt-aitken cdff91e
fix(webapp): limit rows interleave only on the dashboard list
matt-aitken c9ba184
fix(webapp): format the renamed task routes, trigger URIs resolve to …
matt-aitken 0b06843
fix(webapp): limit rows on the Concurrency page stay list-level, over…
matt-aitken 4f960a1
fix(webapp): limit rows only warn at their total bound, paused banner…
matt-aitken eab3dd1
fix(webapp): limit convergence compares enforced values, zero thresho…
matt-aitken ca7ec2a
docs(webapp): the value fixpoint comment states the real soundness ar…
matt-aitken 177b8ff
docs(webapp): the value fixpoint comment names both residuals precisely
matt-aitken f493d0a
feat(core,webapp): version-discriminated queue reads, combined never …
matt-aitken 98e1a45
fix(core): queue reads from servers predating the version field parse…
matt-aitken 623b861
chore(webapp): the queue limit bound types stay module-local
matt-aitken 63b0d9f
fix(core,webapp): default-queue inline limits are manageable, V1 endp…
matt-aitken 16862f6
fix(webapp): the limits surface preserves pauses, percent sources, an…
matt-aitken 3745a8a
chore(webapp): the retire queries use bounded in-filters
matt-aitken 910ccb2
fix(webapp): boundless named limits stay cappable, retirement is race…
matt-aitken cbdbde2
fix(webapp): retirement removes engine keys before nulling bounds, re…
matt-aitken 3af597c
fix(webapp): a retirement losing its guard restores the winner's engi…
matt-aitken File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| /** | ||
| * Dashboard-only view of a queue row's configured bounds. The public QueueItem | ||
| * shape is version-discriminated (V2 queues carry no queue-level concurrency), | ||
| * but the dashboard shows configured limits for every row, so presenters attach | ||
| * this alongside the public fields. | ||
| */ | ||
| type QueueLimitBound = { | ||
| /** The enforced value right now (declared, or the override when one is active) */ | ||
| current: number | null; | ||
| /** The declared value an override reverts to */ | ||
| base: number | null; | ||
| /** The overridden value, when an override is active */ | ||
| override: number | null; | ||
| overriddenAt: Date | null; | ||
| /** Display name of who applied the override (null when via the API) */ | ||
| overriddenBy: string | null; | ||
| }; | ||
|
|
||
| type QueueTotalBound = { | ||
| current: number; | ||
| base: number | null; | ||
| override: number | null; | ||
| overriddenAt: Date | null; | ||
| /** Runs in flight across every pool of the row (keyed and keyless) */ | ||
| running: number | null; | ||
| }; | ||
|
|
||
| export type QueueLimits = { | ||
| perKey: QueueLimitBound; | ||
| /** Null when the row declares no total bound */ | ||
| total: QueueTotalBound | null; | ||
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.