@aztec/telemetry-client 0.0.1-commit.f504929 → 0.0.1-commit.f5a9928
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/dest/attributes.d.ts +12 -2
- package/dest/attributes.d.ts.map +1 -1
- package/dest/attributes.js +6 -1
- package/dest/config.d.ts +3 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +17 -9
- package/dest/index.d.ts +2 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/json_rpc_server_metrics.d.ts +27 -0
- package/dest/json_rpc_server_metrics.d.ts.map +1 -0
- package/dest/json_rpc_server_metrics.js +154 -0
- package/dest/lmdb_metrics.d.ts +2 -2
- package/dest/lmdb_metrics.d.ts.map +1 -1
- package/dest/metrics.d.ts +44 -2
- package/dest/metrics.d.ts.map +1 -1
- package/dest/metrics.js +241 -8
- package/dest/monitored_batch_span_processor.d.ts +29 -0
- package/dest/monitored_batch_span_processor.d.ts.map +1 -0
- package/dest/monitored_batch_span_processor.js +75 -0
- package/dest/otel.d.ts +6 -1
- package/dest/otel.d.ts.map +1 -1
- package/dest/otel.js +99 -4
- package/dest/otel_propagation.d.ts +4 -1
- package/dest/otel_propagation.d.ts.map +1 -1
- package/dest/otel_propagation.js +64 -6
- package/dest/start.d.ts +1 -1
- package/dest/start.d.ts.map +1 -1
- package/dest/start.js +1 -1
- package/dest/telemetry.d.ts +5 -3
- package/dest/telemetry.d.ts.map +1 -1
- package/dest/vendor/attributes.d.ts +2 -1
- package/dest/vendor/attributes.d.ts.map +1 -1
- package/dest/vendor/attributes.js +1 -0
- package/dest/wrappers/fetch.d.ts +3 -3
- package/dest/wrappers/fetch.d.ts.map +1 -1
- package/dest/wrappers/fetch.js +3 -2
- package/dest/wrappers/index.d.ts +1 -2
- package/dest/wrappers/index.d.ts.map +1 -1
- package/dest/wrappers/index.js +0 -1
- package/dest/wrappers/json_rpc_server.d.ts +1 -1
- package/dest/wrappers/json_rpc_server.d.ts.map +1 -1
- package/dest/wrappers/json_rpc_server.js +6 -1
- package/package.json +3 -3
- package/src/attributes.ts +14 -1
- package/src/config.ts +24 -9
- package/src/index.ts +1 -0
- package/src/json_rpc_server_metrics.ts +151 -0
- package/src/metrics.ts +259 -8
- package/src/monitored_batch_span_processor.ts +100 -0
- package/src/otel.ts +69 -3
- package/src/otel_propagation.ts +63 -5
- package/src/start.ts +6 -1
- package/src/telemetry.ts +6 -2
- package/src/vendor/attributes.ts +1 -0
- package/src/wrappers/fetch.ts +9 -3
- package/src/wrappers/index.ts +0 -1
- package/src/wrappers/json_rpc_server.ts +13 -2
- package/dest/wrappers/l2_block_stream.d.ts +0 -16
- package/dest/wrappers/l2_block_stream.d.ts.map +0 -1
- package/dest/wrappers/l2_block_stream.js +0 -400
- package/src/wrappers/l2_block_stream.ts +0 -41
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitored_batch_span_processor.d.ts","sourceRoot":"","sources":["../src/monitored_batch_span_processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,KAAK,OAAO,EAAkB,MAAM,oBAAoB,CAAC;AAElE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAapH,MAAM,MAAM,iCAAiC,GAAG,YAAY,GAAG;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,2BAA4B,SAAQ,kBAAkB;IACjE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAE7B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,uBAAuB,CAAK;IACpC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,eAAe,CAAK;IAE5B,YAAY,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iCAAiC,EAO1F;IAEQ,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI,CAEzD;IAEQ,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAavC;IAEc,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAGzC;IAEc,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAOvC;IAED,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,mBAAmB;CAY5B"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { SpanStatusCode } from '@opentelemetry/api';
|
|
2
|
+
import { hrTimeToMilliseconds } from '@opentelemetry/core';
|
|
3
|
+
import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-node';
|
|
4
|
+
/** Minimum interval between drop warnings to avoid log spam. */ const DROP_WARNING_INTERVAL_MS = 30_000;
|
|
5
|
+
const DEFAULT_MIN_TRACE_DURATION_MS = 10;
|
|
6
|
+
const DEFAULT_MAX_QUEUE_SIZE = 16384;
|
|
7
|
+
/** Cap on the per-export batch size, so a large queue can actually be drained instead of dribbling out
|
|
8
|
+
* at the SDK default of 512 spans per scheduled export. Kept <= maxQueueSize per the BatchSpanProcessor contract. */ const DEFAULT_MAX_EXPORT_BATCH_SIZE = 2048;
|
|
9
|
+
/**
|
|
10
|
+
* Wraps BatchSpanProcessor to emit warnings when spans are dropped due to a full queue.
|
|
11
|
+
* The standard BatchSpanProcessor silently discards spans when its internal queue reaches
|
|
12
|
+
* maxQueueSize, making telemetry data loss invisible to operators.
|
|
13
|
+
*/ export class MonitoredBatchSpanProcessor extends BatchSpanProcessor {
|
|
14
|
+
maxQueueSize;
|
|
15
|
+
minTraceDurationMs;
|
|
16
|
+
log;
|
|
17
|
+
approxQueueSize = 0;
|
|
18
|
+
droppedSinceLastWarning = 0;
|
|
19
|
+
totalDropped = 0;
|
|
20
|
+
lastWarningTime = 0;
|
|
21
|
+
constructor(exporter, log, config){
|
|
22
|
+
const maxQueueSize = config?.maxQueueSize ?? DEFAULT_MAX_QUEUE_SIZE;
|
|
23
|
+
const maxExportBatchSize = Math.min(config?.maxExportBatchSize ?? DEFAULT_MAX_EXPORT_BATCH_SIZE, maxQueueSize);
|
|
24
|
+
super(exporter, {
|
|
25
|
+
...config,
|
|
26
|
+
maxQueueSize,
|
|
27
|
+
maxExportBatchSize
|
|
28
|
+
});
|
|
29
|
+
this.maxQueueSize = maxQueueSize;
|
|
30
|
+
this.minTraceDurationMs = Math.max(0, config?.minTraceDurationMs ?? DEFAULT_MIN_TRACE_DURATION_MS);
|
|
31
|
+
this.log = log;
|
|
32
|
+
}
|
|
33
|
+
onStart(span, parentContext) {
|
|
34
|
+
super.onStart(span, parentContext);
|
|
35
|
+
}
|
|
36
|
+
onEnd(span) {
|
|
37
|
+
if (this.shouldDropShortSpan(span)) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (this.approxQueueSize >= this.maxQueueSize) {
|
|
41
|
+
this.droppedSinceLastWarning++;
|
|
42
|
+
this.totalDropped++;
|
|
43
|
+
this.maybeLogDropWarning();
|
|
44
|
+
} else {
|
|
45
|
+
this.approxQueueSize++;
|
|
46
|
+
}
|
|
47
|
+
super.onEnd(span);
|
|
48
|
+
}
|
|
49
|
+
async forceFlush() {
|
|
50
|
+
await super.forceFlush();
|
|
51
|
+
this.approxQueueSize = 0;
|
|
52
|
+
}
|
|
53
|
+
async shutdown() {
|
|
54
|
+
if (this.totalDropped > 0) {
|
|
55
|
+
this.log.warn(`BatchSpanProcessor shutting down with ${this.totalDropped} total spans dropped`, {
|
|
56
|
+
totalDropped: this.totalDropped
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
await super.shutdown();
|
|
60
|
+
}
|
|
61
|
+
shouldDropShortSpan(span) {
|
|
62
|
+
return this.minTraceDurationMs > 0 && span.status.code !== SpanStatusCode.ERROR && hrTimeToMilliseconds(span.duration) < this.minTraceDurationMs;
|
|
63
|
+
}
|
|
64
|
+
maybeLogDropWarning() {
|
|
65
|
+
const now = Date.now();
|
|
66
|
+
if (now - this.lastWarningTime >= DROP_WARNING_INTERVAL_MS) {
|
|
67
|
+
this.log.warn(`BatchSpanProcessor dropping spans: queue full (maxQueueSize=${this.maxQueueSize}). ` + `${this.droppedSinceLastWarning} dropped since last warning, ${this.totalDropped} total.`, {
|
|
68
|
+
droppedSinceLastWarning: this.droppedSinceLastWarning,
|
|
69
|
+
totalDropped: this.totalDropped
|
|
70
|
+
});
|
|
71
|
+
this.droppedSinceLastWarning = 0;
|
|
72
|
+
this.lastWarningTime = now;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
package/dest/otel.d.ts
CHANGED
|
@@ -20,6 +20,10 @@ export declare class OpenTelemetryClient implements TelemetryClient {
|
|
|
20
20
|
nodejsMetricsMonitor: NodejsMetricsMonitor | undefined;
|
|
21
21
|
private meters;
|
|
22
22
|
private tracers;
|
|
23
|
+
/** Memoized shutdown promise. The telemetry client is shared between the aztec-node and an embedded prover-node,
|
|
24
|
+
* so stop() can be invoked more than once; the providers throw "shutdown may only be called once" and
|
|
25
|
+
* "invalid attempt to force flush after shutdown" if that happens. Guarding here makes stop()/flush() idempotent. */
|
|
26
|
+
private stopPromise;
|
|
23
27
|
protected constructor(resource: IResource, meterProvider: MeterProvider, traceProvider: TracerProvider, loggerProvider: LoggerProvider | undefined, publicMetricExporter: PublicOtelFilterMetricExporter | undefined, log: Logger);
|
|
24
28
|
setExportedPublicTelemetry(metrics: string[]): void;
|
|
25
29
|
setPublicTelemetryCollectFrom(roles: string[]): void;
|
|
@@ -29,10 +33,11 @@ export declare class OpenTelemetryClient implements TelemetryClient {
|
|
|
29
33
|
isEnabled(): boolean;
|
|
30
34
|
flush(): Promise<void>;
|
|
31
35
|
stop(): Promise<void>;
|
|
36
|
+
private doStop;
|
|
32
37
|
getTraceContext(): string | undefined;
|
|
33
38
|
extractPropagatedContext(traceContext: string): Context;
|
|
34
39
|
static createMeterProvider(resource: IResource, exporters: Array<PeriodicExportingMetricReaderOptions>): MeterProvider;
|
|
35
40
|
private static getCustomClientFactory;
|
|
36
41
|
static createAndStart(config: TelemetryClientConfig, log: Logger): OpenTelemetryClient;
|
|
37
42
|
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3RlbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL290ZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixLQUFLLE1BQU0sRUFBcUIsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRixPQUFPLEVBQ0wsS0FBSyxPQUFPLEVBS1osS0FBSyxNQUFNLEVBQ1gsS0FBSyxjQUFjLEVBTXBCLE1BQU0sb0JBQW9CLENBQUM7QUFJNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFHTCxhQUFhLEVBRWIsS0FBSyxvQ0FBb0MsRUFFMUMsTUFBTSw0QkFBNEIsQ0FBQztBQUlwQyxPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUl6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRSxPQUFPLEVBQTRCLDhCQUE4QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHNUcsT0FBTyxLQUFLLEVBR1YsS0FBSyxFQUdMLGVBQWUsRUFFaEIsTUFBTSxnQkFBZ0IsQ0FBQztBQXlDeEIsTUFBTSxNQUFNLDBCQUEwQixHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxLQUFLLG1CQUFtQixDQUFDO0FBRW5HLHFCQUFhLG1CQUFvQixZQUFXLGVBQWU7SUFZdkQsT0FBTyxDQUFDLFFBQVE7SUFDaEIsT0FBTyxDQUFDLGFBQWE7SUFDckIsT0FBTyxDQUFDLGFBQWE7SUFDckIsT0FBTyxDQUFDLGNBQWM7SUFDdEIsT0FBTyxDQUFDLG9CQUFvQjtJQUM1QixPQUFPLENBQUMsR0FBRztJQWhCYixXQUFXLEVBQUUsV0FBVyxHQUFHLFNBQVMsQ0FBQztJQUNyQyxvQkFBb0IsRUFBRSxvQkFBb0IsR0FBRyxTQUFTLENBQUM7SUFDdkQsT0FBTyxDQUFDLE1BQU0sQ0FBOEQ7SUFDNUUsT0FBTyxDQUFDLE9BQU8sQ0FBa0Q7SUFFakU7O3lIQUVxSDtJQUNySCxPQUFPLENBQUMsV0FBVyxDQUE0QjtJQUUvQyxTQUFTLGFBQ0MsUUFBUSxFQUFFLFNBQVMsRUFDbkIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsYUFBYSxFQUFFLGNBQWMsRUFDN0IsY0FBYyxFQUFFLGNBQWMsR0FBRyxTQUFTLEVBQzFDLG9CQUFvQixFQUFFLDhCQUE4QixHQUFHLFNBQVMsRUFDaEUsR0FBRyxFQUFFLE1BQU0sRUFDakI7SUFFSiwwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUVsRDtJQUVELDZCQUE2QixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBRW5EO0lBRUQsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLEdBQUcsS0FBSyxDQVE1QjtJQUVELFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FPOUI7SUFFTSxLQUFLLFNBOEJYO0lBRU0sU0FBUyxZQUVmO0lBRVksS0FBSyxrQkFVakI7SUFFTSxJQUFJLGtCQUVWO1lBRWEsTUFBTTtJQWtCYixlQUFlLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FJM0M7SUFFTSx3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FLN0Q7SUFFRCxPQUFjLG1CQUFtQixDQUMvQixRQUFRLEVBQUUsU0FBUyxFQUNuQixTQUFTLEVBQUUsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLEdBQ3JELGFBQWEsQ0E4S2Y7SUFFRCxPQUFPLENBQUMsTUFBTSxDQUFDLHNCQUFzQjtJQXNFckMsT0FBYyxjQUFjLENBQUMsTUFBTSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxNQUFNLEdBQUcsbUJBQW1CLENBUTVGO0NBQ0YifQ==
|
package/dest/otel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAqB,MAAM,uBAAuB,CAAC;AAErF,OAAO,EACL,KAAK,OAAO,EAKZ,KAAK,MAAM,EACX,KAAK,cAAc,EAMpB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAGL,aAAa,EAEb,KAAK,oCAAoC,EAE1C,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAqB,MAAM,uBAAuB,CAAC;AAErF,OAAO,EACL,KAAK,OAAO,EAKZ,KAAK,MAAM,EACX,KAAK,cAAc,EAMpB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAGL,aAAa,EAEb,KAAK,oCAAoC,EAE1C,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAIzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAA4B,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAG5G,OAAO,KAAK,EAGV,KAAK,EAGL,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AAyCxB,MAAM,MAAM,0BAA0B,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,mBAAmB,CAAC;AAEnG,qBAAa,mBAAoB,YAAW,eAAe;IAYvD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,GAAG;IAhBb,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,oBAAoB,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACvD,OAAO,CAAC,MAAM,CAA8D;IAC5E,OAAO,CAAC,OAAO,CAAkD;IAEjE;;yHAEqH;IACrH,OAAO,CAAC,WAAW,CAA4B;IAE/C,SAAS,aACC,QAAQ,EAAE,SAAS,EACnB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,oBAAoB,EAAE,8BAA8B,GAAG,SAAS,EAChE,GAAG,EAAE,MAAM,EACjB;IAEJ,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAElD;IAED,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAEnD;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAQ5B;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO9B;IAEM,KAAK,SA8BX;IAEM,SAAS,YAEf;IAEY,KAAK,kBAUjB;IAEM,IAAI,kBAEV;YAEa,MAAM;IAkBb,eAAe,IAAI,MAAM,GAAG,SAAS,CAI3C;IAEM,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAK7D;IAED,OAAc,mBAAmB,CAC/B,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,KAAK,CAAC,oCAAoC,CAAC,GACrD,aAAa,CA8Kf;IAED,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAsErC,OAAc,cAAc,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAQ5F;CACF"}
|
package/dest/otel.js
CHANGED
|
@@ -5,9 +5,10 @@ import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
|
|
|
5
5
|
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
6
6
|
import { HostMetrics } from '@opentelemetry/host-metrics';
|
|
7
7
|
import { ExplicitBucketHistogramAggregation, InstrumentType, MeterProvider, PeriodicExportingMetricReader, View } from '@opentelemetry/sdk-metrics';
|
|
8
|
-
import {
|
|
8
|
+
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
|
|
9
9
|
import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
|
|
10
10
|
import { toMetricOptions } from './metric-utils.js';
|
|
11
|
+
import { MonitoredBatchSpanProcessor } from './monitored_batch_span_processor.js';
|
|
11
12
|
import { NodejsMetricsMonitor } from './nodejs_metrics_monitor.js';
|
|
12
13
|
import { OtelFilterMetricExporter, PublicOtelFilterMetricExporter } from './otel_filter_metric_exporter.js';
|
|
13
14
|
import { registerOtelLoggerProvider } from './otel_logger_provider.js';
|
|
@@ -53,6 +54,9 @@ export class OpenTelemetryClient {
|
|
|
53
54
|
nodejsMetricsMonitor;
|
|
54
55
|
meters;
|
|
55
56
|
tracers;
|
|
57
|
+
/** Memoized shutdown promise. The telemetry client is shared between the aztec-node and an embedded prover-node,
|
|
58
|
+
* so stop() can be invoked more than once; the providers throw "shutdown may only be called once" and
|
|
59
|
+
* "invalid attempt to force flush after shutdown" if that happens. Guarding here makes stop()/flush() idempotent. */ stopPromise;
|
|
56
60
|
constructor(resource, meterProvider, traceProvider, loggerProvider, publicMetricExporter, log){
|
|
57
61
|
this.resource = resource;
|
|
58
62
|
this.meterProvider = meterProvider;
|
|
@@ -113,13 +117,20 @@ export class OpenTelemetryClient {
|
|
|
113
117
|
return true;
|
|
114
118
|
}
|
|
115
119
|
async flush() {
|
|
120
|
+
// Flushing after the providers have been shut down throws "invalid attempt to force flush after shutdown".
|
|
121
|
+
if (this.stopPromise) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
116
124
|
await Promise.all([
|
|
117
125
|
this.meterProvider.forceFlush(),
|
|
118
126
|
this.loggerProvider?.forceFlush(),
|
|
119
127
|
this.traceProvider instanceof NodeTracerProvider ? this.traceProvider.forceFlush() : Promise.resolve()
|
|
120
128
|
]);
|
|
121
129
|
}
|
|
122
|
-
|
|
130
|
+
stop() {
|
|
131
|
+
return this.stopPromise ??= this.doStop();
|
|
132
|
+
}
|
|
133
|
+
async doStop() {
|
|
123
134
|
this.nodejsMetricsMonitor?.stop();
|
|
124
135
|
const flushAndShutdown = async (provider)=>{
|
|
125
136
|
if (!provider) {
|
|
@@ -209,6 +220,32 @@ export class OpenTelemetryClient {
|
|
|
209
220
|
1200
|
|
210
221
|
], true)
|
|
211
222
|
}),
|
|
223
|
+
// Pending-to-mined delay routinely exceeds the 1-minute ceiling of the generic `ms`
|
|
224
|
+
// view below under load, so it would saturate at 60s. Give this one metric wider
|
|
225
|
+
// buckets (1s to 10min). This must precede the generic `ms` view: when multiple views
|
|
226
|
+
// match an instrument, the SDK keeps the first-registered compatible storage, so the
|
|
227
|
+
// first view in this list wins the bucket boundaries.
|
|
228
|
+
new View({
|
|
229
|
+
instrumentType: InstrumentType.HISTOGRAM,
|
|
230
|
+
instrumentName: 'aztec.mempool.tx_mined_delay',
|
|
231
|
+
instrumentUnit: 'ms',
|
|
232
|
+
aggregation: new ExplicitBucketHistogramAggregation([
|
|
233
|
+
1_000,
|
|
234
|
+
2_500,
|
|
235
|
+
5_000,
|
|
236
|
+
7_500,
|
|
237
|
+
10_000,
|
|
238
|
+
15_000,
|
|
239
|
+
30_000,
|
|
240
|
+
45_000,
|
|
241
|
+
60_000,
|
|
242
|
+
90_000,
|
|
243
|
+
120_000,
|
|
244
|
+
180_000,
|
|
245
|
+
300_000,
|
|
246
|
+
600_000
|
|
247
|
+
], true)
|
|
248
|
+
}),
|
|
212
249
|
new View({
|
|
213
250
|
instrumentType: InstrumentType.HISTOGRAM,
|
|
214
251
|
instrumentUnit: 'ms',
|
|
@@ -369,6 +406,61 @@ export class OpenTelemetryClient {
|
|
|
369
406
|
15_000_000,
|
|
370
407
|
30_000_000
|
|
371
408
|
], true)
|
|
409
|
+
}),
|
|
410
|
+
// L1 gas prices in gwei: priority fees ~0.01-10, base fees ~1-500, spikes to 1000+
|
|
411
|
+
new View({
|
|
412
|
+
instrumentType: InstrumentType.HISTOGRAM,
|
|
413
|
+
instrumentUnit: 'gwei',
|
|
414
|
+
aggregation: new ExplicitBucketHistogramAggregation([
|
|
415
|
+
0.1,
|
|
416
|
+
0.5,
|
|
417
|
+
1,
|
|
418
|
+
2,
|
|
419
|
+
5,
|
|
420
|
+
10,
|
|
421
|
+
20,
|
|
422
|
+
50,
|
|
423
|
+
100,
|
|
424
|
+
200,
|
|
425
|
+
500,
|
|
426
|
+
1_000
|
|
427
|
+
], true)
|
|
428
|
+
}),
|
|
429
|
+
// L1 gas consumption: tx gas 100k-30M, calldata/blob gas varies
|
|
430
|
+
new View({
|
|
431
|
+
instrumentType: InstrumentType.HISTOGRAM,
|
|
432
|
+
instrumentUnit: 'gas',
|
|
433
|
+
aggregation: new ExplicitBucketHistogramAggregation([
|
|
434
|
+
10_000,
|
|
435
|
+
50_000,
|
|
436
|
+
100_000,
|
|
437
|
+
250_000,
|
|
438
|
+
500_000,
|
|
439
|
+
1_000_000,
|
|
440
|
+
2_000_000,
|
|
441
|
+
5_000_000,
|
|
442
|
+
10_000_000,
|
|
443
|
+
15_000_000,
|
|
444
|
+
30_000_000
|
|
445
|
+
], true)
|
|
446
|
+
}),
|
|
447
|
+
// L1 tx total fee in ETH: typically 0.001 - 1 ETH
|
|
448
|
+
new View({
|
|
449
|
+
instrumentType: InstrumentType.HISTOGRAM,
|
|
450
|
+
instrumentUnit: 'eth',
|
|
451
|
+
aggregation: new ExplicitBucketHistogramAggregation([
|
|
452
|
+
0.0001,
|
|
453
|
+
0.0005,
|
|
454
|
+
0.001,
|
|
455
|
+
0.005,
|
|
456
|
+
0.01,
|
|
457
|
+
0.05,
|
|
458
|
+
0.1,
|
|
459
|
+
0.5,
|
|
460
|
+
1,
|
|
461
|
+
5,
|
|
462
|
+
10
|
|
463
|
+
], true)
|
|
372
464
|
})
|
|
373
465
|
]
|
|
374
466
|
});
|
|
@@ -378,9 +470,12 @@ export class OpenTelemetryClient {
|
|
|
378
470
|
const tracerProvider = new NodeTracerProvider({
|
|
379
471
|
resource,
|
|
380
472
|
spanProcessors: config.tracesCollectorUrl ? [
|
|
381
|
-
new
|
|
473
|
+
new MonitoredBatchSpanProcessor(new OTLPTraceExporter({
|
|
382
474
|
url: config.tracesCollectorUrl.href
|
|
383
|
-
})
|
|
475
|
+
}), log, {
|
|
476
|
+
maxQueueSize: config.otelBspMaxQueueSize,
|
|
477
|
+
minTraceDurationMs: config.otelMinTraceDurationMs
|
|
478
|
+
})
|
|
384
479
|
] : []
|
|
385
480
|
});
|
|
386
481
|
tracerProvider.register({
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import type { DiagnosticsMiddleware } from '@aztec/foundation/json-rpc/server';
|
|
1
2
|
import type Koa from 'koa';
|
|
3
|
+
import { getJsonRpcServerMetrics } from './json_rpc_server_metrics.js';
|
|
2
4
|
export declare function getOtelJsonRpcPropagationMiddleware(scope?: string): (ctx: Koa.Context, next: () => Promise<void>) => Promise<void>;
|
|
3
|
-
|
|
5
|
+
export declare function getOtelJsonRpcDiagnosticsMiddleware(metricsProvider?: typeof getJsonRpcServerMetrics): DiagnosticsMiddleware;
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3RlbF9wcm9wYWdhdGlvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL290ZWxfcHJvcGFnYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUkvRSxPQUFPLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQztBQUUzQixPQUFPLEVBQUUsdUJBQXVCLEVBQXNCLE1BQU0sOEJBQThCLENBQUM7QUFVM0Ysd0JBQWdCLG1DQUFtQyxDQUNqRCxLQUFLLFNBQWtCLEdBQ3RCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FtRGhFO0FBRUQsd0JBQWdCLG1DQUFtQyxDQUFDLGVBQWUsaUNBQTBCLEdBQUcscUJBQXFCLENBb0NwSCJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otel_propagation.d.ts","sourceRoot":"","sources":["../src/otel_propagation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"otel_propagation.d.ts","sourceRoot":"","sources":["../src/otel_propagation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAI/E,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAE,uBAAuB,EAAsB,MAAM,8BAA8B,CAAC;AAU3F,wBAAgB,mCAAmC,CACjD,KAAK,SAAkB,GACtB,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAmDhE;AAED,wBAAgB,mCAAmC,CAAC,eAAe,iCAA0B,GAAG,qBAAqB,CAoCpH"}
|
package/dest/otel_propagation.js
CHANGED
|
@@ -1,22 +1,34 @@
|
|
|
1
|
+
import { Timer } from '@aztec/foundation/timer';
|
|
1
2
|
import { ROOT_CONTEXT, SpanKind, SpanStatusCode, propagation } from '@opentelemetry/api';
|
|
3
|
+
import { getJsonRpcServerMetrics, splitJsonRpcMethod } from './json_rpc_server_metrics.js';
|
|
2
4
|
import { getTelemetryClient } from './start.js';
|
|
3
|
-
import { ATTR_JSONRPC_ERROR_CODE, ATTR_JSONRPC_ERROR_MSG, ATTR_JSONRPC_METHOD, ATTR_JSONRPC_REQUEST_ID } from './vendor/attributes.js';
|
|
5
|
+
import { ATTR_JSONRPC_ERROR_CODE, ATTR_JSONRPC_ERROR_MSG, ATTR_JSONRPC_METHOD, ATTR_JSONRPC_REQUEST_ID, ATTR_JSONRPC_SERVICE } from './vendor/attributes.js';
|
|
4
6
|
export function getOtelJsonRpcPropagationMiddleware(scope = 'JsonRpcServer') {
|
|
5
7
|
return function otelJsonRpcPropagation(ctx, next) {
|
|
6
8
|
const tracer = getTelemetryClient().getTracer(scope);
|
|
7
9
|
const context = propagation.extract(ROOT_CONTEXT, ctx.request.headers);
|
|
8
|
-
|
|
9
|
-
return tracer.startActiveSpan(`JsonRpcServer.${method ?? 'unknown'}`, {
|
|
10
|
+
return tracer.startActiveSpan(`JsonRpcServer`, {
|
|
10
11
|
kind: SpanKind.SERVER
|
|
11
12
|
}, context, async (span)=>{
|
|
12
13
|
if (ctx.id) {
|
|
13
14
|
span.setAttribute(ATTR_JSONRPC_REQUEST_ID, ctx.id);
|
|
14
15
|
}
|
|
15
|
-
if (method) {
|
|
16
|
-
span.setAttribute(ATTR_JSONRPC_METHOD, method);
|
|
17
|
-
}
|
|
18
16
|
try {
|
|
19
17
|
await next();
|
|
18
|
+
const requestBody = ctx.request.body;
|
|
19
|
+
if (requestBody && typeof requestBody === 'object' && !Array.isArray(requestBody) && 'method' in requestBody) {
|
|
20
|
+
const fullMethod = requestBody.method;
|
|
21
|
+
if (typeof fullMethod === 'string') {
|
|
22
|
+
const [service, method] = splitJsonRpcMethod(fullMethod);
|
|
23
|
+
span.updateName(`JsonRpcServer.${service ? `${service}.` : ''}${method}`);
|
|
24
|
+
span.setAttribute(ATTR_JSONRPC_METHOD, method);
|
|
25
|
+
if (service) {
|
|
26
|
+
span.setAttribute(ATTR_JSONRPC_SERVICE, service);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
} else if (Array.isArray(requestBody)) {
|
|
30
|
+
span.updateName(`JsonRpcServer.batch`);
|
|
31
|
+
}
|
|
20
32
|
const err = ctx.body.error?.message;
|
|
21
33
|
const code = ctx.body.error?.code;
|
|
22
34
|
if (err) {
|
|
@@ -42,3 +54,49 @@ export function getOtelJsonRpcPropagationMiddleware(scope = 'JsonRpcServer') {
|
|
|
42
54
|
});
|
|
43
55
|
};
|
|
44
56
|
}
|
|
57
|
+
export function getOtelJsonRpcDiagnosticsMiddleware(metricsProvider = getJsonRpcServerMetrics) {
|
|
58
|
+
return function otelJsonRpcDiagnostics(ctx, next) {
|
|
59
|
+
const [service, method] = splitJsonRpcMethod(ctx.method);
|
|
60
|
+
const scope = service ?? 'UnknownHandler';
|
|
61
|
+
const tracer = getTelemetryClient().getTracer(scope);
|
|
62
|
+
const attributes = {
|
|
63
|
+
...service === undefined ? {} : {
|
|
64
|
+
[ATTR_JSONRPC_SERVICE]: service
|
|
65
|
+
},
|
|
66
|
+
[ATTR_JSONRPC_METHOD]: method
|
|
67
|
+
};
|
|
68
|
+
return tracer.startActiveSpan(`${scope}.${method}`, {
|
|
69
|
+
kind: SpanKind.INTERNAL,
|
|
70
|
+
attributes
|
|
71
|
+
}, async (span)=>{
|
|
72
|
+
const timer = new Timer();
|
|
73
|
+
let ok = false;
|
|
74
|
+
if (ctx.id !== null) {
|
|
75
|
+
span.setAttribute(ATTR_JSONRPC_REQUEST_ID, ctx.id);
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
await next();
|
|
79
|
+
ok = true;
|
|
80
|
+
span.setStatus({
|
|
81
|
+
code: SpanStatusCode.OK
|
|
82
|
+
});
|
|
83
|
+
} catch (err) {
|
|
84
|
+
span.setStatus({
|
|
85
|
+
code: SpanStatusCode.ERROR,
|
|
86
|
+
message: err instanceof Error ? err.message : String(err)
|
|
87
|
+
});
|
|
88
|
+
if (typeof err === 'string' || err instanceof Error) {
|
|
89
|
+
span.recordException(err);
|
|
90
|
+
}
|
|
91
|
+
throw err;
|
|
92
|
+
} finally{
|
|
93
|
+
const metrics = metricsProvider();
|
|
94
|
+
metrics.recordRequest(ctx.method, timer.ms(), ok);
|
|
95
|
+
if (ctx.requestValidationDurationMs !== undefined && ctx.requestValidationSucceeded !== undefined) {
|
|
96
|
+
metrics.recordRequestValidation(ctx.method, ctx.requestValidationDurationMs, ctx.requestValidationSucceeded);
|
|
97
|
+
}
|
|
98
|
+
span.end();
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
}
|
package/dest/start.d.ts
CHANGED
|
@@ -4,4 +4,4 @@ import type { TelemetryClient } from './telemetry.js';
|
|
|
4
4
|
export * from './config.js';
|
|
5
5
|
export declare function initTelemetryClient(config: TelemetryClientConfig, bindings?: LoggerBindings): Promise<TelemetryClient>;
|
|
6
6
|
export declare function getTelemetryClient(): TelemetryClient;
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFMUUsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFekQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsY0FBYyxhQUFhLENBQUM7QUFLNUIsd0JBQXNCLG1CQUFtQixDQUN2QyxNQUFNLEVBQUUscUJBQXFCLEVBQzdCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsR0FDeEIsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQXVCMUI7QUFFRCx3QkFBZ0Isa0JBQWtCLElBQUksZUFBZSxDQUVwRCJ9
|
package/dest/start.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAE1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,cAAc,aAAa,CAAC;AAK5B,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAE1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,cAAc,aAAa,CAAC;AAK5B,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,eAAe,CAAC,CAuB1B;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD"}
|
package/dest/start.js
CHANGED
|
@@ -9,7 +9,7 @@ export async function initTelemetryClient(config, bindings) {
|
|
|
9
9
|
log.warn('Telemetry client has already been initialized once');
|
|
10
10
|
return telemetry;
|
|
11
11
|
}
|
|
12
|
-
if (config.metricsCollectorUrl || config.publicMetricsCollectorUrl) {
|
|
12
|
+
if (config.metricsCollectorUrl || config.publicMetricsCollectorUrl || config.tracesCollectorUrl || config.logsCollectorUrl) {
|
|
13
13
|
log.info(`Using OpenTelemetry client with custom collector`);
|
|
14
14
|
// Lazy load OpenTelemetry to avoid loading heavy deps at startup
|
|
15
15
|
const { OpenTelemetryClient } = await import('./otel.js');
|
package/dest/telemetry.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { type AttributeValue, type BatchObservableCallback, type Context, type MetricOptions, type Observable, type BatchObservableResult as OtelBatchObservableResult, type Gauge as OtelGauge, type Histogram as OtelHistogram, type ObservableGauge as OtelObservableGauge, type ObservableResult as OtelObservableResult, type ObservableUpDownCounter as OtelObservableUpDownCounter, type UpDownCounter as OtelUpDownCounter, type Span, type Tracer } from '@opentelemetry/api';
|
|
2
2
|
import type * as Attributes from './attributes.js';
|
|
3
3
|
import type { MetricDefinition } from './metrics.js';
|
|
4
|
+
import type * as VendorAttributes from './vendor/attributes.js';
|
|
4
5
|
export { toMetricOptions, createUpDownCounterWithDefault } from './metric-utils.js';
|
|
5
6
|
export { type Span, SpanStatusCode, ValueType, type Context } from '@opentelemetry/api';
|
|
6
7
|
type ValuesOf<T> = T extends Record<string, infer U> ? U : never;
|
|
7
8
|
type AttributeNames = ValuesOf<typeof Attributes>;
|
|
9
|
+
type AllowedVendorMetricAttributeNames = (typeof VendorAttributes)['ATTR_JSONRPC_METHOD' | 'ATTR_JSONRPC_SERVICE'];
|
|
8
10
|
/**
|
|
9
11
|
* This is a set of attributes that could lead to high cardinality in the metrics.
|
|
10
12
|
* If you find yourself wanting to capture this data in a metric consider if it makes sense to capture
|
|
@@ -12,10 +14,10 @@ type AttributeNames = ValuesOf<typeof Attributes>;
|
|
|
12
14
|
*
|
|
13
15
|
* Think twice before removing an attribute from this list.
|
|
14
16
|
*/
|
|
15
|
-
type BannedMetricAttributeNames = (typeof Attributes)['BLOCK_NUMBER' | 'BLOCK_ARCHIVE' | 'SLOT_NUMBER' | 'BLOCK_PARENT' | 'BLOCK_CANDIDATE_TXS_COUNT' | 'BLOCK_TXS_COUNT' | 'BLOCK_SIZE' | 'EPOCH_SIZE' | 'EPOCH_NUMBER' | 'TX_HASH' | 'PROVING_JOB_ID' | 'P2P_ID' | '
|
|
17
|
+
type BannedMetricAttributeNames = (typeof Attributes)['BLOCK_NUMBER' | 'BLOCK_ARCHIVE' | 'SLOT_NUMBER' | 'BLOCK_PARENT' | 'BLOCK_CANDIDATE_TXS_COUNT' | 'BLOCK_TXS_COUNT' | 'BLOCK_SIZE' | 'EPOCH_SIZE' | 'EPOCH_NUMBER' | 'TX_HASH' | 'PROVING_JOB_ID' | 'P2P_ID' | 'TARGET_ADDRESS' | 'MANA_USED' | 'TOTAL_INSTRUCTIONS'];
|
|
16
18
|
/** Global registry of attributes */
|
|
17
19
|
export type AttributesType = Partial<Record<AttributeNames, AttributeValue>>;
|
|
18
|
-
export type AllowedAttributeNames = Exclude<AttributeNames, BannedMetricAttributeNames
|
|
20
|
+
export type AllowedAttributeNames = Exclude<AttributeNames, BannedMetricAttributeNames> | AllowedVendorMetricAttributeNames;
|
|
19
21
|
/** Subset of attributes allowed to be added to metrics */
|
|
20
22
|
export type MetricAttributesType = Partial<Record<AllowedAttributeNames, AttributeValue>>;
|
|
21
23
|
/** Re-export MetricDefinition for convenience */
|
|
@@ -144,4 +146,4 @@ export declare function runInSpan<A extends any[], R>(tracer: Tracer | string, s
|
|
|
144
146
|
* Unlike runInSpan which returns a reusable function, this executes right away.
|
|
145
147
|
*/
|
|
146
148
|
export declare function execInSpan<R>(tracer: Tracer | string, spanName: string, callback: (span: Span) => Promise<R>): Promise<R>;
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdGVsZW1ldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGNBQWMsRUFDbkIsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSyxPQUFPLEVBQ1osS0FBSyxhQUFhLEVBQ2xCLEtBQUssVUFBVSxFQUNmLEtBQUsscUJBQXFCLElBQUkseUJBQXlCLEVBQ3ZELEtBQUssS0FBSyxJQUFJLFNBQVMsRUFDdkIsS0FBSyxTQUFTLElBQUksYUFBYSxFQUMvQixLQUFLLGVBQWUsSUFBSSxtQkFBbUIsRUFDM0MsS0FBSyxnQkFBZ0IsSUFBSSxvQkFBb0IsRUFDN0MsS0FBSyx1QkFBdUIsSUFBSSwyQkFBMkIsRUFDM0QsS0FBSyxhQUFhLElBQUksaUJBQWlCLEVBQ3ZDLEtBQUssSUFBSSxFQUVULEtBQUssTUFBTSxFQUNaLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxLQUFLLEtBQUssVUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXJELE9BQU8sS0FBSyxLQUFLLGdCQUFnQixNQUFNLHdCQUF3QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVwRixPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxLQUFLLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhGLEtBQUssUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7QUFFakUsS0FBSyxjQUFjLEdBQUcsUUFBUSxDQUFDLE9BQU8sVUFBVSxDQUFDLENBQUM7QUFFbEQsS0FBSyxpQ0FBaUMsR0FBRyxDQUFDLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxxQkFBcUIsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDO0FBRW5IOzs7Ozs7R0FNRztBQUNILEtBQUssMEJBQTBCLEdBQUcsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxDQUNqRCxjQUFjLEdBQ2QsZUFBZSxHQUNmLGFBQWEsR0FDYixjQUFjLEdBQ2QsMkJBQTJCLEdBQzNCLGlCQUFpQixHQUNqQixZQUFZLEdBQ1osWUFBWSxHQUNaLGNBQWMsR0FDZCxTQUFTLEdBQ1QsZ0JBQWdCLEdBQ2hCLFFBQVEsR0FDUixnQkFBZ0IsR0FDaEIsV0FBVyxHQUNYLG9CQUFvQixDQUFDLENBQUM7QUFFMUIsb0NBQW9DO0FBQ3BDLE1BQU0sTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUU3RSxNQUFNLE1BQU0scUJBQXFCLEdBQzdCLE9BQU8sQ0FBQyxjQUFjLEVBQUUsMEJBQTBCLENBQUMsR0FDbkQsaUNBQWlDLENBQUM7QUFFdEMsMERBQTBEO0FBQzFELE1BQU0sTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFFMUYsaURBQWlEO0FBQ2pELFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVyRCxNQUFNLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3BELE1BQU0sTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDNUQsTUFBTSxNQUFNLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3BFLE1BQU0sTUFBTSxlQUFlLEdBQUcsbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUN4RSxNQUFNLE1BQU0sdUJBQXVCLEdBQUcsMkJBQTJCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUN4RixNQUFNLE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUMxRSxNQUFNLE1BQU0scUJBQXFCLEdBQUcseUJBQXlCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUVwRixZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFHdkI7O0dBRUc7QUFDSCxNQUFNLFdBQVcsS0FBSztJQUNwQjs7O09BR0c7SUFDSCxXQUFXLENBQUMsTUFBTSxFQUFFLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUU3Qzs7O09BR0c7SUFDSCxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0lBRWpFLDBCQUEwQixDQUN4QixRQUFRLEVBQUUsdUJBQXVCLENBQUMsY0FBYyxDQUFDLEVBQ2pELFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FDeEMsSUFBSSxDQUFDO0lBRVIsNkJBQTZCLENBQzNCLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxjQUFjLENBQUMsRUFDakQsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUN4QyxJQUFJLENBQUM7SUFFUjs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBRTVGOzs7T0FHRztJQUNILG1CQUFtQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7SUFFN0Q7OztPQUdHO0lBQ0gsNkJBQTZCLENBQUMsTUFBTSxFQUFFLGdCQUFnQixHQUFHLHVCQUF1QixDQUFDO0NBQ2xGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFdBQVcsZUFBZTtJQUM5Qjs7UUFFSTtJQUNKLFNBQVMsSUFBSSxPQUFPLENBQUM7SUFDckI7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRTlCOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUVoQzs7T0FFRztJQUNILElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdEI7O09BRUc7SUFDSCxLQUFLLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXZCOztPQUVHO0lBQ0gsMEJBQTBCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztJQUVyRDs7T0FFRztJQUNILDZCQUE2QixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFckQ7OztPQUdHO0lBQ0gsZUFBZSxJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFFdEM7O09BRUc7SUFDSCx3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxHQUFHLE9BQU8sR0FBRyxTQUFTLENBQUM7Q0FDckU7QUFFRCwrREFBK0Q7QUFDL0QsTUFBTSxXQUFXLFNBQVM7SUFDeEIsTUFBTSxFQUFFLE1BQU0sQ0FBQztDQUNoQjtBQUVELEtBQUssYUFBYSxDQUFDLENBQUMsU0FBUyxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQzNFLGNBQWMsRUFBRSxDQUFDLEVBQ2pCLE9BQU8sRUFBRSwyQkFBMkIsQ0FBQyxDQUFDLENBQUMsS0FDcEMsQ0FBQyxDQUFDO0FBRVA7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCx3QkFBZ0IsU0FBUyxDQUFDLENBQUMsU0FBUyxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssR0FBRyxFQUM5RSxRQUFRLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsRUFDaEUsVUFBVSxDQUFDLEVBQUUsY0FBYyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsY0FBYyxDQUFDLEVBQzdHLGVBQWUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLGNBQWMsR0FDakYsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0E2Q3JCO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILHdCQUFnQixrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQ2xFLE1BQU0sRUFBRSxNQUFNLEVBQ2QsUUFBUSxFQUFFLE1BQU0sRUFDaEIsVUFBVSxFQUFFLGNBQWMsRUFDMUIsUUFBUSxFQUFFLENBQUMsR0FDVixDQUFDLENBa0JIO0FBRUQsd0JBQWdCLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUMxQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFDdkIsUUFBUSxFQUFFLE1BQU0sRUFDaEIsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUMvQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBeUI1QjtBQUVEOzs7R0FHRztBQUNILHdCQUFnQixVQUFVLENBQUMsQ0FBQyxFQUMxQixNQUFNLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFDdkIsUUFBUSxFQUFFLE1BQU0sRUFDaEIsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FpQloifQ==
|
package/dest/telemetry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,qBAAqB,IAAI,yBAAyB,EACvD,KAAK,KAAK,IAAI,SAAS,EACvB,KAAK,SAAS,IAAI,aAAa,EAC/B,KAAK,eAAe,IAAI,mBAAmB,EAC3C,KAAK,gBAAgB,IAAI,oBAAoB,EAC7C,KAAK,uBAAuB,IAAI,2BAA2B,EAC3D,KAAK,aAAa,IAAI,iBAAiB,EACvC,KAAK,IAAI,EAET,KAAK,MAAM,EACZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const ATTR_JSONRPC_METHOD = "rpc.method";
|
|
2
|
+
export declare const ATTR_JSONRPC_SERVICE = "rpc.service";
|
|
2
3
|
export declare const ATTR_JSONRPC_REQUEST_ID = "rpc.jsonrpc.request_id";
|
|
3
4
|
export declare const ATTR_JSONRPC_ERROR_CODE = "rpc.jsonrpc.error_code";
|
|
4
5
|
export declare const ATTR_JSONRPC_ERROR_MSG = "rpc.jsonrpc.error_message";
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZlbmRvci9hdHRyaWJ1dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLGVBQU8sTUFBTSxtQkFBbUIsZUFBZSxDQUFDO0FBQ2hELGVBQU8sTUFBTSxvQkFBb0IsZ0JBQWdCLENBQUM7QUFDbEQsZUFBTyxNQUFNLHVCQUF1QiwyQkFBMkIsQ0FBQztBQUNoRSxlQUFPLE1BQU0sdUJBQXVCLDJCQUEyQixDQUFDO0FBQ2hFLGVBQU8sTUFBTSxzQkFBc0IsOEJBQThCLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../src/vendor/attributes.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAChD,eAAO,MAAM,uBAAuB,2BAA2B,CAAC;AAChE,eAAO,MAAM,uBAAuB,2BAA2B,CAAC;AAChE,eAAO,MAAM,sBAAsB,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../src/vendor/attributes.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAChD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAClD,eAAO,MAAM,uBAAuB,2BAA2B,CAAC;AAChE,eAAO,MAAM,uBAAuB,2BAA2B,CAAC;AAChE,eAAO,MAAM,sBAAsB,8BAA8B,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// See https://opentelemetry.io/docs/specs/semconv/rpc/json-rpc/
|
|
2
2
|
export const ATTR_JSONRPC_METHOD = 'rpc.method';
|
|
3
|
+
export const ATTR_JSONRPC_SERVICE = 'rpc.service';
|
|
3
4
|
export const ATTR_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id';
|
|
4
5
|
export const ATTR_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code';
|
|
5
6
|
export const ATTR_JSONRPC_ERROR_MSG = 'rpc.jsonrpc.error_message';
|
package/dest/wrappers/fetch.d.ts
CHANGED
|
@@ -2,15 +2,15 @@ import { defaultFetch } from '@aztec/foundation/json-rpc/client';
|
|
|
2
2
|
import type { Logger } from '@aztec/foundation/log';
|
|
3
3
|
/**
|
|
4
4
|
* Makes a fetch function that retries based on the given attempts and propagates trace information.
|
|
5
|
-
* @param retries - Sequence of intervals (in seconds) to retry.
|
|
5
|
+
* @param retries - Sequence of intervals (in seconds) to retry, or a factory function returning an iterator for custom/indefinite backoff.
|
|
6
6
|
* @param noRetry - Whether to stop retries on server errors.
|
|
7
7
|
* @param log - Optional logger for logging attempts.
|
|
8
8
|
* @returns A fetch function.
|
|
9
9
|
*/
|
|
10
|
-
export declare function makeTracedFetch(retries: number[], defaultNoRetry: boolean, fetch?: typeof defaultFetch, log?: Logger): (host: string, body: unknown, extraHeaders?: Record<string, string>, noRetry?: boolean | undefined) => Promise<{
|
|
10
|
+
export declare function makeTracedFetch(retries: number[] | (() => Generator<number>), defaultNoRetry: boolean, fetch?: typeof defaultFetch, log?: Logger): (host: string, body: unknown, extraHeaders?: Record<string, string>, noRetry?: boolean | undefined) => Promise<{
|
|
11
11
|
response: any;
|
|
12
12
|
headers: {
|
|
13
13
|
get: (header: string) => string | null | undefined;
|
|
14
14
|
};
|
|
15
15
|
}>;
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93cmFwcGVycy9mZXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFRcEQ7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLGVBQWUsQ0FDN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDN0MsY0FBYyxFQUFFLE9BQU8sRUFDdkIsS0FBSyxzQkFBZSxFQUNwQixHQUFHLENBQUMsRUFBRSxNQUFNOzs7OztHQThCYiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/wrappers/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAQpD;;;;;;GAMG;AACH,wBAAgB,eAAe,
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/wrappers/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAQpD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,EAC7C,cAAc,EAAE,OAAO,EACvB,KAAK,sBAAe,EACpB,GAAG,CAAC,EAAE,MAAM;;;;;GA8Bb"}
|
package/dest/wrappers/fetch.js
CHANGED
|
@@ -5,7 +5,7 @@ import { getTelemetryClient } from '../start.js';
|
|
|
5
5
|
import { ATTR_JSONRPC_METHOD, ATTR_JSONRPC_REQUEST_ID } from '../vendor/attributes.js';
|
|
6
6
|
/**
|
|
7
7
|
* Makes a fetch function that retries based on the given attempts and propagates trace information.
|
|
8
|
-
* @param retries - Sequence of intervals (in seconds) to retry.
|
|
8
|
+
* @param retries - Sequence of intervals (in seconds) to retry, or a factory function returning an iterator for custom/indefinite backoff.
|
|
9
9
|
* @param noRetry - Whether to stop retries on server errors.
|
|
10
10
|
* @param log - Optional logger for logging attempts.
|
|
11
11
|
* @returns A fetch function.
|
|
@@ -26,7 +26,8 @@ import { ATTR_JSONRPC_METHOD, ATTR_JSONRPC_REQUEST_ID } from '../vendor/attribut
|
|
|
26
26
|
...extraHeaders
|
|
27
27
|
};
|
|
28
28
|
propagation.inject(context.active(), headers);
|
|
29
|
-
|
|
29
|
+
const backoff = typeof retries === 'function' ? retries() : makeBackoff(retries);
|
|
30
|
+
return await retry(()=>fetch(host, body, headers, noRetry ?? defaultNoRetry), `JsonRpcClient request to ${host}`, backoff, log, false);
|
|
30
31
|
} catch (err) {
|
|
31
32
|
span.setStatus({
|
|
32
33
|
code: SpanStatusCode.ERROR,
|
package/dest/wrappers/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from './l2_block_stream.js';
|
|
2
1
|
export * from './fetch.js';
|
|
3
2
|
export * from './json_rpc_server.js';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93cmFwcGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLHNCQUFzQixDQUFDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wrappers/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wrappers/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC"}
|
package/dest/wrappers/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type SafeJsonRpcServerOptions } from '@aztec/foundation/json-rpc/server';
|
|
2
2
|
import type { ApiSchemaFor } from '@aztec/stdlib/schemas';
|
|
3
3
|
export declare function createTracedJsonRpcServer<T extends object = any>(handler: T, schema: ApiSchemaFor<T>, options?: SafeJsonRpcServerOptions): import("@aztec/foundation/json-rpc/server").SafeJsonRpcServer;
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbl9ycGNfc2VydmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd3JhcHBlcnMvanNvbl9ycGNfc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLHdCQUF3QixFQUEyQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNHLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSzFELHdCQUFnQix5QkFBeUIsQ0FBQyxDQUFDLFNBQVMsTUFBTSxHQUFHLEdBQUcsRUFDOUQsT0FBTyxFQUFFLENBQUMsRUFDVixNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUN2QixPQUFPLEdBQUUsd0JBQTZCLGlFQWdCdkMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json_rpc_server.d.ts","sourceRoot":"","sources":["../../src/wrappers/json_rpc_server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,wBAAwB,EAA2B,MAAM,mCAAmC,CAAC;AAC3G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"json_rpc_server.d.ts","sourceRoot":"","sources":["../../src/wrappers/json_rpc_server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,wBAAwB,EAA2B,MAAM,mCAAmC,CAAC;AAC3G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAK1D,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG,EAC9D,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,OAAO,GAAE,wBAA6B,iEAgBvC"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { createSafeJsonRpcServer } from '@aztec/foundation/json-rpc/server';
|
|
2
|
-
import {
|
|
2
|
+
import { getOtelJsonRpcServerMetricsMiddleware } from '../json_rpc_server_metrics.js';
|
|
3
|
+
import { getOtelJsonRpcDiagnosticsMiddleware, getOtelJsonRpcPropagationMiddleware } from '../otel_propagation.js';
|
|
3
4
|
export function createTracedJsonRpcServer(handler, schema, options = {}) {
|
|
5
|
+
const otelDiagnostics = getOtelJsonRpcDiagnosticsMiddleware();
|
|
6
|
+
const diagnostic = options.diagnostic ? (ctx, next)=>options.diagnostic(ctx, ()=>otelDiagnostics(ctx, next)) : otelDiagnostics;
|
|
4
7
|
return createSafeJsonRpcServer(handler, schema, {
|
|
5
8
|
...options,
|
|
9
|
+
diagnostic,
|
|
6
10
|
middlewares: [
|
|
11
|
+
getOtelJsonRpcServerMetricsMiddleware(),
|
|
7
12
|
...options.middlewares ?? [],
|
|
8
13
|
getOtelJsonRpcPropagationMiddleware()
|
|
9
14
|
]
|