@dxos/tracing 0.1.56-next.a63ce79 → 0.1.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/index.mjs +292 -20
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +296 -20
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/types/src/api.d.ts +1 -0
- package/dist/types/src/api.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/metrics/base.d.ts +7 -0
- package/dist/types/src/metrics/base.d.ts.map +1 -0
- package/dist/types/src/metrics/index.d.ts +5 -0
- package/dist/types/src/metrics/index.d.ts.map +1 -0
- package/dist/types/src/metrics/time-series-counter.d.ts +15 -0
- package/dist/types/src/metrics/time-series-counter.d.ts.map +1 -0
- package/dist/types/src/metrics/time-usage-counter.d.ts +15 -0
- package/dist/types/src/metrics/time-usage-counter.d.ts.map +1 -0
- package/dist/types/src/metrics/unary-counter.d.ts +12 -0
- package/dist/types/src/metrics/unary-counter.d.ts.map +1 -0
- package/dist/types/src/symbols.d.ts +1 -0
- package/dist/types/src/symbols.d.ts.map +1 -1
- package/dist/types/src/trace-processor.d.ts +10 -1
- package/dist/types/src/trace-processor.d.ts.map +1 -1
- package/dist/types/src/trace-sender.d.ts.map +1 -1
- package/package.json +10 -9
- package/src/api.ts +14 -0
- package/src/index.ts +1 -0
- package/src/metrics/base.ts +26 -0
- package/src/metrics/index.ts +8 -0
- package/src/metrics/time-series-counter.ts +52 -0
- package/src/metrics/time-usage-counter.ts +62 -0
- package/src/metrics/unary-counter.ts +31 -0
- package/src/symbols.ts +4 -2
- package/src/trace-processor.ts +158 -2
- package/src/trace-sender.ts +28 -18
package/src/trace-sender.ts
CHANGED
|
@@ -3,31 +3,22 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Stream } from '@dxos/codec-protobuf';
|
|
6
|
+
import { LogEntry } from '@dxos/protocols/proto/dxos/client/services';
|
|
6
7
|
import { StreamTraceEvent, TracingService } from '@dxos/protocols/proto/dxos/tracing';
|
|
7
8
|
|
|
8
9
|
import { TraceProcessor, TraceSubscription } from './trace-processor';
|
|
9
10
|
|
|
10
|
-
const FLUSH_INTERVAL = 1_000;
|
|
11
|
-
|
|
12
11
|
export class TraceSender implements TracingService {
|
|
13
12
|
constructor(private _traceProcessor: TraceProcessor) {}
|
|
14
13
|
|
|
15
14
|
streamTrace(request: void): Stream<StreamTraceEvent> {
|
|
16
15
|
return new Stream(({ ctx, next }) => {
|
|
17
|
-
const
|
|
18
|
-
dirtyResources: new Set(),
|
|
19
|
-
dirtySpans: new Set(),
|
|
20
|
-
};
|
|
21
|
-
this._traceProcessor.subscriptions.add(subscription);
|
|
22
|
-
ctx.onDispose(() => {
|
|
23
|
-
this._traceProcessor.subscriptions.delete(subscription);
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
const flushEvents = (resources: Set<number> | null, spans: Set<number> | null) => {
|
|
16
|
+
const flushEvents = (resources: Set<number> | null, spans: Set<number> | null, logs: LogEntry[] | null) => {
|
|
27
17
|
const event: StreamTraceEvent = {
|
|
28
18
|
resourceAdded: [],
|
|
29
19
|
resourceRemoved: [],
|
|
30
20
|
spanAdded: [],
|
|
21
|
+
logAdded: [],
|
|
31
22
|
};
|
|
32
23
|
|
|
33
24
|
if (resources) {
|
|
@@ -58,21 +49,40 @@ export class TraceSender implements TracingService {
|
|
|
58
49
|
}
|
|
59
50
|
}
|
|
60
51
|
|
|
52
|
+
if (logs) {
|
|
53
|
+
for (const log of logs) {
|
|
54
|
+
event.logAdded!.push({ log });
|
|
55
|
+
}
|
|
56
|
+
} else {
|
|
57
|
+
for (const log of this._traceProcessor.logs) {
|
|
58
|
+
event.logAdded!.push({ log });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
61
62
|
if (event.resourceAdded!.length > 0 || event.resourceRemoved!.length > 0 || event.spanAdded!.length > 0) {
|
|
62
63
|
next(event);
|
|
63
64
|
}
|
|
64
65
|
};
|
|
65
66
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const timer = setInterval(() => {
|
|
69
|
-
flushEvents(subscription.dirtyResources, subscription.dirtySpans);
|
|
67
|
+
const flush = () => {
|
|
68
|
+
flushEvents(subscription.dirtyResources, subscription.dirtySpans, subscription.newLogs);
|
|
70
69
|
subscription.dirtyResources.clear();
|
|
71
70
|
subscription.dirtySpans.clear();
|
|
72
|
-
|
|
71
|
+
subscription.newLogs.length = 0;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
const subscription: TraceSubscription = {
|
|
75
|
+
flush,
|
|
76
|
+
dirtyResources: new Set(),
|
|
77
|
+
dirtySpans: new Set(),
|
|
78
|
+
newLogs: [],
|
|
79
|
+
};
|
|
80
|
+
this._traceProcessor.subscriptions.add(subscription);
|
|
73
81
|
ctx.onDispose(() => {
|
|
74
|
-
|
|
82
|
+
this._traceProcessor.subscriptions.delete(subscription);
|
|
75
83
|
});
|
|
84
|
+
|
|
85
|
+
flushEvents(null, null, null);
|
|
76
86
|
});
|
|
77
87
|
}
|
|
78
88
|
}
|