Conversation
epompeii
marked this pull request as ready for review
September 26, 2026 00:32
Contributor
|
| Project | Bencher |
| Branch | u/ep/callback/fire |
| Testbed | intel-v1 |
Click to view all benchmark results
| Benchmark | Latency | Benchmark Result microseconds (µs) (Result Δ%) | Upper Boundary microseconds (µs) (Limit %) |
|---|---|---|---|
| Adapter::Json | 📈 view plot 🚷 view threshold | 5.18 µs(+5.25%)Baseline: 4.92 µs | 5.99 µs (86.43%) |
| Adapter::Magic (JSON) | 📈 view plot 🚷 view threshold | 4.97 µs(+4.60%)Baseline: 4.75 µs | 5.68 µs (87.63%) |
| Adapter::Magic (Rust) | 📈 view plot 🚷 view threshold | 27.53 µs(+3.31%)Baseline: 26.64 µs | 30.29 µs (90.87%) |
| Adapter::Rust | 📈 view plot 🚷 view threshold | 4.66 µs(+15.47%)Baseline: 4.04 µs | 6.34 µs (73.60%) |
| Adapter::RustBench | 📈 view plot 🚷 view threshold | 4.64 µs(+15.19%)Baseline: 4.03 µs | 6.31 µs (73.57%) |
epompeii
added this pull request to stack #1054
September 26, 2026 02:44
epompeii
marked this pull request as draft
September 26, 2026 03:30
epompeii
marked this pull request as ready for review
September 26, 2026 04:19
epompeii
marked this pull request as draft
September 26, 2026 04:27
epompeii
force-pushed
the
u/ep/callback/fire
branch
from
September 26, 2026 13:40
d489fb0 to
5376e93
Compare
epompeii
marked this pull request as ready for review
September 26, 2026 14:13
epompeii
marked this pull request as draft
September 26, 2026 17:39
epompeii
force-pushed
the
u/ep/callback/fire
branch
from
September 26, 2026 17:40
5376e93 to
fa65182
Compare
epompeii
force-pushed
the
u/ep/callback/fire
branch
2 times, most recently
from
September 26, 2026 22:04
1ff09b7 to
a41efc9
Compare
epompeii
force-pushed
the
u/ep/callback/fire
branch
2 times, most recently
from
September 27, 2026 02:45
8736c22 to
ea5e5b1
Compare
Every write that makes a job Processed, Failed, or Canceled now fires the job's callback, which hands it to a delivery task. A job has at most one delivery task at a time, and the task sends only a pending callback of a terminal job, so a callback is sent once however many paths finish the job. The task opens the sealed request and renders its body with the job's values. It builds the job's report, exactly as the report endpoint returns it, only for a callback without a body or one whose body sends the report, and on a read connection, so a large report never holds the writer. At most two reports build at once, so a burst of callbacks cannot take every worker thread, and a delivery that finds no read connection keeps waiting for one. It makes up to three attempts, 4 s and 16 s apart, retrying a timeout, a connection error, 408, 429, or a 5xx. Each attempt is recorded and logged with the destination host only, never the body, and the attempt that ends a delivery is recorded in the update that settles it. The count survives a restart, so a delivery started again continues from it. The API context owns the delivery tasks. Shutdown cuts a delivery short, including its wait to build a report, without a write, so its callback stays pending, and waits for every task once the rate limiting state is saved. Job recovery fires every pending callback on a terminal job. The server builds the callback client at boot: if the build fails, it logs the cause once and starts anyway, and every attempt is then a connection error. Nothing creates a callback yet.
epompeii
force-pushed
the
u/ep/callback/fire
branch
from
September 27, 2026 03:03
ea5e5b1 to
935bcae
Compare
This branch was successfully deployed
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
A callback is sent once, after its job reaches a terminal state, however many paths finish the job.
processed,failed, orcanceled(nine sites across the runner channel, the heartbeat timeout, and the reprocessing of completed jobs) fires the job's callback once its update commits, which hands it to a delivery task. A job has at most one delivery task at a time, tracked in memory, and the task sends only a pending callback of a terminal job, so a second fire, a skipped callback, or no callback sends nothing.completednever fires.{{ report }}, on a read connection so a large report never holds the writer, and at most two at a time, so a burst of callbacks cannot take every worker thread. Without a free read connection, it tries again each pool timeout. A request that does not open or does not validate, or whose report does not build, is never sent and fails.pending, and a delivery whose write finds nothing pending stops. The count lives on the row, so a delivery started again continues from it.Nothing creates a callback yet. The tests inject a scripted or recording sender; no test and no configuration reaches the network.
Needed for #1046