Open stuhood opened 2 years ago
Mm, an annoyance in the model of #15415 is that BSPCompileRequest
/BSPClasspathEntryRequest
containing an origin_id
/task_id
means that every request has a new identity, and will thus re-render all compile notifications (even if nothing has changed).
The BSP task model is shaped like tracing spans, and consequently matches our workunit model fairly well (
span_id ~= task_id
, and tasks have parents).To stream workunits to a BSP client, we would install a
StreamingWorkunitHandler
around aBSPConnection
which used aBSPContext
to send workunits asTaskNotification
s to the client. In general, thespan_id
would be directly used as thetask_id
(including for parent relationships), but one@rule
at the top of each relevant request would want to install anEngineAwareReturnType
which linked theorigin_id
of the request as the parent of its workunit instead.The largest challenge with doing this (and thus why it wasn't the obvious choice for #14885) is that a large amount of workunit filtering would need to happen. Currently, the
--dynamic-ui
renders allDEBUG
level workunits to show liveness... but this would result in sending dependency extraction, etc to the client. Likewise, rendering allINFO
level workunits would be too quiet. In particular: it would not render individual compiles.