@effect/opentelemetry 0.56.1 → 0.56.2
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.
|
@@ -25,17 +25,13 @@ const policy = /*#__PURE__*/Schedule.forever.pipe(Schedule.passthrough, /*#__PUR
|
|
|
25
25
|
}));
|
|
26
26
|
/** @internal */
|
|
27
27
|
const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
28
|
+
const clock = yield* Effect.clock;
|
|
28
29
|
const scope = yield* Effect.scope;
|
|
29
30
|
const exportInterval = Duration.decode(options.exportInterval);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const retryAfter = error.response.headers["retry-after"];
|
|
35
|
-
const retryAfterSeconds = retryAfter ? parseInt(retryAfter, 10) : 5;
|
|
36
|
-
return Effect.sleep(Duration.seconds(retryAfterSeconds));
|
|
37
|
-
}), HttpClient.retryTransient({
|
|
38
|
-
schedule: policy
|
|
31
|
+
let disabledUntil = undefined;
|
|
32
|
+
const client = HttpClient.filterStatusOk(yield* HttpClient.HttpClient).pipe(HttpClient.retryTransient({
|
|
33
|
+
schedule: policy,
|
|
34
|
+
times: 3
|
|
39
35
|
}));
|
|
40
36
|
let headers = Headers.unsafeFromRecord({
|
|
41
37
|
"user-agent": `effect-opentelemetry-${options.label}/0.0.0`
|
|
@@ -48,6 +44,11 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
48
44
|
});
|
|
49
45
|
let buffer = [];
|
|
50
46
|
const runExport = Effect.suspend(() => {
|
|
47
|
+
if (disabledUntil !== undefined && clock.unsafeCurrentTimeMillis() < disabledUntil) {
|
|
48
|
+
return Effect.void;
|
|
49
|
+
} else if (disabledUntil !== undefined) {
|
|
50
|
+
disabledUntil = undefined;
|
|
51
|
+
}
|
|
51
52
|
const items = buffer;
|
|
52
53
|
if (options.maxBatchSize !== "disabled") {
|
|
53
54
|
if (buffer.length === 0) {
|
|
@@ -56,20 +57,20 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
56
57
|
buffer = [];
|
|
57
58
|
}
|
|
58
59
|
return client.execute(HttpClientRequest.bodyUnsafeJson(request, options.body(items))).pipe(Effect.asVoid, Effect.withTracerEnabled(false));
|
|
59
|
-
})
|
|
60
|
+
}).pipe(Effect.catchAllCause(cause => {
|
|
61
|
+
if (disabledUntil !== undefined) return Effect.void;
|
|
62
|
+
disabledUntil = clock.unsafeCurrentTimeMillis() + Duration.toMillis("1 minute");
|
|
63
|
+
return Effect.logDebug(`Disabling ${options.label} for 60 seconds`, cause);
|
|
64
|
+
}));
|
|
60
65
|
yield* Scope.addFinalizer(scope, runExport.pipe(Effect.ignore, Effect.interruptible, Effect.timeoutOption(options.shutdownTimeout)));
|
|
61
|
-
|
|
62
|
-
yield* Effect.sleep(exportInterval).pipe(Effect.zipRight(runExport), Effect.forever, Effect.catchAllCause(cause => {
|
|
63
|
-
disabled = true;
|
|
64
|
-
return Effect.logDebug("Failed to export", cause);
|
|
65
|
-
}), Effect.annotateLogs({
|
|
66
|
+
yield* Effect.sleep(exportInterval).pipe(Effect.zipRight(runExport), Effect.forever, Effect.annotateLogs({
|
|
66
67
|
package: "@effect/opentelemetry",
|
|
67
68
|
module: options.label
|
|
68
69
|
}), Effect.forkIn(scope), Effect.interruptible);
|
|
69
70
|
const runFork = yield* FiberSet.makeRuntime().pipe(Effect.interruptible);
|
|
70
71
|
return {
|
|
71
72
|
push(data) {
|
|
72
|
-
if (
|
|
73
|
+
if (disabledUntil !== undefined) return;
|
|
73
74
|
buffer.push(data);
|
|
74
75
|
if (options.maxBatchSize !== "disabled" && buffer.length >= options.maxBatchSize) {
|
|
75
76
|
runFork(runExport);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otlpExporter.js","names":["Headers","_interopRequireWildcard","require","HttpClient","HttpClientError","HttpClientRequest","Duration","Effect","FiberSet","Num","Option","Schedule","Scope","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","policy","forever","pipe","passthrough","addDelay","error","isHttpClientError","_tag","response","status","retryAfter","fromNullable","headers","flatMap","parse","getOrElse","seconds","make","exports","fnUntraced","options","scope","exportInterval","decode","
|
|
1
|
+
{"version":3,"file":"otlpExporter.js","names":["Headers","_interopRequireWildcard","require","HttpClient","HttpClientError","HttpClientRequest","Duration","Effect","FiberSet","Num","Option","Schedule","Scope","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","policy","forever","pipe","passthrough","addDelay","error","isHttpClientError","_tag","response","status","retryAfter","fromNullable","headers","flatMap","parse","getOrElse","seconds","make","exports","fnUntraced","options","clock","scope","exportInterval","decode","disabledUntil","undefined","client","filterStatusOk","retryTransient","schedule","times","unsafeFromRecord","label","merge","fromInput","request","post","url","buffer","runExport","suspend","unsafeCurrentTimeMillis","void","items","maxBatchSize","length","execute","bodyUnsafeJson","body","asVoid","withTracerEnabled","catchAllCause","cause","toMillis","logDebug","addFinalizer","ignore","interruptible","timeoutOption","shutdownTimeout","sleep","zipRight","annotateLogs","package","module","forkIn","runFork","makeRuntime","push","data"],"sources":["../../../src/internal/otlpExporter.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -18,17 +18,13 @@ const policy = /*#__PURE__*/Schedule.forever.pipe(Schedule.passthrough, /*#__PUR
|
|
|
18
18
|
}));
|
|
19
19
|
/** @internal */
|
|
20
20
|
export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
21
|
+
const clock = yield* Effect.clock;
|
|
21
22
|
const scope = yield* Effect.scope;
|
|
22
23
|
const exportInterval = Duration.decode(options.exportInterval);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const retryAfter = error.response.headers["retry-after"];
|
|
28
|
-
const retryAfterSeconds = retryAfter ? parseInt(retryAfter, 10) : 5;
|
|
29
|
-
return Effect.sleep(Duration.seconds(retryAfterSeconds));
|
|
30
|
-
}), HttpClient.retryTransient({
|
|
31
|
-
schedule: policy
|
|
24
|
+
let disabledUntil = undefined;
|
|
25
|
+
const client = HttpClient.filterStatusOk(yield* HttpClient.HttpClient).pipe(HttpClient.retryTransient({
|
|
26
|
+
schedule: policy,
|
|
27
|
+
times: 3
|
|
32
28
|
}));
|
|
33
29
|
let headers = Headers.unsafeFromRecord({
|
|
34
30
|
"user-agent": `effect-opentelemetry-${options.label}/0.0.0`
|
|
@@ -41,6 +37,11 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
41
37
|
});
|
|
42
38
|
let buffer = [];
|
|
43
39
|
const runExport = Effect.suspend(() => {
|
|
40
|
+
if (disabledUntil !== undefined && clock.unsafeCurrentTimeMillis() < disabledUntil) {
|
|
41
|
+
return Effect.void;
|
|
42
|
+
} else if (disabledUntil !== undefined) {
|
|
43
|
+
disabledUntil = undefined;
|
|
44
|
+
}
|
|
44
45
|
const items = buffer;
|
|
45
46
|
if (options.maxBatchSize !== "disabled") {
|
|
46
47
|
if (buffer.length === 0) {
|
|
@@ -49,20 +50,20 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
49
50
|
buffer = [];
|
|
50
51
|
}
|
|
51
52
|
return client.execute(HttpClientRequest.bodyUnsafeJson(request, options.body(items))).pipe(Effect.asVoid, Effect.withTracerEnabled(false));
|
|
52
|
-
})
|
|
53
|
+
}).pipe(Effect.catchAllCause(cause => {
|
|
54
|
+
if (disabledUntil !== undefined) return Effect.void;
|
|
55
|
+
disabledUntil = clock.unsafeCurrentTimeMillis() + Duration.toMillis("1 minute");
|
|
56
|
+
return Effect.logDebug(`Disabling ${options.label} for 60 seconds`, cause);
|
|
57
|
+
}));
|
|
53
58
|
yield* Scope.addFinalizer(scope, runExport.pipe(Effect.ignore, Effect.interruptible, Effect.timeoutOption(options.shutdownTimeout)));
|
|
54
|
-
|
|
55
|
-
yield* Effect.sleep(exportInterval).pipe(Effect.zipRight(runExport), Effect.forever, Effect.catchAllCause(cause => {
|
|
56
|
-
disabled = true;
|
|
57
|
-
return Effect.logDebug("Failed to export", cause);
|
|
58
|
-
}), Effect.annotateLogs({
|
|
59
|
+
yield* Effect.sleep(exportInterval).pipe(Effect.zipRight(runExport), Effect.forever, Effect.annotateLogs({
|
|
59
60
|
package: "@effect/opentelemetry",
|
|
60
61
|
module: options.label
|
|
61
62
|
}), Effect.forkIn(scope), Effect.interruptible);
|
|
62
63
|
const runFork = yield* FiberSet.makeRuntime().pipe(Effect.interruptible);
|
|
63
64
|
return {
|
|
64
65
|
push(data) {
|
|
65
|
-
if (
|
|
66
|
+
if (disabledUntil !== undefined) return;
|
|
66
67
|
buffer.push(data);
|
|
67
68
|
if (options.maxBatchSize !== "disabled" && buffer.length >= options.maxBatchSize) {
|
|
68
69
|
runFork(runExport);
|
|
@@ -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","
|
|
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","clock","scope","exportInterval","decode","disabledUntil","undefined","client","filterStatusOk","retryTransient","schedule","times","unsafeFromRecord","label","merge","fromInput","request","post","url","buffer","runExport","suspend","unsafeCurrentTimeMillis","void","items","maxBatchSize","length","execute","bodyUnsafeJson","body","asVoid","withTracerEnabled","catchAllCause","cause","toMillis","logDebug","addFinalizer","ignore","interruptible","timeoutOption","shutdownTimeout","sleep","zipRight","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.56.
|
|
3
|
+
"version": "0.56.2",
|
|
4
4
|
"description": "OpenTelemetry integration for Effect",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"@opentelemetry/sdk-trace-web": "^2.0.0",
|
|
20
20
|
"@opentelemetry/sdk-logs": "^0.203.0",
|
|
21
21
|
"@opentelemetry/semantic-conventions": "^1.33.0",
|
|
22
|
-
"@effect/platform": "^0.90.
|
|
23
|
-
"effect": "^3.17.
|
|
22
|
+
"@effect/platform": "^0.90.2",
|
|
23
|
+
"effect": "^3.17.7"
|
|
24
24
|
},
|
|
25
25
|
"peerDependenciesMeta": {
|
|
26
26
|
"@opentelemetry/api": {
|
|
@@ -44,19 +44,13 @@ export const make: (
|
|
|
44
44
|
never,
|
|
45
45
|
HttpClient.HttpClient | Scope.Scope
|
|
46
46
|
> = Effect.fnUntraced(function*(options) {
|
|
47
|
+
const clock = yield* Effect.clock
|
|
47
48
|
const scope = yield* Effect.scope
|
|
48
49
|
const exportInterval = Duration.decode(options.exportInterval)
|
|
50
|
+
let disabledUntil: number | undefined = undefined
|
|
49
51
|
|
|
50
52
|
const client = HttpClient.filterStatusOk(yield* HttpClient.HttpClient).pipe(
|
|
51
|
-
HttpClient.
|
|
52
|
-
if (error._tag !== "ResponseError" || error.response.status !== 429) {
|
|
53
|
-
return Effect.void
|
|
54
|
-
}
|
|
55
|
-
const retryAfter = error.response.headers["retry-after"]
|
|
56
|
-
const retryAfterSeconds = retryAfter ? parseInt(retryAfter, 10) : 5
|
|
57
|
-
return Effect.sleep(Duration.seconds(retryAfterSeconds))
|
|
58
|
-
}),
|
|
59
|
-
HttpClient.retryTransient({ schedule: policy })
|
|
53
|
+
HttpClient.retryTransient({ schedule: policy, times: 3 })
|
|
60
54
|
)
|
|
61
55
|
|
|
62
56
|
let headers = Headers.unsafeFromRecord({
|
|
@@ -69,6 +63,11 @@ export const make: (
|
|
|
69
63
|
const request = HttpClientRequest.post(options.url, { headers })
|
|
70
64
|
let buffer: Array<any> = []
|
|
71
65
|
const runExport = Effect.suspend(() => {
|
|
66
|
+
if (disabledUntil !== undefined && clock.unsafeCurrentTimeMillis() < disabledUntil) {
|
|
67
|
+
return Effect.void
|
|
68
|
+
} else if (disabledUntil !== undefined) {
|
|
69
|
+
disabledUntil = undefined
|
|
70
|
+
}
|
|
72
71
|
const items = buffer
|
|
73
72
|
if (options.maxBatchSize !== "disabled") {
|
|
74
73
|
if (buffer.length === 0) {
|
|
@@ -82,7 +81,13 @@ export const make: (
|
|
|
82
81
|
Effect.asVoid,
|
|
83
82
|
Effect.withTracerEnabled(false)
|
|
84
83
|
)
|
|
85
|
-
})
|
|
84
|
+
}).pipe(
|
|
85
|
+
Effect.catchAllCause((cause) => {
|
|
86
|
+
if (disabledUntil !== undefined) return Effect.void
|
|
87
|
+
disabledUntil = clock.unsafeCurrentTimeMillis() + Duration.toMillis("1 minute")
|
|
88
|
+
return Effect.logDebug(`Disabling ${options.label} for 60 seconds`, cause)
|
|
89
|
+
})
|
|
90
|
+
)
|
|
86
91
|
|
|
87
92
|
yield* Scope.addFinalizer(
|
|
88
93
|
scope,
|
|
@@ -93,15 +98,9 @@ export const make: (
|
|
|
93
98
|
)
|
|
94
99
|
)
|
|
95
100
|
|
|
96
|
-
let disabled = false
|
|
97
|
-
|
|
98
101
|
yield* Effect.sleep(exportInterval).pipe(
|
|
99
102
|
Effect.zipRight(runExport),
|
|
100
103
|
Effect.forever,
|
|
101
|
-
Effect.catchAllCause((cause) => {
|
|
102
|
-
disabled = true
|
|
103
|
-
return Effect.logDebug("Failed to export", cause)
|
|
104
|
-
}),
|
|
105
104
|
Effect.annotateLogs({
|
|
106
105
|
package: "@effect/opentelemetry",
|
|
107
106
|
module: options.label
|
|
@@ -115,7 +114,7 @@ export const make: (
|
|
|
115
114
|
)
|
|
116
115
|
return {
|
|
117
116
|
push(data) {
|
|
118
|
-
if (
|
|
117
|
+
if (disabledUntil !== undefined) return
|
|
119
118
|
buffer.push(data)
|
|
120
119
|
if (options.maxBatchSize !== "disabled" && buffer.length >= options.maxBatchSize) {
|
|
121
120
|
runFork(runExport)
|