@effect/opentelemetry 0.46.12 → 0.46.14
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/Logger/package.json +2 -2
- package/Metrics/package.json +2 -2
- package/NodeSdk/package.json +2 -2
- package/Otlp/package.json +2 -2
- package/OtlpLogger/package.json +2 -2
- package/OtlpMetrics/package.json +2 -2
- package/OtlpResource/package.json +2 -2
- package/OtlpTracer/package.json +2 -2
- package/Resource/package.json +2 -2
- package/Tracer/package.json +2 -2
- package/WebSdk/package.json +2 -2
- package/dist/cjs/Logger.js +1 -1
- package/dist/cjs/Logger.js.map +1 -1
- package/dist/cjs/Metrics.js.map +1 -1
- package/dist/cjs/NodeSdk.js +10 -4
- package/dist/cjs/NodeSdk.js.map +1 -1
- package/dist/cjs/Otlp.js +6 -3
- package/dist/cjs/Otlp.js.map +1 -1
- package/dist/cjs/OtlpLogger.js +2 -1
- package/dist/cjs/OtlpLogger.js.map +1 -1
- package/dist/cjs/OtlpMetrics.js +2 -1
- package/dist/cjs/OtlpMetrics.js.map +1 -1
- package/dist/cjs/OtlpTracer.js +2 -1
- package/dist/cjs/OtlpTracer.js.map +1 -1
- package/dist/cjs/internal/metrics.js +3 -3
- package/dist/cjs/internal/metrics.js.map +1 -1
- package/dist/cjs/internal/otlpExporter.js +1 -1
- package/dist/cjs/internal/otlpExporter.js.map +1 -1
- package/dist/dts/Logger.d.ts +4 -1
- package/dist/dts/Logger.d.ts.map +1 -1
- package/dist/dts/Metrics.d.ts +4 -1
- package/dist/dts/Metrics.d.ts.map +1 -1
- package/dist/dts/NodeSdk.d.ts +5 -1
- package/dist/dts/NodeSdk.d.ts.map +1 -1
- package/dist/dts/Otlp.d.ts +1 -0
- package/dist/dts/Otlp.d.ts.map +1 -1
- package/dist/dts/OtlpLogger.d.ts +2 -0
- package/dist/dts/OtlpLogger.d.ts.map +1 -1
- package/dist/dts/OtlpMetrics.d.ts +2 -0
- package/dist/dts/OtlpMetrics.d.ts.map +1 -1
- package/dist/dts/OtlpTracer.d.ts +2 -0
- package/dist/dts/OtlpTracer.d.ts.map +1 -1
- package/dist/esm/Logger.js +1 -1
- package/dist/esm/Logger.js.map +1 -1
- package/dist/esm/Metrics.js.map +1 -1
- package/dist/esm/NodeSdk.js +10 -4
- package/dist/esm/NodeSdk.js.map +1 -1
- package/dist/esm/Otlp.js +6 -3
- package/dist/esm/Otlp.js.map +1 -1
- package/dist/esm/OtlpLogger.js +2 -1
- package/dist/esm/OtlpLogger.js.map +1 -1
- package/dist/esm/OtlpMetrics.js +2 -1
- package/dist/esm/OtlpMetrics.js.map +1 -1
- package/dist/esm/OtlpTracer.js +2 -1
- package/dist/esm/OtlpTracer.js.map +1 -1
- package/dist/esm/internal/metrics.js +3 -3
- package/dist/esm/internal/metrics.js.map +1 -1
- package/dist/esm/internal/otlpExporter.js +1 -1
- package/dist/esm/internal/otlpExporter.js.map +1 -1
- package/index/package.json +6 -0
- package/package.json +12 -3
- package/src/Logger.ts +10 -3
- package/src/Metrics.ts +7 -1
- package/src/NodeSdk.ts +23 -5
- package/src/Otlp.ts +7 -3
- package/src/OtlpLogger.ts +4 -1
- package/src/OtlpMetrics.ts +4 -1
- package/src/OtlpTracer.ts +4 -1
- package/src/internal/metrics.ts +15 -5
- package/src/internal/otlpExporter.ts +9 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otlpExporter.js","names":["Headers","HttpClient","HttpClientError","HttpClientRequest","Duration","Effect","FiberSet","Num","Option","Schedule","Scope","policy","forever","pipe","passthrough","addDelay","error","isHttpClientError","_tag","response","status","retryAfter","fromNullable","headers","flatMap","parse","getOrElse","seconds","make","fnUntraced","options","scope","exportInterval","decode","client","filterStatusOk","tapError","void","retryAfterSeconds","parseInt","sleep","retryTransient","schedule","unsafeFromRecord","label","merge","fromInput","request","post","url","buffer","runExport","suspend","items","maxBatchSize","length","execute","bodyUnsafeJson","body","asVoid","withTracerEnabled","addFinalizer","ignore","disabled","zipRight","catchAllCause","cause","logDebug","annotateLogs","package","module","forkIn","
|
|
1
|
+
{"version":3,"file":"otlpExporter.js","names":["Headers","HttpClient","HttpClientError","HttpClientRequest","Duration","Effect","FiberSet","Num","Option","Schedule","Scope","policy","forever","pipe","passthrough","addDelay","error","isHttpClientError","_tag","response","status","retryAfter","fromNullable","headers","flatMap","parse","getOrElse","seconds","make","fnUntraced","options","scope","exportInterval","decode","client","filterStatusOk","tapError","void","retryAfterSeconds","parseInt","sleep","retryTransient","schedule","unsafeFromRecord","label","merge","fromInput","request","post","url","buffer","runExport","suspend","items","maxBatchSize","length","execute","bodyUnsafeJson","body","asVoid","withTracerEnabled","addFinalizer","ignore","interruptible","timeoutOption","shutdownTimeout","disabled","zipRight","catchAllCause","cause","logDebug","annotateLogs","package","module","forkIn","runFork","makeRuntime","push","data"],"sources":["../../../src/internal/otlpExporter.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/opentelemetry",
|
|
3
|
-
"version": "0.46.
|
|
3
|
+
"version": "0.46.14",
|
|
4
4
|
"description": "OpenTelemetry integration for Effect",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"directory": "packages/opentelemetry"
|
|
10
10
|
},
|
|
11
11
|
"sideEffects": [],
|
|
12
|
+
"homepage": "https://effect.website",
|
|
12
13
|
"peerDependencies": {
|
|
13
14
|
"@opentelemetry/api": "^1.9",
|
|
14
15
|
"@opentelemetry/resources": "^2.0.0",
|
|
@@ -17,8 +18,8 @@
|
|
|
17
18
|
"@opentelemetry/sdk-trace-node": "^2.0.0",
|
|
18
19
|
"@opentelemetry/sdk-trace-web": "^2.0.0",
|
|
19
20
|
"@opentelemetry/semantic-conventions": "^1.30.0",
|
|
20
|
-
"@effect/platform": "^0.80.
|
|
21
|
-
"effect": "^3.14.
|
|
21
|
+
"@effect/platform": "^0.80.17",
|
|
22
|
+
"effect": "^3.14.17"
|
|
22
23
|
},
|
|
23
24
|
"peerDependenciesMeta": {
|
|
24
25
|
"@opentelemetry/api": {
|
|
@@ -110,6 +111,11 @@
|
|
|
110
111
|
"types": "./dist/dts/WebSdk.d.ts",
|
|
111
112
|
"import": "./dist/esm/WebSdk.js",
|
|
112
113
|
"default": "./dist/cjs/WebSdk.js"
|
|
114
|
+
},
|
|
115
|
+
"./index": {
|
|
116
|
+
"types": "./dist/dts/index.d.ts",
|
|
117
|
+
"import": "./dist/esm/index.js",
|
|
118
|
+
"default": "./dist/cjs/index.js"
|
|
113
119
|
}
|
|
114
120
|
},
|
|
115
121
|
"typesVersions": {
|
|
@@ -146,6 +152,9 @@
|
|
|
146
152
|
],
|
|
147
153
|
"WebSdk": [
|
|
148
154
|
"./dist/dts/WebSdk.d.ts"
|
|
155
|
+
],
|
|
156
|
+
"index": [
|
|
157
|
+
"./dist/dts/index.d.ts"
|
|
149
158
|
]
|
|
150
159
|
}
|
|
151
160
|
}
|
package/src/Logger.ts
CHANGED
|
@@ -5,6 +5,7 @@ import * as Otel from "@opentelemetry/sdk-logs"
|
|
|
5
5
|
import type { NonEmptyReadonlyArray } from "effect/Array"
|
|
6
6
|
import * as Arr from "effect/Array"
|
|
7
7
|
import * as Context from "effect/Context"
|
|
8
|
+
import type { DurationInput } from "effect/Duration"
|
|
8
9
|
import * as Effect from "effect/Effect"
|
|
9
10
|
import * as FiberId from "effect/FiberId"
|
|
10
11
|
import * as Layer from "effect/Layer"
|
|
@@ -85,7 +86,9 @@ export const layerLoggerReplace: Layer.Layer<
|
|
|
85
86
|
*/
|
|
86
87
|
export const layerLoggerProvider = (
|
|
87
88
|
processor: Otel.LogRecordProcessor | NonEmptyReadonlyArray<Otel.LogRecordProcessor>,
|
|
88
|
-
config?: Omit<Otel.LoggerProviderConfig, "resource">
|
|
89
|
+
config?: Omit<Otel.LoggerProviderConfig, "resource"> & {
|
|
90
|
+
readonly shutdownTimeout?: DurationInput | undefined
|
|
91
|
+
}
|
|
89
92
|
): Layer.Layer<OtelLoggerProvider, never, Resource> =>
|
|
90
93
|
Layer.scoped(
|
|
91
94
|
OtelLoggerProvider,
|
|
@@ -104,8 +107,12 @@ export const layerLoggerProvider = (
|
|
|
104
107
|
return provider
|
|
105
108
|
}),
|
|
106
109
|
(provider) =>
|
|
107
|
-
Effect.
|
|
110
|
+
Effect.promise(
|
|
108
111
|
() => provider.forceFlush().then(() => provider.shutdown())
|
|
109
|
-
)
|
|
112
|
+
).pipe(
|
|
113
|
+
Effect.ignoreLogged,
|
|
114
|
+
Effect.interruptible,
|
|
115
|
+
Effect.timeoutOption(config?.shutdownTimeout ?? 3000)
|
|
116
|
+
)
|
|
110
117
|
))
|
|
111
118
|
)
|
package/src/Metrics.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { MetricProducer, MetricReader } from "@opentelemetry/sdk-metrics"
|
|
5
5
|
import type { NonEmptyReadonlyArray } from "effect/Array"
|
|
6
|
+
import type { DurationInput } from "effect/Duration"
|
|
6
7
|
import type * as Effect from "effect/Effect"
|
|
7
8
|
import type { LazyArg } from "effect/Function"
|
|
8
9
|
import type { Layer } from "effect/Layer"
|
|
@@ -30,5 +31,10 @@ export const registerProducer: (
|
|
|
30
31
|
* @category layers
|
|
31
32
|
*/
|
|
32
33
|
export const layer: (
|
|
33
|
-
evaluate: LazyArg<MetricReader | NonEmptyReadonlyArray<MetricReader
|
|
34
|
+
evaluate: LazyArg<MetricReader | NonEmptyReadonlyArray<MetricReader>>,
|
|
35
|
+
options?: {
|
|
36
|
+
readonly shutdownTimeout?:
|
|
37
|
+
| DurationInput
|
|
38
|
+
| undefined
|
|
39
|
+
}
|
|
34
40
|
) => Layer<never, never, Resource> = internal.layer
|
package/src/NodeSdk.ts
CHANGED
|
@@ -7,6 +7,7 @@ import type { MetricReader } from "@opentelemetry/sdk-metrics"
|
|
|
7
7
|
import type { SpanProcessor, TracerConfig } from "@opentelemetry/sdk-trace-base"
|
|
8
8
|
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node"
|
|
9
9
|
import type { NonEmptyReadonlyArray } from "effect/Array"
|
|
10
|
+
import type { DurationInput } from "effect/Duration"
|
|
10
11
|
import * as Effect from "effect/Effect"
|
|
11
12
|
import { constant, type LazyArg } from "effect/Function"
|
|
12
13
|
import * as Layer from "effect/Layer"
|
|
@@ -31,6 +32,7 @@ export interface Configuration {
|
|
|
31
32
|
readonly serviceVersion?: string
|
|
32
33
|
readonly attributes?: OtelApi.Attributes
|
|
33
34
|
} | undefined
|
|
35
|
+
readonly shutdownTimeout?: DurationInput | undefined
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
/**
|
|
@@ -39,7 +41,9 @@ export interface Configuration {
|
|
|
39
41
|
*/
|
|
40
42
|
export const layerTracerProvider = (
|
|
41
43
|
processor: SpanProcessor | NonEmptyReadonlyArray<SpanProcessor>,
|
|
42
|
-
config?: Omit<TracerConfig, "resource">
|
|
44
|
+
config?: Omit<TracerConfig, "resource"> & {
|
|
45
|
+
readonly shutdownTimeout?: DurationInput | undefined
|
|
46
|
+
}
|
|
43
47
|
): Layer.Layer<Tracer.OtelTracerProvider, never, Resource.Resource> =>
|
|
44
48
|
Layer.scoped(
|
|
45
49
|
Tracer.OtelTracerProvider,
|
|
@@ -55,7 +59,12 @@ export const layerTracerProvider = (
|
|
|
55
59
|
})
|
|
56
60
|
return provider
|
|
57
61
|
}),
|
|
58
|
-
(provider) =>
|
|
62
|
+
(provider) =>
|
|
63
|
+
Effect.promise(() => provider.forceFlush().then(() => provider.shutdown())).pipe(
|
|
64
|
+
Effect.ignoreLogged,
|
|
65
|
+
Effect.interruptible,
|
|
66
|
+
Effect.timeoutOption(config?.shutdownTimeout ?? 3000)
|
|
67
|
+
)
|
|
59
68
|
)
|
|
60
69
|
)
|
|
61
70
|
)
|
|
@@ -87,17 +96,26 @@ export const layer: {
|
|
|
87
96
|
const ResourceLive = Resource.layerFromEnv(config.resource && Resource.configToAttributes(config.resource))
|
|
88
97
|
|
|
89
98
|
const TracerLive = isNonEmpty(config.spanProcessor)
|
|
90
|
-
? Layer.provide(
|
|
99
|
+
? Layer.provide(
|
|
100
|
+
Tracer.layer,
|
|
101
|
+
layerTracerProvider(config.spanProcessor, {
|
|
102
|
+
...config.tracerConfig,
|
|
103
|
+
shutdownTimeout: config.shutdownTimeout
|
|
104
|
+
})
|
|
105
|
+
)
|
|
91
106
|
: Layer.empty
|
|
92
107
|
|
|
93
108
|
const MetricsLive = isNonEmpty(config.metricReader)
|
|
94
|
-
? Metrics.layer(constant(config.metricReader))
|
|
109
|
+
? Metrics.layer(constant(config.metricReader), config)
|
|
95
110
|
: Layer.empty
|
|
96
111
|
|
|
97
112
|
const LoggerLive = isNonEmpty(config.logRecordProcessor)
|
|
98
113
|
? Layer.provide(
|
|
99
114
|
Logger.layerLoggerAdd,
|
|
100
|
-
Logger.layerLoggerProvider(config.logRecordProcessor,
|
|
115
|
+
Logger.layerLoggerProvider(config.logRecordProcessor, {
|
|
116
|
+
...config.loggerProviderConfig,
|
|
117
|
+
shutdownTimeout: config.shutdownTimeout
|
|
118
|
+
})
|
|
101
119
|
)
|
|
102
120
|
: Layer.empty
|
|
103
121
|
|
package/src/Otlp.ts
CHANGED
|
@@ -29,6 +29,7 @@ export const layer = (options: {
|
|
|
29
29
|
readonly loggerExportInterval?: Duration.DurationInput | undefined
|
|
30
30
|
readonly metricsExportInterval?: Duration.DurationInput | undefined
|
|
31
31
|
readonly tracerExportInterval?: Duration.DurationInput | undefined
|
|
32
|
+
readonly shutdownTimeout?: Duration.DurationInput | undefined
|
|
32
33
|
}): Layer.Layer<never, never, HttpClient.HttpClient> =>
|
|
33
34
|
Layer.mergeAll(
|
|
34
35
|
OtlpLogger.layer({
|
|
@@ -37,13 +38,15 @@ export const layer = (options: {
|
|
|
37
38
|
resource: options.resource,
|
|
38
39
|
headers: options.headers,
|
|
39
40
|
exportInterval: options.loggerExportInterval,
|
|
40
|
-
maxBatchSize: options.maxBatchSize
|
|
41
|
+
maxBatchSize: options.maxBatchSize,
|
|
42
|
+
shutdownTimeout: options.shutdownTimeout
|
|
41
43
|
}),
|
|
42
44
|
OtlpMetrics.layer({
|
|
43
45
|
url: `${options.baseUrl}/v1/metrics`,
|
|
44
46
|
resource: options.resource,
|
|
45
47
|
headers: options.headers,
|
|
46
|
-
exportInterval: options.metricsExportInterval
|
|
48
|
+
exportInterval: options.metricsExportInterval,
|
|
49
|
+
shutdownTimeout: options.shutdownTimeout
|
|
47
50
|
}),
|
|
48
51
|
OtlpTracer.layer({
|
|
49
52
|
url: `${options.baseUrl}/v1/traces`,
|
|
@@ -51,6 +54,7 @@ export const layer = (options: {
|
|
|
51
54
|
headers: options.headers,
|
|
52
55
|
exportInterval: options.tracerExportInterval,
|
|
53
56
|
maxBatchSize: options.maxBatchSize,
|
|
54
|
-
context: options.tracerContext
|
|
57
|
+
context: options.tracerContext,
|
|
58
|
+
shutdownTimeout: options.shutdownTimeout
|
|
55
59
|
})
|
|
56
60
|
)
|
package/src/OtlpLogger.ts
CHANGED
|
@@ -33,6 +33,7 @@ export const make: (
|
|
|
33
33
|
readonly headers?: Headers.Input | undefined
|
|
34
34
|
readonly exportInterval?: Duration.DurationInput | undefined
|
|
35
35
|
readonly maxBatchSize?: number | undefined
|
|
36
|
+
readonly shutdownTimeout?: Duration.DurationInput | undefined
|
|
36
37
|
}
|
|
37
38
|
) => Effect.Effect<
|
|
38
39
|
Logger.Logger<unknown, void>,
|
|
@@ -58,7 +59,8 @@ export const make: (
|
|
|
58
59
|
logRecords: data
|
|
59
60
|
}]
|
|
60
61
|
}]
|
|
61
|
-
})
|
|
62
|
+
}),
|
|
63
|
+
shutdownTimeout: options.shutdownTimeout ?? Duration.seconds(3)
|
|
62
64
|
})
|
|
63
65
|
|
|
64
66
|
return Logger.make((options) => {
|
|
@@ -81,6 +83,7 @@ export const layer = (options: {
|
|
|
81
83
|
readonly headers?: Headers.Input | undefined
|
|
82
84
|
readonly exportInterval?: Duration.DurationInput | undefined
|
|
83
85
|
readonly maxBatchSize?: number | undefined
|
|
86
|
+
readonly shutdownTimeout?: Duration.DurationInput | undefined
|
|
84
87
|
}): Layer.Layer<never, never, HttpClient.HttpClient> =>
|
|
85
88
|
options.replaceLogger ? Logger.replaceScoped(options.replaceLogger, make(options)) : Logger.addScoped(make(options))
|
|
86
89
|
|
package/src/OtlpMetrics.ts
CHANGED
|
@@ -29,6 +29,7 @@ export const make: (options: {
|
|
|
29
29
|
}
|
|
30
30
|
readonly headers?: Headers.Input | undefined
|
|
31
31
|
readonly exportInterval?: Duration.DurationInput | undefined
|
|
32
|
+
readonly shutdownTimeout?: Duration.DurationInput | undefined
|
|
32
33
|
}) => Effect.Effect<
|
|
33
34
|
void,
|
|
34
35
|
never,
|
|
@@ -270,7 +271,8 @@ export const make: (options: {
|
|
|
270
271
|
headers: options.headers,
|
|
271
272
|
maxBatchSize: "disabled",
|
|
272
273
|
exportInterval: options.exportInterval ?? Duration.seconds(10),
|
|
273
|
-
body: snapshot
|
|
274
|
+
body: snapshot,
|
|
275
|
+
shutdownTimeout: options.shutdownTimeout ?? Duration.seconds(3)
|
|
274
276
|
})
|
|
275
277
|
})
|
|
276
278
|
|
|
@@ -287,6 +289,7 @@ export const layer = (options: {
|
|
|
287
289
|
}
|
|
288
290
|
readonly headers?: Headers.Input | undefined
|
|
289
291
|
readonly exportInterval?: Duration.DurationInput | undefined
|
|
292
|
+
readonly shutdownTimeout?: Duration.DurationInput | undefined
|
|
290
293
|
}): Layer.Layer<never, never, HttpClient.HttpClient> => Layer.scopedDiscard(make(options))
|
|
291
294
|
|
|
292
295
|
// internal
|
package/src/OtlpTracer.ts
CHANGED
|
@@ -34,6 +34,7 @@ export const make: (
|
|
|
34
34
|
readonly exportInterval?: Duration.DurationInput | undefined
|
|
35
35
|
readonly maxBatchSize?: number | undefined
|
|
36
36
|
readonly context?: (<X>(f: () => X, span: Tracer.AnySpan) => X) | undefined
|
|
37
|
+
readonly shutdownTimeout?: Duration.DurationInput | undefined
|
|
37
38
|
}
|
|
38
39
|
) => Effect.Effect<
|
|
39
40
|
Tracer.Tracer,
|
|
@@ -62,7 +63,8 @@ export const make: (
|
|
|
62
63
|
}]
|
|
63
64
|
}
|
|
64
65
|
return data
|
|
65
|
-
}
|
|
66
|
+
},
|
|
67
|
+
shutdownTimeout: options.shutdownTimeout ?? Duration.seconds(3)
|
|
66
68
|
})
|
|
67
69
|
|
|
68
70
|
return Tracer.make({
|
|
@@ -110,6 +112,7 @@ export const layer = (options: {
|
|
|
110
112
|
readonly exportInterval?: Duration.DurationInput | undefined
|
|
111
113
|
readonly maxBatchSize?: number | undefined
|
|
112
114
|
readonly context?: (<X>(f: () => X, span: Tracer.AnySpan) => X) | undefined
|
|
115
|
+
readonly shutdownTimeout?: Duration.DurationInput | undefined
|
|
113
116
|
}): Layer.Layer<never, never, HttpClient.HttpClient> => Layer.unwrapScoped(Effect.map(make(options), Layer.setTracer))
|
|
114
117
|
|
|
115
118
|
// internal
|
package/src/internal/metrics.ts
CHANGED
|
@@ -13,6 +13,7 @@ import type {
|
|
|
13
13
|
import { AggregationTemporality, DataPointType, InstrumentType } from "@opentelemetry/sdk-metrics"
|
|
14
14
|
import type { InstrumentDescriptor } from "@opentelemetry/sdk-metrics/build/src/InstrumentDescriptor.js"
|
|
15
15
|
import * as Arr from "effect/Array"
|
|
16
|
+
import type { DurationInput } from "effect/Duration"
|
|
16
17
|
import * as Effect from "effect/Effect"
|
|
17
18
|
import type { LazyArg } from "effect/Function"
|
|
18
19
|
import * as Layer from "effect/Layer"
|
|
@@ -297,7 +298,10 @@ export const makeProducer = Effect.map(
|
|
|
297
298
|
/** @internal */
|
|
298
299
|
export const registerProducer = (
|
|
299
300
|
self: MetricProducer,
|
|
300
|
-
metricReader: LazyArg<MetricReader | Arr.NonEmptyReadonlyArray<MetricReader
|
|
301
|
+
metricReader: LazyArg<MetricReader | Arr.NonEmptyReadonlyArray<MetricReader>>,
|
|
302
|
+
options?: {
|
|
303
|
+
readonly shutdownTimeout?: DurationInput | undefined
|
|
304
|
+
}
|
|
301
305
|
) =>
|
|
302
306
|
Effect.acquireRelease(
|
|
303
307
|
Effect.sync(() => {
|
|
@@ -307,16 +311,22 @@ export const registerProducer = (
|
|
|
307
311
|
return readers
|
|
308
312
|
}),
|
|
309
313
|
(readers) =>
|
|
310
|
-
Effect.
|
|
314
|
+
Effect.promise(() =>
|
|
311
315
|
Promise.all(
|
|
312
316
|
readers.map((reader) => reader.shutdown())
|
|
313
317
|
)
|
|
314
|
-
)
|
|
318
|
+
).pipe(
|
|
319
|
+
Effect.ignoreLogged,
|
|
320
|
+
Effect.interruptible,
|
|
321
|
+
Effect.timeoutOption(options?.shutdownTimeout ?? 3000)
|
|
322
|
+
)
|
|
315
323
|
)
|
|
316
324
|
|
|
317
325
|
/** @internal */
|
|
318
|
-
export const layer = (evaluate: LazyArg<MetricReader | Arr.NonEmptyReadonlyArray<MetricReader
|
|
326
|
+
export const layer = (evaluate: LazyArg<MetricReader | Arr.NonEmptyReadonlyArray<MetricReader>>, options?: {
|
|
327
|
+
readonly shutdownTimeout?: DurationInput | undefined
|
|
328
|
+
}) =>
|
|
319
329
|
Layer.scopedDiscard(Effect.flatMap(
|
|
320
330
|
makeProducer,
|
|
321
|
-
(producer) => registerProducer(producer, evaluate)
|
|
331
|
+
(producer) => registerProducer(producer, evaluate, options)
|
|
322
332
|
))
|
|
@@ -37,6 +37,7 @@ export const make: (
|
|
|
37
37
|
readonly exportInterval: Duration.DurationInput
|
|
38
38
|
readonly maxBatchSize: number | "disabled"
|
|
39
39
|
readonly body: (data: Array<any>) => unknown
|
|
40
|
+
readonly shutdownTimeout: Duration.DurationInput
|
|
40
41
|
}
|
|
41
42
|
) => Effect.Effect<
|
|
42
43
|
{ readonly push: (data: unknown) => void },
|
|
@@ -83,7 +84,14 @@ export const make: (
|
|
|
83
84
|
)
|
|
84
85
|
})
|
|
85
86
|
|
|
86
|
-
yield* Scope.addFinalizer(
|
|
87
|
+
yield* Scope.addFinalizer(
|
|
88
|
+
scope,
|
|
89
|
+
runExport.pipe(
|
|
90
|
+
Effect.ignore,
|
|
91
|
+
Effect.interruptible,
|
|
92
|
+
Effect.timeoutOption(options.shutdownTimeout)
|
|
93
|
+
)
|
|
94
|
+
)
|
|
87
95
|
|
|
88
96
|
let disabled = false
|
|
89
97
|
|