[!Note]
Build is currently failing on some rust license which is not important for this PR
This PR aims to reduce the load on the rendering and processing of the calls tab. It also includes some quality of life change to the calls tab.
Why is this important ?
The calls tab shows a waterfall view that has to be updated every time a call is still running or a new call is coming in. This would mean updating the rendering of potentially hundreds or thousands of waterfalls, depending on how many calls are displayed. Thus the PR aims to reduce the amount of rendering to the actually visible calls.
Is is also important that the processing of incoming span events goes as smoothly as possible and is able to handle big chunks of updates without causing too big of a burden on the reactive system.
Big changes
Use of a ReactiveMap for the MonitorData.spans to make lookups for spans consistent
Move all span processing into the updated-spans function to prevent the calls tab from doing further modification (this makes the state more consistent)
Rename all the UI components from spans to calls (Fixes DT-52)
Use of Tanstack Virtual to only render visible calls (and some more)
QoL changes
Added clear button to reset the calls view (especially important when the app idled for a while)
Added a display for the number of calls that are being displayed in the list
Added a display for the number of calls that are running (not closed) right now
Added min-width to calls split panes to prevent them from crushing content (Fixes DT-97)
Refactored structure of calls components: Mainly breaking them up into more manageable chunks and creating semantic sub folders
Refactored calls sorting into its own file
Moved a reference to the span metadata into the span object and refactored all the processing code accordingly
Updated span tests
Introduces a minimum size for calls on the waterfall to prevent them from disappearing (Fixes DT-55)
Fixed DT-113, DT-46
[!Note]
There is a problem with the instrumentation dropping some span events. This problem can be duct taped by the follwing change to the crates/devtools-core/src/aggregator.rs
/// Buffered log events.
/// Up to 512 events are retained before the oldest will be dropped.
logs: EventBuf<LogEvent, 512>,
/// Buffered span events.
/// Up to 2048 events are retained before the oldest will be dropped.
spans: EventBuf<SpanEvent, 4096>,
Calls virtualization
This PR aims to reduce the load on the rendering and processing of the calls tab. It also includes some quality of life change to the calls tab.
Why is this important ?
The calls tab shows a waterfall view that has to be updated every time a call is still running or a new call is coming in. This would mean updating the rendering of potentially hundreds or thousands of waterfalls, depending on how many calls are displayed. Thus the PR aims to reduce the amount of rendering to the actually visible calls.
Is is also important that the processing of incoming span events goes as smoothly as possible and is able to handle big chunks of updates without causing too big of a burden on the reactive system.
Big changes
Use of a
ReactiveMap
for theMonitorData.spans
to make lookups for spans consistentMove all span processing into the
updated-spans
function to prevent the calls tab from doing further modification (this makes the state more consistent)Rename all the UI components from
spans
tocalls
(Fixes DT-52)Use of Tanstack Virtual to only render visible calls (and some more)
QoL changes
Fixed DT-113, DT-46