TraceWaterfall
MoleculeA distributed trace as nested rows with offset and duration bars on a time ruler. Collapse and expand, critical-path highlight, error spans (icon and text, not only colour), a detail region for the selected span, and windowing above `virtualizeThreshold` rows. Tree semantics (role tree and treeitem, aria-level, aria-expanded, aria-selected) with aria-activedescendant. Same locals, DOM and classes as kui-react. The server draws the rows of the render-time state and holds the others in a `<template>`; `TraceWaterfall/scripts/trace-waterfall.js` (inlined once, idempotent) moves them in as the list is expanded or scrolled. `renderDetail` takes a function returning escaped text, or `detailPartial` a partial path (React takes a node); `onSelect` and `onCollapsedChange` are the bubbling `kui:trace-select` and `kui:trace-collapsed-change` events; `selectedId` / `collapsedIds` (controlled in React) are the state at render time and make the script only emit them. At most `maxSpans` spans (default 2000) are drawn.
payment.charge
- Service
- payment
- Start
- +264 ms
- Duration
- 140 ms
- Self time
- 10 ms
- Status
- error
Attributes
- error.type
- GatewayTimeout
POST /checkout
- Service
- web
- Start
- +0 ms
- Duration
- 412 ms
- Self time
- 18 ms
- Kind
- server
- Status
- unset
Attributes
- http.method
- POST
- http.status_code
- 200
auth.verify
- Service
- auth
- Start
- +4 ms
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- unset
cart.load
- Service
- cart
- Start
- +44 ms
- Duration
- 96 ms
- Self time
- 16 ms
- Status
- unset
SELECT cart_items
- Service
- cart
- Start
- +52 ms
- Duration
- 80 ms
- Self time
- 80 ms
- Kind
- client
- Status
- unset
inventory.reserve
- Service
- inventory
- Start
- +142 ms
- Duration
- 120 ms
- Self time
- 16 ms
- Status
- unset
UPDATE stock
- Service
- inventory
- Start
- +150 ms
- Duration
- 104 ms
- Self time
- 104 ms
- Kind
- client
- Status
- unset
payment.charge
- Service
- payment
- Start
- +264 ms
- Duration
- 140 ms
- Self time
- 10 ms
- Status
- error
Attributes
- error.type
- GatewayTimeout
POST gateway/charge
- Service
- payment
- Start
- +270 ms
- Duration
- 130 ms
- Self time
- 130 ms
- Kind
- client
- Status
- error
<%- include('modules/ui/TraceWaterfall', { spans: spans, defaultSelectedId: 'pay' }) %>
<script>
document.addEventListener('kui:trace-select', (e) => openSpan(e.detail.id));
</script>
<%- include('modules/ui/TraceWaterfall', {
spans: spans,
defaultCollapsedIds: ['cart'],
renderDetail: (span, info) => span.name + ': ' + info.selfTime + ' ms self',
// or detailPartial: '/abs/path/to/span-panel.ejs' (locals: span, info)
}) %>
batch.import
- Service
- worker
- Start
- +0 ms
- Duration
- 18 s
- Self time
- 17.58 s
- Status
- unset
step 0
- Service
- worker
- Start
- +0 ms
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- error
step 1
- Service
- db
- Start
- +45 ms
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 2
- Service
- cache
- Start
- +90 ms
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 3
- Service
- worker
- Start
- +135 ms
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 4
- Service
- db
- Start
- +180 ms
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 5
- Service
- cache
- Start
- +225 ms
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 6
- Service
- worker
- Start
- +270 ms
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 7
- Service
- db
- Start
- +315 ms
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 8
- Service
- cache
- Start
- +360 ms
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 9
- Service
- worker
- Start
- +405 ms
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 10
- Service
- db
- Start
- +450 ms
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 11
- Service
- cache
- Start
- +495 ms
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 12
- Service
- worker
- Start
- +540 ms
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 13
- Service
- db
- Start
- +585 ms
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 14
- Service
- cache
- Start
- +630 ms
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 15
- Service
- worker
- Start
- +675 ms
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 16
- Service
- db
- Start
- +720 ms
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 17
- Service
- cache
- Start
- +765 ms
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 18
- Service
- worker
- Start
- +810 ms
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 19
- Service
- db
- Start
- +855 ms
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 20
- Service
- cache
- Start
- +900 ms
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 21
- Service
- worker
- Start
- +945 ms
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 22
- Service
- db
- Start
- +990 ms
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 23
- Service
- cache
- Start
- +1.03 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 24
- Service
- worker
- Start
- +1.08 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 25
- Service
- db
- Start
- +1.13 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 26
- Service
- cache
- Start
- +1.17 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 27
- Service
- worker
- Start
- +1.22 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 28
- Service
- db
- Start
- +1.26 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 29
- Service
- cache
- Start
- +1.3 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 30
- Service
- worker
- Start
- +1.35 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 31
- Service
- db
- Start
- +1.4 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 32
- Service
- cache
- Start
- +1.44 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 33
- Service
- worker
- Start
- +1.49 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 34
- Service
- db
- Start
- +1.53 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 35
- Service
- cache
- Start
- +1.57 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 36
- Service
- worker
- Start
- +1.62 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 37
- Service
- db
- Start
- +1.67 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 38
- Service
- cache
- Start
- +1.71 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 39
- Service
- worker
- Start
- +1.75 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 40
- Service
- db
- Start
- +1.8 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 41
- Service
- cache
- Start
- +1.84 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 42
- Service
- worker
- Start
- +1.89 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 43
- Service
- db
- Start
- +1.94 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 44
- Service
- cache
- Start
- +1.98 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 45
- Service
- worker
- Start
- +2.02 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 46
- Service
- db
- Start
- +2.07 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 47
- Service
- cache
- Start
- +2.12 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 48
- Service
- worker
- Start
- +2.16 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 49
- Service
- db
- Start
- +2.21 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 50
- Service
- cache
- Start
- +2.25 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 51
- Service
- worker
- Start
- +2.29 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 52
- Service
- db
- Start
- +2.34 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 53
- Service
- cache
- Start
- +2.38 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 54
- Service
- worker
- Start
- +2.43 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 55
- Service
- db
- Start
- +2.48 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 56
- Service
- cache
- Start
- +2.52 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 57
- Service
- worker
- Start
- +2.56 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 58
- Service
- db
- Start
- +2.61 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 59
- Service
- cache
- Start
- +2.65 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 60
- Service
- worker
- Start
- +2.7 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 61
- Service
- db
- Start
- +2.75 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 62
- Service
- cache
- Start
- +2.79 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 63
- Service
- worker
- Start
- +2.83 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 64
- Service
- db
- Start
- +2.88 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 65
- Service
- cache
- Start
- +2.92 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 66
- Service
- worker
- Start
- +2.97 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 67
- Service
- db
- Start
- +3.02 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 68
- Service
- cache
- Start
- +3.06 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 69
- Service
- worker
- Start
- +3.1 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 70
- Service
- db
- Start
- +3.15 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 71
- Service
- cache
- Start
- +3.19 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 72
- Service
- worker
- Start
- +3.24 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 73
- Service
- db
- Start
- +3.29 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 74
- Service
- cache
- Start
- +3.33 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 75
- Service
- worker
- Start
- +3.38 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 76
- Service
- db
- Start
- +3.42 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 77
- Service
- cache
- Start
- +3.46 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 78
- Service
- worker
- Start
- +3.51 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 79
- Service
- db
- Start
- +3.56 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 80
- Service
- cache
- Start
- +3.6 s
- Duration
- 68 ms
- Self time
- 48 ms
- Status
- ok
step 81
- Service
- worker
- Start
- +3.65 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 82
- Service
- db
- Start
- +3.69 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 83
- Service
- cache
- Start
- +3.73 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 84
- Service
- worker
- Start
- +3.78 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 85
- Service
- db
- Start
- +3.83 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 86
- Service
- cache
- Start
- +3.87 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 87
- Service
- worker
- Start
- +3.92 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 88
- Service
- db
- Start
- +3.96 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 89
- Service
- cache
- Start
- +4 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 90
- Service
- worker
- Start
- +4.05 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 91
- Service
- db
- Start
- +4.09 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 92
- Service
- cache
- Start
- +4.14 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 93
- Service
- worker
- Start
- +4.18 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 94
- Service
- db
- Start
- +4.23 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 95
- Service
- cache
- Start
- +4.28 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 96
- Service
- worker
- Start
- +4.32 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 97
- Service
- db
- Start
- +4.37 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- error
step 98
- Service
- cache
- Start
- +4.41 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 99
- Service
- worker
- Start
- +4.46 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 100
- Service
- db
- Start
- +4.5 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 101
- Service
- cache
- Start
- +4.54 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 102
- Service
- worker
- Start
- +4.59 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 103
- Service
- db
- Start
- +4.63 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 104
- Service
- cache
- Start
- +4.68 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 105
- Service
- worker
- Start
- +4.72 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 106
- Service
- db
- Start
- +4.77 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 107
- Service
- cache
- Start
- +4.82 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 108
- Service
- worker
- Start
- +4.86 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 109
- Service
- db
- Start
- +4.91 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 110
- Service
- cache
- Start
- +4.95 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 111
- Service
- worker
- Start
- +5 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 112
- Service
- db
- Start
- +5.04 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 113
- Service
- cache
- Start
- +5.08 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 114
- Service
- worker
- Start
- +5.13 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 115
- Service
- db
- Start
- +5.17 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 116
- Service
- cache
- Start
- +5.22 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 117
- Service
- worker
- Start
- +5.26 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 118
- Service
- db
- Start
- +5.31 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 119
- Service
- cache
- Start
- +5.36 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 120
- Service
- worker
- Start
- +5.4 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 121
- Service
- db
- Start
- +5.45 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 122
- Service
- cache
- Start
- +5.49 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 123
- Service
- worker
- Start
- +5.54 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 124
- Service
- db
- Start
- +5.58 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 125
- Service
- cache
- Start
- +5.63 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 126
- Service
- worker
- Start
- +5.67 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 127
- Service
- db
- Start
- +5.71 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 128
- Service
- cache
- Start
- +5.76 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 129
- Service
- worker
- Start
- +5.8 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 130
- Service
- db
- Start
- +5.85 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 131
- Service
- cache
- Start
- +5.89 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 132
- Service
- worker
- Start
- +5.94 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 133
- Service
- db
- Start
- +5.99 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 134
- Service
- cache
- Start
- +6.03 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 135
- Service
- worker
- Start
- +6.08 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 136
- Service
- db
- Start
- +6.12 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 137
- Service
- cache
- Start
- +6.17 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 138
- Service
- worker
- Start
- +6.21 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 139
- Service
- db
- Start
- +6.25 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 140
- Service
- cache
- Start
- +6.3 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 141
- Service
- worker
- Start
- +6.34 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 142
- Service
- db
- Start
- +6.39 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 143
- Service
- cache
- Start
- +6.43 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 144
- Service
- worker
- Start
- +6.48 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 145
- Service
- db
- Start
- +6.53 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 146
- Service
- cache
- Start
- +6.57 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 147
- Service
- worker
- Start
- +6.62 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 148
- Service
- db
- Start
- +6.66 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 149
- Service
- cache
- Start
- +6.71 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 150
- Service
- worker
- Start
- +6.75 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 151
- Service
- db
- Start
- +6.79 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 152
- Service
- cache
- Start
- +6.84 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 153
- Service
- worker
- Start
- +6.88 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 154
- Service
- db
- Start
- +6.93 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 155
- Service
- cache
- Start
- +6.97 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 156
- Service
- worker
- Start
- +7.02 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 157
- Service
- db
- Start
- +7.07 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 158
- Service
- cache
- Start
- +7.11 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 159
- Service
- worker
- Start
- +7.16 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 160
- Service
- db
- Start
- +7.2 s
- Duration
- 62 ms
- Self time
- 45 ms
- Status
- ok
step 161
- Service
- cache
- Start
- +7.25 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 162
- Service
- worker
- Start
- +7.29 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 163
- Service
- db
- Start
- +7.33 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 164
- Service
- cache
- Start
- +7.38 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 165
- Service
- worker
- Start
- +7.42 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 166
- Service
- db
- Start
- +7.47 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 167
- Service
- cache
- Start
- +7.51 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 168
- Service
- worker
- Start
- +7.56 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 169
- Service
- db
- Start
- +7.61 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 170
- Service
- cache
- Start
- +7.65 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 171
- Service
- worker
- Start
- +7.7 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 172
- Service
- db
- Start
- +7.74 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 173
- Service
- cache
- Start
- +7.79 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 174
- Service
- worker
- Start
- +7.83 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 175
- Service
- db
- Start
- +7.88 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 176
- Service
- cache
- Start
- +7.92 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 177
- Service
- worker
- Start
- +7.96 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 178
- Service
- db
- Start
- +8.01 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 179
- Service
- cache
- Start
- +8.05 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 180
- Service
- worker
- Start
- +8.1 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 181
- Service
- db
- Start
- +8.14 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 182
- Service
- cache
- Start
- +8.19 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 183
- Service
- worker
- Start
- +8.23 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 184
- Service
- db
- Start
- +8.28 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 185
- Service
- cache
- Start
- +8.32 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 186
- Service
- worker
- Start
- +8.37 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 187
- Service
- db
- Start
- +8.41 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 188
- Service
- cache
- Start
- +8.46 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 189
- Service
- worker
- Start
- +8.51 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 190
- Service
- db
- Start
- +8.55 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 191
- Service
- cache
- Start
- +8.6 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 192
- Service
- worker
- Start
- +8.64 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 193
- Service
- db
- Start
- +8.69 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 194
- Service
- cache
- Start
- +8.73 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- error
step 195
- Service
- worker
- Start
- +8.78 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 196
- Service
- db
- Start
- +8.82 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 197
- Service
- cache
- Start
- +8.87 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 198
- Service
- worker
- Start
- +8.91 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 199
- Service
- db
- Start
- +8.96 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 200
- Service
- cache
- Start
- +9 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 201
- Service
- worker
- Start
- +9.04 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 202
- Service
- db
- Start
- +9.09 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 203
- Service
- cache
- Start
- +9.13 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 204
- Service
- worker
- Start
- +9.18 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 205
- Service
- db
- Start
- +9.22 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 206
- Service
- cache
- Start
- +9.27 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 207
- Service
- worker
- Start
- +9.31 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 208
- Service
- db
- Start
- +9.36 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 209
- Service
- cache
- Start
- +9.4 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 210
- Service
- worker
- Start
- +9.45 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 211
- Service
- db
- Start
- +9.49 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 212
- Service
- cache
- Start
- +9.54 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 213
- Service
- worker
- Start
- +9.59 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 214
- Service
- db
- Start
- +9.63 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 215
- Service
- cache
- Start
- +9.68 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 216
- Service
- worker
- Start
- +9.72 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 217
- Service
- db
- Start
- +9.77 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 218
- Service
- cache
- Start
- +9.81 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 219
- Service
- worker
- Start
- +9.86 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 220
- Service
- db
- Start
- +9.9 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 221
- Service
- cache
- Start
- +9.95 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 222
- Service
- worker
- Start
- +9.99 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 223
- Service
- db
- Start
- +10.04 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 224
- Service
- cache
- Start
- +10.08 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 225
- Service
- worker
- Start
- +10.13 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 226
- Service
- db
- Start
- +10.17 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 227
- Service
- cache
- Start
- +10.21 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 228
- Service
- worker
- Start
- +10.26 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 229
- Service
- db
- Start
- +10.3 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 230
- Service
- cache
- Start
- +10.35 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 231
- Service
- worker
- Start
- +10.39 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 232
- Service
- db
- Start
- +10.44 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 233
- Service
- cache
- Start
- +10.48 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 234
- Service
- worker
- Start
- +10.53 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 235
- Service
- db
- Start
- +10.57 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 236
- Service
- cache
- Start
- +10.62 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 237
- Service
- worker
- Start
- +10.66 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 238
- Service
- db
- Start
- +10.71 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 239
- Service
- cache
- Start
- +10.76 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 240
- Service
- worker
- Start
- +10.8 s
- Duration
- 56 ms
- Self time
- 45 ms
- Status
- ok
step 241
- Service
- db
- Start
- +10.85 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 242
- Service
- cache
- Start
- +10.89 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 243
- Service
- worker
- Start
- +10.94 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 244
- Service
- db
- Start
- +10.98 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 245
- Service
- cache
- Start
- +11.03 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 246
- Service
- worker
- Start
- +11.07 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 247
- Service
- db
- Start
- +11.12 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 248
- Service
- cache
- Start
- +11.16 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 249
- Service
- worker
- Start
- +11.21 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 250
- Service
- db
- Start
- +11.25 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 251
- Service
- cache
- Start
- +11.29 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 252
- Service
- worker
- Start
- +11.34 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 253
- Service
- db
- Start
- +11.38 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 254
- Service
- cache
- Start
- +11.43 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 255
- Service
- worker
- Start
- +11.47 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 256
- Service
- db
- Start
- +11.52 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 257
- Service
- cache
- Start
- +11.56 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 258
- Service
- worker
- Start
- +11.61 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 259
- Service
- db
- Start
- +11.65 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 260
- Service
- cache
- Start
- +11.7 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 261
- Service
- worker
- Start
- +11.74 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 262
- Service
- db
- Start
- +11.79 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 263
- Service
- cache
- Start
- +11.84 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 264
- Service
- worker
- Start
- +11.88 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 265
- Service
- db
- Start
- +11.93 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 266
- Service
- cache
- Start
- +11.97 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 267
- Service
- worker
- Start
- +12.02 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 268
- Service
- db
- Start
- +12.06 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 269
- Service
- cache
- Start
- +12.11 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 270
- Service
- worker
- Start
- +12.15 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 271
- Service
- db
- Start
- +12.2 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 272
- Service
- cache
- Start
- +12.24 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 273
- Service
- worker
- Start
- +12.29 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 274
- Service
- db
- Start
- +12.33 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 275
- Service
- cache
- Start
- +12.38 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 276
- Service
- worker
- Start
- +12.42 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 277
- Service
- db
- Start
- +12.46 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 278
- Service
- cache
- Start
- +12.51 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 279
- Service
- worker
- Start
- +12.55 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 280
- Service
- db
- Start
- +12.6 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 281
- Service
- cache
- Start
- +12.64 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 282
- Service
- worker
- Start
- +12.69 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 283
- Service
- db
- Start
- +12.73 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 284
- Service
- cache
- Start
- +12.78 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 285
- Service
- worker
- Start
- +12.82 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 286
- Service
- db
- Start
- +12.87 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 287
- Service
- cache
- Start
- +12.91 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 288
- Service
- worker
- Start
- +12.96 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 289
- Service
- db
- Start
- +13.01 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 290
- Service
- cache
- Start
- +13.05 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 291
- Service
- worker
- Start
- +13.1 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- error
step 292
- Service
- db
- Start
- +13.14 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 293
- Service
- cache
- Start
- +13.19 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 294
- Service
- worker
- Start
- +13.23 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 295
- Service
- db
- Start
- +13.28 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 296
- Service
- cache
- Start
- +13.32 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 297
- Service
- worker
- Start
- +13.37 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 298
- Service
- db
- Start
- +13.41 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 299
- Service
- cache
- Start
- +13.46 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 300
- Service
- worker
- Start
- +13.5 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 301
- Service
- db
- Start
- +13.54 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 302
- Service
- cache
- Start
- +13.59 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 303
- Service
- worker
- Start
- +13.63 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 304
- Service
- db
- Start
- +13.68 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 305
- Service
- cache
- Start
- +13.72 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 306
- Service
- worker
- Start
- +13.77 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 307
- Service
- db
- Start
- +13.81 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 308
- Service
- cache
- Start
- +13.86 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 309
- Service
- worker
- Start
- +13.9 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 310
- Service
- db
- Start
- +13.95 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 311
- Service
- cache
- Start
- +13.99 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 312
- Service
- worker
- Start
- +14.04 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 313
- Service
- db
- Start
- +14.09 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 314
- Service
- cache
- Start
- +14.13 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 315
- Service
- worker
- Start
- +14.18 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 316
- Service
- db
- Start
- +14.22 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 317
- Service
- cache
- Start
- +14.27 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 318
- Service
- worker
- Start
- +14.31 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 319
- Service
- db
- Start
- +14.36 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 320
- Service
- cache
- Start
- +14.4 s
- Duration
- 50 ms
- Self time
- 45 ms
- Status
- ok
step 321
- Service
- worker
- Start
- +14.45 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 322
- Service
- db
- Start
- +14.49 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 323
- Service
- cache
- Start
- +14.54 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 324
- Service
- worker
- Start
- +14.58 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 325
- Service
- db
- Start
- +14.63 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 326
- Service
- cache
- Start
- +14.67 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 327
- Service
- worker
- Start
- +14.71 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 328
- Service
- db
- Start
- +14.76 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 329
- Service
- cache
- Start
- +14.8 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 330
- Service
- worker
- Start
- +14.85 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 331
- Service
- db
- Start
- +14.89 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 332
- Service
- cache
- Start
- +14.94 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 333
- Service
- worker
- Start
- +14.98 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 334
- Service
- db
- Start
- +15.03 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 335
- Service
- cache
- Start
- +15.07 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 336
- Service
- worker
- Start
- +15.12 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 337
- Service
- db
- Start
- +15.16 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 338
- Service
- cache
- Start
- +15.21 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 339
- Service
- worker
- Start
- +15.26 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 340
- Service
- db
- Start
- +15.3 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 341
- Service
- cache
- Start
- +15.35 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 342
- Service
- worker
- Start
- +15.39 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 343
- Service
- db
- Start
- +15.44 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 344
- Service
- cache
- Start
- +15.48 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 345
- Service
- worker
- Start
- +15.53 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 346
- Service
- db
- Start
- +15.57 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 347
- Service
- cache
- Start
- +15.62 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 348
- Service
- worker
- Start
- +15.66 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 349
- Service
- db
- Start
- +15.71 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 350
- Service
- cache
- Start
- +15.75 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 351
- Service
- worker
- Start
- +15.79 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 352
- Service
- db
- Start
- +15.84 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 353
- Service
- cache
- Start
- +15.88 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 354
- Service
- worker
- Start
- +15.93 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 355
- Service
- db
- Start
- +15.97 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 356
- Service
- cache
- Start
- +16.02 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 357
- Service
- worker
- Start
- +16.07 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 358
- Service
- db
- Start
- +16.11 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 359
- Service
- cache
- Start
- +16.16 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 360
- Service
- worker
- Start
- +16.2 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 361
- Service
- db
- Start
- +16.25 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 362
- Service
- cache
- Start
- +16.29 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 363
- Service
- worker
- Start
- +16.34 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 364
- Service
- db
- Start
- +16.38 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 365
- Service
- cache
- Start
- +16.43 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 366
- Service
- worker
- Start
- +16.47 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 367
- Service
- db
- Start
- +16.52 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 368
- Service
- cache
- Start
- +16.56 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 369
- Service
- worker
- Start
- +16.61 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 370
- Service
- db
- Start
- +16.65 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 371
- Service
- cache
- Start
- +16.7 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 372
- Service
- worker
- Start
- +16.74 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 373
- Service
- db
- Start
- +16.79 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 374
- Service
- cache
- Start
- +16.83 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 375
- Service
- worker
- Start
- +16.88 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 376
- Service
- db
- Start
- +16.92 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 377
- Service
- cache
- Start
- +16.96 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 378
- Service
- worker
- Start
- +17.01 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 379
- Service
- db
- Start
- +17.05 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 380
- Service
- cache
- Start
- +17.1 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 381
- Service
- worker
- Start
- +17.14 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 382
- Service
- db
- Start
- +17.19 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 383
- Service
- cache
- Start
- +17.23 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 384
- Service
- worker
- Start
- +17.28 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 385
- Service
- db
- Start
- +17.32 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 386
- Service
- cache
- Start
- +17.37 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 387
- Service
- worker
- Start
- +17.41 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 388
- Service
- db
- Start
- +17.46 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- error
step 389
- Service
- cache
- Start
- +17.5 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 390
- Service
- worker
- Start
- +17.55 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
step 391
- Service
- db
- Start
- +17.59 s
- Duration
- 44 ms
- Self time
- 44 ms
- Status
- ok
step 392
- Service
- cache
- Start
- +17.64 s
- Duration
- 50 ms
- Self time
- 50 ms
- Status
- ok
step 393
- Service
- worker
- Start
- +17.68 s
- Duration
- 56 ms
- Self time
- 56 ms
- Status
- ok
step 394
- Service
- db
- Start
- +17.73 s
- Duration
- 62 ms
- Self time
- 62 ms
- Status
- ok
step 395
- Service
- cache
- Start
- +17.77 s
- Duration
- 68 ms
- Self time
- 68 ms
- Status
- ok
step 396
- Service
- worker
- Start
- +17.82 s
- Duration
- 20 ms
- Self time
- 20 ms
- Status
- ok
step 397
- Service
- db
- Start
- +17.86 s
- Duration
- 26 ms
- Self time
- 26 ms
- Status
- ok
step 398
- Service
- cache
- Start
- +17.91 s
- Duration
- 32 ms
- Self time
- 32 ms
- Status
- ok
step 399
- Service
- worker
- Start
- +17.95 s
- Duration
- 38 ms
- Self time
- 38 ms
- Status
- ok
<%- include('modules/ui/TraceWaterfall', { spans: manySpans, maxHeight: 320, virtualizeThreshold: 100 }) %>
<%
// TraceWaterfall — a distributed trace as nested rows with offset and duration bars on a shared time ruler.
// Same locals, DOM and classes as kui-react modules/ui/TraceWaterfall/index.tsx: tree semantics (role="tree" /
// "treeitem", aria-level / -setsize / -posinset, aria-expanded, aria-selected), aria-activedescendant on the tree,
// the critical path highlight, error spans (icon and text, not only colour) and a detail region for the selected
// span. The server draws the rows for the state at render time; TraceWaterfall/scripts/trace-waterfall.js
// (inlined after trace-model.js, idempotent) adds expand / collapse, selection, the keyboard, the critical-path
// switch, the detail region and, above `virtualizeThreshold` rows, the windowing.
//
// Locals:
// spans — [{ id, parentId?, name, service?, start, duration, status?, kind?, attributes? }], times in ms on
// one origin. An unknown or missing parent makes the span a root.
// status — 'ok' | 'error' | 'unset'
// selectedId — the selected span id (or null for none). React treats it as controlled: here it is the state at
// render time and the root gets data-tw-select-controlled (see Events)
// defaultSelectedId — selected at render time; the browser then selects freely (default null)
// collapsedIds / defaultCollapsedIds — collapsed span ids at render time, controlled the same way
// (data-tw-collapse-controlled)
// showCriticalPath — highlight the critical path (default true); the toolbar switch changes it in the browser
// renderDetail — false hides the detail region; a function (span, info) => text draws the detail as escaped
// text (React takes a function returning a node); `info` is
// { depth, offset, duration, selfTime, childCount, onCriticalPath }
// detailPartial — absolute path of a partial drawn as the detail, with the locals { span, info }
// colorBy — 'service' (default: a stable palette slot per service) | 'none'
// serviceColors — { service: css colour } over the palette; a value that could leave its CSS declaration is ignored
// labelWidth — width of the span-name column in px (default 280)
// rowHeight — row height in px (default 28)
// virtualizeThreshold — visible rows above which the list is windowed (default 500)
// maxHeight — max height of the scrolling tree in px (default 420)
// hideToolbar — hide the toolbar (default false)
// messages — partial overrides of the texts below (`{count}` and `{name}` are placeholders)
// ariaLabel — accessible name of the tree (default messages.label)
// className — extra classes on the root
// id — prefix of the row ids (default: generated; pass it when two traces share a page)
// maxSpans — the most spans the server draws (default 2000, documented cap: the rows travel as HTML); the
// first `maxSpans` spans are used and a line says so
// loadRuntime — default true: inline the browser scripts (false when the host page loads trace-model.js and
// trace-waterfall.js once and calls KuiTraceWaterfall.autoInit())
//
// Windowing. Rows the list does not draw yet (rows of collapsed spans, rows outside the window) are held in a
// <template data-tw-rows> at the end of the root, as the same markup, and the script moves them in as the list is
// expanded or scrolled; a span's detail is held in <template data-tw-details>. Without JavaScript the list shows
// the rows of the first window and a trace above the threshold cannot be scrolled: raise `virtualizeThreshold`
// when the page must work without a script.
//
// Events on the root (they bubble): 'kui:trace-select' { id, name } (id null when cleared; React: onSelect(span))
// and 'kui:trace-collapsed-change' { ids } (React: onCollapsedChange). A controlled root only emits them; the host
// applies the state with KuiTraceWaterfall.select(root, id) and KuiTraceWaterfall.setCollapsed(root, ids).
var F = {}, M = {};
include('./_observability/_load', { out: F, src: include('./_observability/format.js') });
include('./_observability/_load', { out: M, src: include('./TraceWaterfall/trace-model.js') });
function cssValue(v) {
if (typeof v !== 'string') return '';
var s = v.trim();
if (!s || s.length > 200 || /[;{}<>\\"]/.test(s) || /url\s*\(|expression\s*\(|@import/i.test(s)) return '';
return s;
}
function posNum(v, d) { var n = Number(v); return isFinite(n) && n > 0 ? n : d; }
var PALETTE = ['var(--primary)', 'var(--secondary)', 'var(--info)', 'var(--success)', 'var(--warning)', 'var(--primary-active)'];
var HEADER_H = 28;
var _maxSpans = Math.floor(posNum(locals.maxSpans, 2000));
var _allSpans = Array.isArray(locals.spans) ? locals.spans : [];
var _truncated = _allSpans.length > _maxSpans;
var _spans = _truncated ? _allSpans.slice(0, _maxSpans) : _allSpans;
var _labelWidth = posNum(locals.labelWidth, 280);
var _rowHeight = posNum(locals.rowHeight, 28);
var _threshold = typeof locals.virtualizeThreshold === 'number' ? locals.virtualizeThreshold : 500;
var _maxHeight = posNum(locals.maxHeight, 420);
var _colorBy = locals.colorBy === 'none' ? 'none' : 'service';
var _className = locals.className || '';
var _uid = locals.id || 'ks-tw-' + Math.random().toString(36).substr(2, 9);
var _showDetail = locals.renderDetail !== false;
var _defaults = {
label: 'Trace waterfall', spanColumn: 'Span', expandAll: 'Expand all', collapseAll: 'Collapse all',
criticalPath: 'Critical path', noSpans: 'No spans in this trace.', spanCount: '{count} spans', error: 'error',
onCriticalPath: 'on the critical path', details: 'Span details', clearSelection: 'Clear selection',
service: 'Service', status: 'Status', kind: 'Kind', start: 'Start', duration: 'Duration', selfTime: 'Self time',
attributes: 'Attributes', expand: 'Expand {name}', collapse: 'Collapse {name}',
truncated: 'Showing the first {shown} of {total} spans.'
};
var _msg = Object.assign({}, _defaults, locals.messages || {});
var _tree = M.buildTraceTree(_spans);
var _critical = M.criticalPathIds(_tree);
var _criticalOn = locals.showCriticalPath !== false;
var _collapsedControlled = Array.isArray(locals.collapsedIds);
var _collapsedList = _collapsedControlled ? locals.collapsedIds : (Array.isArray(locals.defaultCollapsedIds) ? locals.defaultCollapsedIds : []);
var _collapsed = new Set(_collapsedList);
var _selectedControlled = locals.selectedId !== undefined;
var _selected = _selectedControlled ? locals.selectedId : (locals.defaultSelectedId != null ? locals.defaultSelectedId : null);
var _all = M.visibleRows(_tree, new Set());
_all.forEach(function (r, i) { r.fi = i; });
var _fi = {};
_all.forEach(function (r) { _fi[r.node.span.id] = r; });
var _rows = M.visibleRows(_tree, _collapsed).map(function (r) { return _fi[r.node.span.id]; });
var _activeIndex = -1;
_rows.forEach(function (r, i) { if (_activeIndex === -1 && r.node.span.id === _selected) _activeIndex = i; });
if (_activeIndex < 0) _activeIndex = _rows.length ? 0 : -1;
var _activeId = _activeIndex >= 0 ? _rows[_activeIndex].node.span.id : null;
var _virtual = _rows.length > _threshold;
// The first window: scroll position 0 and the 400 px viewport kui-react assumes before it measures.
var _win = _virtual ? M.windowFor(_rows.length, _rowHeight, 0, 400, HEADER_H, 8) : { start: 0, end: _rows.length };
var _inline = _rows.slice(_win.start, _win.end);
var _inlineIds = {};
_inline.forEach(function (r) { _inlineIds[r.node.span.id] = true; });
var _held = _all.filter(function (r) { return !_inlineIds[r.node.span.id]; });
var _topPx = _win.start * _rowHeight;
var _bottomPx = Math.max(0, (_rows.length - _win.end) * _rowHeight);
var _ticks = M.rulerTicks(_tree.duration);
var _pct = function (t) { return _tree.duration > 0 ? (t / _tree.duration) * 100 : 0; };
function colorOf(span) {
if (span.status === 'error') return 'var(--error)';
if (_colorBy === 'none' || !span.service) return 'var(--primary)';
var custom = locals.serviceColors && typeof locals.serviceColors === 'object' ? cssValue(locals.serviceColors[span.service]) : '';
return custom || PALETTE[F.hashIndex(span.service, PALETTE.length)];
}
function infoOf(node) {
return {
depth: node.depth, offset: node.span.start - _tree.start, duration: Math.max(0, node.span.duration),
selfTime: M.selfTime(node), childCount: node.children.length, onCriticalPath: _critical.has(node.span.id)
};
}
var _ctx = {
F: F, M: M, tree: _tree, critical: _critical, criticalOn: _criticalOn, collapsed: _collapsed, selected: _selected,
activeId: _activeId, rowHeight: _rowHeight, labelWidth: _labelWidth, msg: _msg, colorOf: colorOf,
rowId: function (id) { return _uid + '-row-' + id; },
detailPartial: typeof locals.detailPartial === 'string' && locals.detailPartial ? locals.detailPartial : '',
renderDetail: locals.renderDetail
};
var _selectedRow = _selected != null && _fi[_selected] ? _fi[_selected] : null;
var TOOL_BASE = 'rounded border px-2 py-1 text-xs transition-colors hover:bg-surface-overlay focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus';
var _detailClass = 'rounded-md border border-border bg-surface-raised p-3 text-sm';
var _cfg = {
rowHeight: _rowHeight, headerH: HEADER_H, maxHeight: _maxHeight, threshold: _threshold, criticalOn: _criticalOn,
selected: _selected, active: _activeId, collapsed: _collapsedList,
showDetail: _showDetail, detailClass: _detailClass,
messages: { expand: _msg.expand, collapse: _msg.collapse, onCriticalPath: _msg.onCriticalPath, details: _msg.details }
};
%>
<% if (!_tree.byId.size) { %>
<div class="rounded-md border border-border bg-surface-raised p-4 text-sm text-text-secondary<%= _className ? ' ' + _className : '' %>"><%= _msg.noSpans %></div>
<% } else { %>
<div class="flex flex-col gap-3<%= _className ? ' ' + _className : '' %>" data-tw-root data-tw-config="<%= JSON.stringify(_cfg) %>"<% if (_selectedControlled) { %> data-tw-select-controlled<% } %><% if (_collapsedControlled) { %> data-tw-collapse-controlled<% } %>>
<% if (locals.hideToolbar !== true) { %>
<div class="flex flex-wrap items-center gap-2 text-xs text-text-secondary">
<span><%= F.fillMessage(_msg.spanCount, { count: _tree.byId.size }) %></span>
<span aria-hidden="true">·</span>
<span><%= F.formatDurationMs(_tree.duration) %></span>
<div class="ms-auto flex flex-wrap items-center gap-2">
<button type="button" data-tw-expand-all class="<%= TOOL_BASE %> border-border bg-surface-base text-text-primary"><%= _msg.expandAll %></button>
<button type="button" data-tw-collapse-all class="<%= TOOL_BASE %> border-border bg-surface-base text-text-primary"><%= _msg.collapseAll %></button>
<button type="button" role="switch" aria-checked="<%= _criticalOn ? 'true' : 'false' %>" data-tw-critical-switch class="<%= TOOL_BASE %> <%= _criticalOn ? 'border-warning bg-warning-subtle text-warning-fg' : 'border-border bg-surface-base text-text-primary' %>"><%= _msg.criticalPath %></button>
</div>
</div>
<% } %>
<% if (_truncated) { %><p class="text-xs text-text-secondary" data-tw-truncated><%= F.fillMessage(_msg.truncated, { shown: _spans.length, total: _allSpans.length }) %></p><% } %>
<div role="tree" tabindex="0" aria-label="<%= locals.ariaLabel || _msg.label %>"<% if (_activeId !== null) { %> aria-activedescendant="<%= _ctx.rowId(_activeId) %>"<% } %> data-tw-tree class="relative overflow-auto rounded-md border border-border bg-surface-base text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus" style="max-height: <%= _maxHeight %>px">
<div aria-hidden="true" class="sticky top-0 z-10 flex border-b border-border bg-surface-raised text-xs text-text-secondary" style="height: <%= HEADER_H %>px">
<div class="shrink-0 truncate px-3 leading-7" style="width: <%= _labelWidth %>px"><%= _msg.spanColumn %></div>
<div class="relative min-w-0 flex-1">
<% _ticks.forEach(function (t) { %><span class="absolute top-0 whitespace-nowrap leading-7" style="inset-inline-start: <%= _pct(t) %>%; padding-inline-start: 4px"><%= F.formatDurationMs(t) %></span><% }); %>
</div>
</div>
<div class="relative" data-tw-body>
<div aria-hidden="true" class="pointer-events-none absolute inset-y-0 end-0" style="inset-inline-start: <%= _labelWidth %>px">
<% _ticks.forEach(function (t) { %><span class="absolute inset-y-0 border-s border-border" style="inset-inline-start: <%= _pct(t) %>%"></span><% }); %>
</div>
<% if (_virtual && _topPx > 0) { %><div aria-hidden="true" style="height: <%= _topPx %>px"></div><% } %>
<%- include('./TraceWaterfall/_rows', { rows: _inline, c: _ctx }) %>
<% if (_virtual && _bottomPx > 0) { %><div aria-hidden="true" style="height: <%= _bottomPx %>px"></div><% } %>
</div>
</div>
<% if (_showDetail && _selectedRow) { %>
<section role="region" aria-label="<%= _msg.details %>" class="<%= _detailClass %>" data-tw-detail>
<%- include('./TraceWaterfall/_details', { list: [{ node: _selectedRow.node, info: infoOf(_selectedRow.node) }], c: _ctx, wrap: false }) %>
</section>
<% } %>
<% if (_held.length > 0) { %>
<template data-tw-rows>
<%- include('./TraceWaterfall/_rows', { rows: _held, c: _ctx }) %>
</template>
<% } %>
<% if (_showDetail) { %>
<template data-tw-details>
<%- include('./TraceWaterfall/_details', { list: _all.map(function (r) { return { node: r.node, info: infoOf(r.node) }; }), c: _ctx, wrap: true }) %>
</template>
<% } %>
</div>
<% if (locals.loadRuntime !== false) { %>
<script>
<%- include('./TraceWaterfall/trace-model.js') %>
<%- include('./TraceWaterfall/scripts/trace-waterfall.js') %>
(function () { if (window.KuiTraceWaterfall) window.KuiTraceWaterfall.autoInit(); })();
</script>
<% } %>
<% } %>