@@ -26,39 +26,28 @@ Introduce a `Buffer` layer between the `Client` and the `Transport`. This `Buffe
2626- Flush(timeout).
2727- Close(timeout).
2828
29- ```
30- ┌────────────────────────────────────────────────────────────────────────────┐
31- │ Client │
32- │ captureEvent / captureTransaction / captureCheckIn / captureLog │
33- └────────────────────────────────────────────────────────────────────────────┘
34-
35- ▼
36- ┌────────────────────────────────────────────────────────────────────────────┐
37- │ Buffer │
38- │ Add(item) · Flush(timeout) · Close(timeout) │
39- │ │
40- │ ┌──────────────────────┐ ┌──────────────────────┐ ┌──────────────────┐ │
41- │ │ Error Store │ │ Check-in Store │ │ Log Store │ │
42- │ │ (CRITICAL) │ │ (HIGH) │ │ (MEDIUM) │ │
43- │ │ Timeout: N/A │ │ Timeout: N/A │ │ Timeout: 5s │ │
44- │ │ BatchSize: 1 │ │ BatchSize: 1 │ │ BatchSize: 100 │ │
45- │ └──────────────────────┘ └──────────────────────┘ └──────────────────┘ │
46- │ │ │
47- │ ▼ │
48- │ ┌─────────────────────────────────────────────────────────────────────┐ │
49- │ │ Scheduler (Weighted Round-Robin) │ │
50- │ │ - Priority weights: CRITICAL=5, HIGH=4, MEDIUM=3, LOW=2, LOWEST=1 │ │
51- │ │ - Processes a batch of items based on BatchSize and/or Timeout │ │
52- │ │ - Builds envelopes from batch │ │
53- │ │ - Submits envelopes to transport │ │
54- │ └─────────────────────────────────────────────────────────────────────┘ │
55- └────────────────────────────────────────────────────────────────────────────┘
56-
57- ▼
58- ┌────────────────────────────────────────────────────────────────────────────┐
59- │ Transport │
60- │ - Single worker, disk cache, offline retry, client reports │
61- └────────────────────────────────────────────────────────────────────────────┘
29+ ``` mermaid
30+ flowchart TD
31+ Client["Client<br/>captureEvent / captureTransaction / captureCheckIn / captureLog"]
32+
33+ subgraph Buffer["Buffer<br/>Add(item) · Flush(timeout) · Close(timeout)"]
34+ direction TB
35+ subgraph Stores["Stores"]
36+ direction LR
37+ ErrorStore["Error Store<br/>(CRITICAL)<br/>Timeout: N/A<br/>BatchSize: 1"]
38+ CheckInStore["Check-in Store<br/>(HIGH)<br/>Timeout: N/A<br/>BatchSize: 1"]
39+ LogStore["Log Store<br/>(MEDIUM)<br/>Timeout: 5s<br/>BatchSize: 100"]
40+ end
41+
42+ Scheduler["Scheduler (Weighted Round-Robin)<br/>• Priority weights: CRITICAL=5, HIGH=4, MEDIUM=3, LOW=2, LOWEST=1<br/>• Processes a batch of items based on BatchSize and/or Timeout<br/>• Builds envelopes from batch<br/>• Submits envelopes to transport"]
43+
44+ Stores --> Scheduler
45+ end
46+
47+ Transport["Transport<br/>Single worker, disk cache, offline retry, client reports"]
48+
49+ Client --> Buffer
50+ Buffer --> Transport
6251```
6352
6453#### How the Buffer works
0 commit comments