Surface incomplete scatter-gather results and server query timeouts - #3107
Open
ramonsmits wants to merge 3 commits into
Open
Surface incomplete scatter-gather results and server query timeouts#3107ramonsmits wants to merge 3 commits into
ramonsmits wants to merge 3 commits into
Conversation
ramonsmits
force-pushed
the
ramon/audit-incomplete-results
branch
from
September 7, 2026 10:13
a256771 to
2e8998c
Compare
ramonsmits
force-pushed
the
ramon/audit-incomplete-results
branch
from
September 7, 2026 10:31
2e8998c to
5f9b0df
Compare
ramonsmits
changed the base branch from
ramon/audit-super-date-picker
to
ramon/audit-timestamps
September 7, 2026 10:32
ramonsmits
force-pushed
the
ramon/audit-incomplete-results
branch
from
September 7, 2026 12:06
5f9b0df to
e3e7821
Compare
ramonsmits
changed the base branch from
ramon/audit-timestamps
to
ramon/audit-new-row-animation
September 7, 2026 12:08
ramonsmits
force-pushed
the
ramon/audit-incomplete-results
branch
from
September 7, 2026 12:40
e3e7821 to
9b96ec7
Compare
ServiceControl (Particular/ServiceControl#5848) now answers a partial composite with the X-Particular-Incomplete-Results header naming every instance whose data is missing (instanceId:timeout|unavailable|error), and a fully timed-out query with a 504. All Messages now reads both: a partial page keeps its data but shows a 'Partial results' warning naming each missing instance and its reason, and a 504 gets a precise 'exceeded the ServiceControl query time limit' message instead of the generic failure text. The header parser is shared so the conversation and saga views can adopt it next.
ServiceControl identifies an audit instance by its API URL, lower-cased
and base64 encoded with the URL-safe alphabet ('-', '_' and '.' for
'+', '/' and '='), and that is what the X-Particular-Incomplete-Results
header carries. The partial-results warning printed the id as-is, so a
reader saw "No data from aHR0cDovL2xvY2FsaG9zdDo0NDQ0NC9hcGkv (timed out)".
The id is now decoded and shown as host and port (default port
omitted), with the full API URL as tooltip: "No data from
localhost:44444 (timed out)". An id that is not a base64 http(s) URL is
shown unchanged, so nothing depends on the encoding staying that way.
Leaving the view clears the rows; the partial-results warning and the time-limit flag described those rows.
ramonsmits
force-pushed
the
ramon/audit-incomplete-results
branch
from
September 7, 2026 15:46
14dce2d to
4cce93d
Compare
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.
Top of the audit query series, stacked on:
ServiceControl (Particular/ServiceControl#5848) now tells clients when a composite result is incomplete: a partial answer stays HTTP 200 with the data that did arrive plus a
X-Particular-Incomplete-Resultsheader naming every instance that contributed nothing (instanceId:timeout|unavailable|error), and a query nobody answered becomes a 504. This PR makes All Messages read both:Showing 3 of at least 87,421,337 result(s)The header parser is shared (
incompleteResults.ts) so the conversation and saga views can adopt it next.