@effect/cluster 0.50.6 → 0.51.0
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/RunnerStorage/package.json +6 -0
- package/SqlRunnerStorage/package.json +6 -0
- package/dist/cjs/ClusterError.js +2 -24
- package/dist/cjs/ClusterError.js.map +1 -1
- package/dist/cjs/ClusterMetrics.js +13 -15
- package/dist/cjs/ClusterMetrics.js.map +1 -1
- package/dist/cjs/ClusterWorkflowEngine.js +41 -81
- package/dist/cjs/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cjs/Entity.js.map +1 -1
- package/dist/cjs/EntityAddress.js +9 -1
- package/dist/cjs/EntityAddress.js.map +1 -1
- package/dist/cjs/EntityId.js +7 -1
- package/dist/cjs/EntityId.js.map +1 -1
- package/dist/cjs/EntityProxy.js +1 -1
- package/dist/cjs/EntityProxy.js.map +1 -1
- package/dist/cjs/HttpRunner.js +69 -43
- package/dist/cjs/HttpRunner.js.map +1 -1
- package/dist/cjs/MessageStorage.js +64 -16
- package/dist/cjs/MessageStorage.js.map +1 -1
- package/dist/cjs/Runner.js +3 -3
- package/dist/cjs/Runner.js.map +1 -1
- package/dist/cjs/RunnerAddress.js +7 -0
- package/dist/cjs/RunnerAddress.js.map +1 -1
- package/dist/cjs/RunnerHealth.js +91 -32
- package/dist/cjs/RunnerHealth.js.map +1 -1
- package/dist/cjs/RunnerServer.js +38 -24
- package/dist/cjs/RunnerServer.js.map +1 -1
- package/dist/cjs/RunnerStorage.js +100 -0
- package/dist/cjs/RunnerStorage.js.map +1 -0
- package/dist/cjs/Runners.js +18 -22
- package/dist/cjs/Runners.js.map +1 -1
- package/dist/cjs/ShardId.js +17 -7
- package/dist/cjs/ShardId.js.map +1 -1
- package/dist/cjs/Sharding.js +435 -318
- package/dist/cjs/Sharding.js.map +1 -1
- package/dist/cjs/ShardingConfig.js +10 -14
- package/dist/cjs/ShardingConfig.js.map +1 -1
- package/dist/cjs/Snowflake.js +1 -1
- package/dist/cjs/SocketRunner.js +1 -1
- package/dist/cjs/SocketRunner.js.map +1 -1
- package/dist/cjs/SqlMessageStorage.js +22 -28
- package/dist/cjs/SqlMessageStorage.js.map +1 -1
- package/dist/cjs/SqlRunnerStorage.js +378 -0
- package/dist/cjs/SqlRunnerStorage.js.map +1 -0
- package/dist/cjs/index.js +5 -15
- package/dist/cjs/internal/entityManager.js +40 -9
- package/dist/cjs/internal/entityManager.js.map +1 -1
- package/dist/dts/ClusterError.d.ts +0 -22
- package/dist/dts/ClusterError.d.ts.map +1 -1
- package/dist/dts/ClusterMetrics.d.ts +4 -14
- package/dist/dts/ClusterMetrics.d.ts.map +1 -1
- package/dist/dts/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/dts/Entity.d.ts +2 -2
- package/dist/dts/Entity.d.ts.map +1 -1
- package/dist/dts/EntityAddress.d.ts +11 -0
- package/dist/dts/EntityAddress.d.ts.map +1 -1
- package/dist/dts/EntityId.d.ts +5 -0
- package/dist/dts/EntityId.d.ts.map +1 -1
- package/dist/dts/EntityProxy.d.ts +5 -6
- package/dist/dts/EntityProxy.d.ts.map +1 -1
- package/dist/dts/HttpRunner.d.ts +48 -25
- package/dist/dts/HttpRunner.d.ts.map +1 -1
- package/dist/dts/MessageStorage.d.ts +13 -5
- package/dist/dts/MessageStorage.d.ts.map +1 -1
- package/dist/dts/Runner.d.ts +4 -4
- package/dist/dts/Runner.d.ts.map +1 -1
- package/dist/dts/RunnerAddress.d.ts +5 -0
- package/dist/dts/RunnerAddress.d.ts.map +1 -1
- package/dist/dts/RunnerHealth.d.ts +24 -16
- package/dist/dts/RunnerHealth.d.ts.map +1 -1
- package/dist/dts/RunnerServer.d.ts +5 -4
- package/dist/dts/RunnerServer.d.ts.map +1 -1
- package/dist/dts/{ShardStorage.d.ts → RunnerStorage.d.ts} +41 -54
- package/dist/dts/RunnerStorage.d.ts.map +1 -0
- package/dist/dts/Runners.d.ts +15 -11
- package/dist/dts/Runners.d.ts.map +1 -1
- package/dist/dts/ShardId.d.ts +1 -1
- package/dist/dts/ShardId.d.ts.map +1 -1
- package/dist/dts/Sharding.d.ts +20 -10
- package/dist/dts/Sharding.d.ts.map +1 -1
- package/dist/dts/ShardingConfig.d.ts +40 -14
- package/dist/dts/ShardingConfig.d.ts.map +1 -1
- package/dist/dts/SocketRunner.d.ts +4 -3
- package/dist/dts/SocketRunner.d.ts.map +1 -1
- package/dist/dts/SqlMessageStorage.d.ts +2 -3
- package/dist/dts/SqlMessageStorage.d.ts.map +1 -1
- package/dist/dts/SqlRunnerStorage.d.ts +40 -0
- package/dist/dts/SqlRunnerStorage.d.ts.map +1 -0
- package/dist/dts/index.d.ts +4 -24
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/esm/ClusterError.js +0 -21
- package/dist/esm/ClusterError.js.map +1 -1
- package/dist/esm/ClusterMetrics.js +12 -14
- package/dist/esm/ClusterMetrics.js.map +1 -1
- package/dist/esm/ClusterWorkflowEngine.js +41 -81
- package/dist/esm/ClusterWorkflowEngine.js.map +1 -1
- package/dist/esm/Entity.js.map +1 -1
- package/dist/esm/EntityAddress.js +7 -0
- package/dist/esm/EntityAddress.js.map +1 -1
- package/dist/esm/EntityId.js +5 -0
- package/dist/esm/EntityId.js.map +1 -1
- package/dist/esm/EntityProxy.js +2 -2
- package/dist/esm/EntityProxy.js.map +1 -1
- package/dist/esm/HttpRunner.js +62 -39
- package/dist/esm/HttpRunner.js.map +1 -1
- package/dist/esm/MessageStorage.js +65 -17
- package/dist/esm/MessageStorage.js.map +1 -1
- package/dist/esm/Runner.js +3 -3
- package/dist/esm/Runner.js.map +1 -1
- package/dist/esm/RunnerAddress.js +7 -0
- package/dist/esm/RunnerAddress.js.map +1 -1
- package/dist/esm/RunnerHealth.js +88 -30
- package/dist/esm/RunnerHealth.js.map +1 -1
- package/dist/esm/RunnerServer.js +38 -24
- package/dist/esm/RunnerServer.js.map +1 -1
- package/dist/esm/RunnerStorage.js +90 -0
- package/dist/esm/RunnerStorage.js.map +1 -0
- package/dist/esm/Runners.js +19 -23
- package/dist/esm/Runners.js.map +1 -1
- package/dist/esm/ShardId.js +16 -6
- package/dist/esm/ShardId.js.map +1 -1
- package/dist/esm/Sharding.js +438 -321
- package/dist/esm/Sharding.js.map +1 -1
- package/dist/esm/ShardingConfig.js +10 -14
- package/dist/esm/ShardingConfig.js.map +1 -1
- package/dist/esm/Snowflake.js +1 -1
- package/dist/esm/SocketRunner.js +1 -1
- package/dist/esm/SocketRunner.js.map +1 -1
- package/dist/esm/SqlMessageStorage.js +22 -28
- package/dist/esm/SqlMessageStorage.js.map +1 -1
- package/dist/esm/SqlRunnerStorage.js +369 -0
- package/dist/esm/SqlRunnerStorage.js.map +1 -0
- package/dist/esm/index.js +4 -24
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/entityManager.js +40 -9
- package/dist/esm/internal/entityManager.js.map +1 -1
- package/package.json +20 -60
- package/src/ClusterError.ts +0 -24
- package/src/ClusterMetrics.ts +12 -16
- package/src/ClusterWorkflowEngine.ts +38 -78
- package/src/Entity.ts +2 -7
- package/src/EntityAddress.ts +10 -0
- package/src/EntityId.ts +6 -0
- package/src/EntityProxy.ts +10 -10
- package/src/HttpRunner.ts +132 -67
- package/src/MessageStorage.ts +89 -24
- package/src/Runner.ts +4 -4
- package/src/RunnerAddress.ts +8 -0
- package/src/RunnerHealth.ts +119 -56
- package/src/RunnerServer.ts +64 -47
- package/src/RunnerStorage.ts +218 -0
- package/src/Runners.ts +32 -45
- package/src/ShardId.ts +14 -3
- package/src/Sharding.ts +548 -413
- package/src/ShardingConfig.ts +39 -31
- package/src/Snowflake.ts +1 -1
- package/src/SocketRunner.ts +6 -4
- package/src/SqlMessageStorage.ts +28 -30
- package/src/SqlRunnerStorage.ts +541 -0
- package/src/index.ts +4 -29
- package/src/internal/entityManager.ts +44 -10
- package/HttpCommon/package.json +0 -6
- package/HttpShardManager/package.json +0 -6
- package/ShardManager/package.json +0 -6
- package/ShardStorage/package.json +0 -6
- package/SocketShardManager/package.json +0 -6
- package/SqlShardStorage/package.json +0 -6
- package/SynchronizedClock/package.json +0 -6
- package/dist/cjs/HttpCommon.js +0 -48
- package/dist/cjs/HttpCommon.js.map +0 -1
- package/dist/cjs/HttpShardManager.js +0 -139
- package/dist/cjs/HttpShardManager.js.map +0 -1
- package/dist/cjs/ShardManager.js +0 -549
- package/dist/cjs/ShardManager.js.map +0 -1
- package/dist/cjs/ShardStorage.js +0 -151
- package/dist/cjs/ShardStorage.js.map +0 -1
- package/dist/cjs/SocketShardManager.js +0 -32
- package/dist/cjs/SocketShardManager.js.map +0 -1
- package/dist/cjs/SqlShardStorage.js +0 -253
- package/dist/cjs/SqlShardStorage.js.map +0 -1
- package/dist/cjs/SynchronizedClock.js +0 -65
- package/dist/cjs/SynchronizedClock.js.map +0 -1
- package/dist/cjs/internal/shardManager.js +0 -353
- package/dist/cjs/internal/shardManager.js.map +0 -1
- package/dist/dts/HttpCommon.d.ts +0 -25
- package/dist/dts/HttpCommon.d.ts.map +0 -1
- package/dist/dts/HttpShardManager.d.ts +0 -119
- package/dist/dts/HttpShardManager.d.ts.map +0 -1
- package/dist/dts/ShardManager.d.ts +0 -459
- package/dist/dts/ShardManager.d.ts.map +0 -1
- package/dist/dts/ShardStorage.d.ts.map +0 -1
- package/dist/dts/SocketShardManager.d.ts +0 -17
- package/dist/dts/SocketShardManager.d.ts.map +0 -1
- package/dist/dts/SqlShardStorage.d.ts +0 -38
- package/dist/dts/SqlShardStorage.d.ts.map +0 -1
- package/dist/dts/SynchronizedClock.d.ts +0 -19
- package/dist/dts/SynchronizedClock.d.ts.map +0 -1
- package/dist/dts/internal/shardManager.d.ts +0 -2
- package/dist/dts/internal/shardManager.d.ts.map +0 -1
- package/dist/esm/HttpCommon.js +0 -38
- package/dist/esm/HttpCommon.js.map +0 -1
- package/dist/esm/HttpShardManager.js +0 -128
- package/dist/esm/HttpShardManager.js.map +0 -1
- package/dist/esm/ShardManager.js +0 -535
- package/dist/esm/ShardManager.js.map +0 -1
- package/dist/esm/ShardStorage.js +0 -141
- package/dist/esm/ShardStorage.js.map +0 -1
- package/dist/esm/SocketShardManager.js +0 -24
- package/dist/esm/SocketShardManager.js.map +0 -1
- package/dist/esm/SqlShardStorage.js +0 -244
- package/dist/esm/SqlShardStorage.js.map +0 -1
- package/dist/esm/SynchronizedClock.js +0 -57
- package/dist/esm/SynchronizedClock.js.map +0 -1
- package/dist/esm/internal/shardManager.js +0 -342
- package/dist/esm/internal/shardManager.js.map +0 -1
- package/src/HttpCommon.ts +0 -73
- package/src/HttpShardManager.ts +0 -273
- package/src/ShardManager.ts +0 -823
- package/src/ShardStorage.ts +0 -297
- package/src/SocketShardManager.ts +0 -48
- package/src/SqlShardStorage.ts +0 -329
- package/src/SynchronizedClock.ts +0 -82
- package/src/internal/shardManager.ts +0 -412
package/dist/cjs/RunnerHealth.js
CHANGED
|
@@ -3,12 +3,17 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.makePing = exports.
|
|
6
|
+
exports.makePing = exports.makeK8s = exports.layerPing = exports.layerNoop = exports.layerK8s = exports.RunnerHealth = void 0;
|
|
7
|
+
var FileSystem = _interopRequireWildcard(require("@effect/platform/FileSystem"));
|
|
8
|
+
var HttpClient = _interopRequireWildcard(require("@effect/platform/HttpClient"));
|
|
9
|
+
var HttpClientRequest = _interopRequireWildcard(require("@effect/platform/HttpClientRequest"));
|
|
10
|
+
var HttpClientResponse = _interopRequireWildcard(require("@effect/platform/HttpClientResponse"));
|
|
7
11
|
var Context = _interopRequireWildcard(require("effect/Context"));
|
|
8
12
|
var Effect = _interopRequireWildcard(require("effect/Effect"));
|
|
13
|
+
var _Function = require("effect/Function");
|
|
9
14
|
var Layer = _interopRequireWildcard(require("effect/Layer"));
|
|
10
|
-
var
|
|
11
|
-
var
|
|
15
|
+
var Schedule = _interopRequireWildcard(require("effect/Schedule"));
|
|
16
|
+
var Schema = _interopRequireWildcard(require("effect/Schema"));
|
|
12
17
|
var Runners = _interopRequireWildcard(require("./Runners.js"));
|
|
13
18
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
19
|
/**
|
|
@@ -26,27 +31,6 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
26
31
|
* @category models
|
|
27
32
|
*/
|
|
28
33
|
class RunnerHealth extends /*#__PURE__*/Context.Tag("@effect/cluster/RunnerHealth")() {}
|
|
29
|
-
/**
|
|
30
|
-
* @since 1.0.0
|
|
31
|
-
* @category Constructors
|
|
32
|
-
*/
|
|
33
|
-
exports.RunnerHealth = RunnerHealth;
|
|
34
|
-
const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
35
|
-
const connections = yield* RcMap.make({
|
|
36
|
-
lookup: _address => Effect.void
|
|
37
|
-
});
|
|
38
|
-
const onConnection = address => RcMap.get(connections, address);
|
|
39
|
-
const isAlive = Effect.fnUntraced(function* (address) {
|
|
40
|
-
if (yield* RcMap.has(connections, address)) {
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
return yield* options.isAlive(address);
|
|
44
|
-
});
|
|
45
|
-
return RunnerHealth.of({
|
|
46
|
-
onConnection,
|
|
47
|
-
isAlive
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
34
|
/**
|
|
51
35
|
* A layer which will **always** consider a Runner healthy.
|
|
52
36
|
*
|
|
@@ -55,21 +39,24 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
55
39
|
* @since 1.0.0
|
|
56
40
|
* @category layers
|
|
57
41
|
*/
|
|
58
|
-
|
|
42
|
+
exports.RunnerHealth = RunnerHealth;
|
|
43
|
+
const layerNoop = exports.layerNoop = /*#__PURE__*/Layer.succeed(RunnerHealth, {
|
|
59
44
|
isAlive: () => Effect.succeed(true)
|
|
60
|
-
})
|
|
45
|
+
});
|
|
61
46
|
/**
|
|
62
47
|
* @since 1.0.0
|
|
63
48
|
* @category Constructors
|
|
64
49
|
*/
|
|
65
50
|
const makePing = exports.makePing = /*#__PURE__*/Effect.gen(function* () {
|
|
66
51
|
const runners = yield* Runners.Runners;
|
|
52
|
+
const schedule = Schedule.spaced(500);
|
|
67
53
|
function isAlive(address) {
|
|
68
|
-
return runners.ping(address).pipe(Effect.timeout(
|
|
69
|
-
times:
|
|
54
|
+
return runners.ping(address).pipe(Effect.timeout(10_000), Effect.retry({
|
|
55
|
+
times: 5,
|
|
56
|
+
schedule
|
|
70
57
|
}), Effect.isSuccess);
|
|
71
58
|
}
|
|
72
|
-
return
|
|
59
|
+
return RunnerHealth.of({
|
|
73
60
|
isAlive
|
|
74
61
|
});
|
|
75
62
|
});
|
|
@@ -79,12 +66,84 @@ const makePing = exports.makePing = /*#__PURE__*/Effect.gen(function* () {
|
|
|
79
66
|
* @since 1.0.0
|
|
80
67
|
* @category layers
|
|
81
68
|
*/
|
|
82
|
-
const
|
|
69
|
+
const layerPing = exports.layerPing = /*#__PURE__*/Layer.scoped(RunnerHealth, makePing);
|
|
83
70
|
/**
|
|
84
|
-
*
|
|
71
|
+
* @since 1.0.0
|
|
72
|
+
* @category Constructors
|
|
73
|
+
*/
|
|
74
|
+
const makeK8s = exports.makeK8s = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
75
|
+
const fs = yield* FileSystem.FileSystem;
|
|
76
|
+
const token = yield* fs.readFileString("/var/run/secrets/kubernetes.io/serviceaccount/token").pipe(Effect.option);
|
|
77
|
+
const client = (yield* HttpClient.HttpClient).pipe(HttpClient.filterStatusOk);
|
|
78
|
+
const baseRequest = HttpClientRequest.get("https://kubernetes.default.svc/api").pipe(token._tag === "Some" ? HttpClientRequest.bearerToken(token.value.trim()) : _Function.identity);
|
|
79
|
+
const getPods = baseRequest.pipe(HttpClientRequest.appendUrl(options?.namespace ? `/v1/namespaces/${options.namespace}/pods` : "/v1/pods"), HttpClientRequest.setUrlParam("fieldSelector", "status.phase=Running"), options?.labelSelector ? HttpClientRequest.setUrlParam("labelSelector", options.labelSelector) : _Function.identity);
|
|
80
|
+
const allPods = yield* client.execute(getPods).pipe(Effect.flatMap(HttpClientResponse.schemaBodyJson(PodList)), Effect.map(list => {
|
|
81
|
+
const pods = new Map();
|
|
82
|
+
for (let i = 0; i < list.items.length; i++) {
|
|
83
|
+
const pod = list.items[i];
|
|
84
|
+
pods.set(pod.status.podIP, pod);
|
|
85
|
+
}
|
|
86
|
+
return pods;
|
|
87
|
+
}), Effect.tapErrorCause(cause => Effect.logWarning("Failed to fetch pods from Kubernetes API", cause)), Effect.cachedWithTTL("10 seconds"));
|
|
88
|
+
return RunnerHealth.of({
|
|
89
|
+
isAlive: address => allPods.pipe(Effect.map(pods => pods.get(address.host)?.isReady ?? false), Effect.catchAllCause(() => Effect.succeed(true)))
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
class Pod extends /*#__PURE__*/Schema.Class("effect/cluster/RunnerHealth/Pod")({
|
|
93
|
+
status: /*#__PURE__*/Schema.Struct({
|
|
94
|
+
phase: Schema.String,
|
|
95
|
+
conditions: /*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Struct({
|
|
96
|
+
type: Schema.String,
|
|
97
|
+
status: Schema.String,
|
|
98
|
+
lastTransitionTime: Schema.String
|
|
99
|
+
})),
|
|
100
|
+
podIP: Schema.String
|
|
101
|
+
})
|
|
102
|
+
}) {
|
|
103
|
+
get isReady() {
|
|
104
|
+
let initializedAt;
|
|
105
|
+
let readyAt;
|
|
106
|
+
for (let i = 0; i < this.status.conditions.length; i++) {
|
|
107
|
+
const condition = this.status.conditions[i];
|
|
108
|
+
switch (condition.type) {
|
|
109
|
+
case "Initialized":
|
|
110
|
+
{
|
|
111
|
+
if (condition.status !== "True") {
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
initializedAt = condition.lastTransitionTime;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
case "Ready":
|
|
118
|
+
{
|
|
119
|
+
if (condition.status === "True") {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
readyAt = condition.lastTransitionTime;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// if the pod is still booting up, consider it ready as it would have
|
|
128
|
+
// already registered itself with RunnerStorage by now
|
|
129
|
+
return initializedAt === readyAt;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const PodList = /*#__PURE__*/Schema.Struct({
|
|
133
|
+
items: /*#__PURE__*/Schema.Array(Pod)
|
|
134
|
+
});
|
|
135
|
+
/**
|
|
136
|
+
* A layer which will check the Kubernetes API to see if a Runner is healthy.
|
|
137
|
+
*
|
|
138
|
+
* The provided HttpClient will need to add the pod's CA certificate to its
|
|
139
|
+
* trusted root certificates in order to communicate with the Kubernetes API.
|
|
140
|
+
*
|
|
141
|
+
* The pod service account will also need to have permissions to list pods in
|
|
142
|
+
* order to use this layer.
|
|
85
143
|
*
|
|
86
144
|
* @since 1.0.0
|
|
87
145
|
* @category layers
|
|
88
146
|
*/
|
|
89
|
-
const
|
|
147
|
+
const layerK8s = options => Layer.effect(RunnerHealth, makeK8s(options));
|
|
148
|
+
exports.layerK8s = layerK8s;
|
|
90
149
|
//# sourceMappingURL=RunnerHealth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunnerHealth.js","names":["
|
|
1
|
+
{"version":3,"file":"RunnerHealth.js","names":["FileSystem","_interopRequireWildcard","require","HttpClient","HttpClientRequest","HttpClientResponse","Context","Effect","_Function","Layer","Schedule","Schema","Runners","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","RunnerHealth","Tag","exports","layerNoop","succeed","isAlive","makePing","gen","runners","schedule","spaced","address","ping","pipe","timeout","retry","times","isSuccess","of","layerPing","scoped","makeK8s","fnUntraced","options","fs","token","readFileString","option","client","filterStatusOk","baseRequest","_tag","bearerToken","value","trim","identity","getPods","appendUrl","namespace","setUrlParam","labelSelector","allPods","execute","flatMap","schemaBodyJson","PodList","map","list","pods","Map","items","length","pod","status","podIP","tapErrorCause","cause","logWarning","cachedWithTTL","host","isReady","catchAllCause","Pod","Class","Struct","phase","String","conditions","Array","type","lastTransitionTime","initializedAt","readyAt","condition","layerK8s","effect"],"sources":["../../src/RunnerHealth.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/RunnerServer.js
CHANGED
|
@@ -6,20 +6,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.layerWithClients = exports.layerHandlers = exports.layerClientOnly = exports.layer = void 0;
|
|
7
7
|
var RpcServer = _interopRequireWildcard(require("@effect/rpc/RpcServer"));
|
|
8
8
|
var Effect = _interopRequireWildcard(require("effect/Effect"));
|
|
9
|
+
var Fiber = _interopRequireWildcard(require("effect/Fiber"));
|
|
9
10
|
var _Function = require("effect/Function");
|
|
10
11
|
var Layer = _interopRequireWildcard(require("effect/Layer"));
|
|
11
12
|
var Mailbox = _interopRequireWildcard(require("effect/Mailbox"));
|
|
12
13
|
var Option = _interopRequireWildcard(require("effect/Option"));
|
|
13
|
-
var
|
|
14
|
+
var Runtime = _interopRequireWildcard(require("effect/Runtime"));
|
|
14
15
|
var Message = _interopRequireWildcard(require("./Message.js"));
|
|
15
16
|
var MessageStorage = _interopRequireWildcard(require("./MessageStorage.js"));
|
|
16
17
|
var Reply = _interopRequireWildcard(require("./Reply.js"));
|
|
18
|
+
var RunnerHealth = _interopRequireWildcard(require("./RunnerHealth.js"));
|
|
17
19
|
var Runners = _interopRequireWildcard(require("./Runners.js"));
|
|
18
20
|
var Sharding = _interopRequireWildcard(require("./Sharding.js"));
|
|
19
21
|
var _ShardingConfig = require("./ShardingConfig.js");
|
|
20
|
-
var ShardManager = _interopRequireWildcard(require("./ShardManager.js"));
|
|
21
|
-
var ShardStorage = _interopRequireWildcard(require("./ShardStorage.js"));
|
|
22
|
-
var SynchronizedClock = _interopRequireWildcard(require("./SynchronizedClock.js"));
|
|
23
22
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
24
23
|
/**
|
|
25
24
|
* @since 1.0.0
|
|
@@ -48,27 +47,41 @@ const layerHandlers = exports.layerHandlers = /*#__PURE__*/Runners.Rpcs.toLayer(
|
|
|
48
47
|
persisted,
|
|
49
48
|
request
|
|
50
49
|
}) => {
|
|
51
|
-
let
|
|
52
|
-
let
|
|
50
|
+
let replyEncoded = undefined;
|
|
51
|
+
let resume = reply => {
|
|
52
|
+
replyEncoded = reply;
|
|
53
|
+
};
|
|
53
54
|
const message = new Message.IncomingRequest({
|
|
54
55
|
envelope: request,
|
|
55
56
|
lastSentReply: Option.none(),
|
|
56
57
|
respond(reply) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
resume(Effect.succeed(reply));
|
|
60
|
-
} else {
|
|
61
|
-
replyEncoded = reply;
|
|
62
|
-
}
|
|
63
|
-
return Effect.void;
|
|
64
|
-
});
|
|
58
|
+
resume(Effect.orDie(Reply.serialize(reply)));
|
|
59
|
+
return Effect.void;
|
|
65
60
|
}
|
|
66
61
|
});
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
62
|
+
if (persisted) {
|
|
63
|
+
return Effect.async(resume_ => {
|
|
64
|
+
resume = resume_;
|
|
65
|
+
const parent = Option.getOrThrow(Fiber.getCurrentFiber());
|
|
66
|
+
const runtime = Runtime.make({
|
|
67
|
+
context: parent.currentContext,
|
|
68
|
+
runtimeFlags: Runtime.defaultRuntimeFlags,
|
|
69
|
+
fiberRefs: parent.getFiberRefs()
|
|
70
|
+
});
|
|
71
|
+
const onExit = exit => {
|
|
72
|
+
if (exit._tag === "Failure") {
|
|
73
|
+
resume(exit);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const fiber = Runtime.runFork(runtime)(storage.registerReplyHandler(message));
|
|
77
|
+
fiber.addObserver(onExit);
|
|
78
|
+
Runtime.runFork(runtime)(Effect.catchTag(sharding.notify(message, constWaitUntilRead), "AlreadyProcessingMessage", () => Effect.void)).addObserver(onExit);
|
|
79
|
+
return Fiber.interrupt(fiber);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return Effect.zipRight(sharding.send(message), Effect.async(resume_ => {
|
|
70
83
|
if (replyEncoded) {
|
|
71
|
-
resume_(
|
|
84
|
+
resume_(replyEncoded);
|
|
72
85
|
} else {
|
|
73
86
|
resume = resume_;
|
|
74
87
|
}
|
|
@@ -88,9 +101,7 @@ const layerHandlers = exports.layerHandlers = /*#__PURE__*/Runners.Rpcs.toLayer(
|
|
|
88
101
|
});
|
|
89
102
|
}
|
|
90
103
|
});
|
|
91
|
-
return Effect.as(persisted ? Effect.zipRight(storage.registerReplyHandler(message
|
|
92
|
-
address: request.address
|
|
93
|
-
})))), sharding.notify(message)) : sharding.send(message), mailbox);
|
|
104
|
+
return Effect.as(persisted ? Effect.zipRight(storage.registerReplyHandler(message).pipe(Effect.onError(cause => mailbox.failCause(cause)), Effect.forkScoped, Effect.interruptible), sharding.notify(message, constWaitUntilRead)) : sharding.send(message), mailbox);
|
|
94
105
|
}),
|
|
95
106
|
Envelope: ({
|
|
96
107
|
envelope
|
|
@@ -99,6 +110,9 @@ const layerHandlers = exports.layerHandlers = /*#__PURE__*/Runners.Rpcs.toLayer(
|
|
|
99
110
|
}))
|
|
100
111
|
};
|
|
101
112
|
}));
|
|
113
|
+
const constWaitUntilRead = {
|
|
114
|
+
waitUntilRead: true
|
|
115
|
+
};
|
|
102
116
|
/**
|
|
103
117
|
* The `RunnerServer` recieves messages from other Runners and forwards them to the
|
|
104
118
|
* `Sharding` layer.
|
|
@@ -118,18 +132,18 @@ const layer = exports.layer = /*#__PURE__*/RpcServer.layer(Runners.Rpcs, {
|
|
|
118
132
|
* @since 1.0.0
|
|
119
133
|
* @category Layers
|
|
120
134
|
*/
|
|
121
|
-
const layerWithClients = exports.layerWithClients = /*#__PURE__*/layer.pipe(/*#__PURE__*/Layer.provideMerge(Sharding.layer), /*#__PURE__*/Layer.provideMerge(Runners.layerRpc)
|
|
135
|
+
const layerWithClients = exports.layerWithClients = /*#__PURE__*/layer.pipe(/*#__PURE__*/Layer.provideMerge(Sharding.layer), /*#__PURE__*/Layer.provideMerge(Runners.layerRpc));
|
|
122
136
|
/**
|
|
123
137
|
* A `Runners` layer that is client only.
|
|
124
138
|
*
|
|
125
|
-
* It will not register with
|
|
139
|
+
* It will not register with RunnerStorage and recieve shard assignments,
|
|
126
140
|
* so this layer can be used to embed a cluster client inside another effect
|
|
127
141
|
* application.
|
|
128
142
|
*
|
|
129
143
|
* @since 1.0.0
|
|
130
144
|
* @category Layers
|
|
131
145
|
*/
|
|
132
|
-
const layerClientOnly = exports.layerClientOnly = /*#__PURE__*/Sharding.layer.pipe(/*#__PURE__*/Layer.provideMerge(Runners.layerRpc), /*#__PURE__*/Layer.provide(
|
|
146
|
+
const layerClientOnly = exports.layerClientOnly = /*#__PURE__*/Sharding.layer.pipe(/*#__PURE__*/Layer.provideMerge(Runners.layerRpc), /*#__PURE__*/Layer.provide(RunnerHealth.layerNoop), /*#__PURE__*/Layer.updateService(_ShardingConfig.ShardingConfig, config => ({
|
|
133
147
|
...config,
|
|
134
148
|
runnerAddress: Option.none()
|
|
135
149
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunnerServer.js","names":["RpcServer","_interopRequireWildcard","require","Effect","_Function","Layer","Mailbox","Option","
|
|
1
|
+
{"version":3,"file":"RunnerServer.js","names":["RpcServer","_interopRequireWildcard","require","Effect","Fiber","_Function","Layer","Mailbox","Option","Runtime","Message","MessageStorage","Reply","RunnerHealth","Runners","Sharding","_ShardingConfig","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","constVoid","constant","void","layerHandlers","exports","Rpcs","toLayer","gen","sharding","storage","Ping","Notify","envelope","notify","_tag","IncomingRequest","respond","lastSentReply","none","IncomingEnvelope","persisted","request","replyEncoded","undefined","resume","reply","message","orDie","serialize","async","resume_","parent","getOrThrow","getCurrentFiber","runtime","make","context","currentContext","runtimeFlags","defaultRuntimeFlags","fiberRefs","getFiberRefs","onExit","exit","fiber","runFork","registerReplyHandler","addObserver","catchTag","constWaitUntilRead","interrupt","zipRight","send","Stream","flatMap","mailbox","unsafeOffer","as","pipe","onError","cause","failCause","forkScoped","interruptible","Envelope","waitUntilRead","layer","spanPrefix","disableTracing","provide","layerWithClients","provideMerge","layerRpc","layerClientOnly","layerNoop","updateService","ShardingConfig","config","runnerAddress"],"sources":["../../src/RunnerServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.makeMemory = exports.makeEncoded = exports.layerMemory = exports.RunnerStorage = void 0;
|
|
7
|
+
var _Array = require("effect/Array");
|
|
8
|
+
var Context = _interopRequireWildcard(require("effect/Context"));
|
|
9
|
+
var Effect = _interopRequireWildcard(require("effect/Effect"));
|
|
10
|
+
var Layer = _interopRequireWildcard(require("effect/Layer"));
|
|
11
|
+
var MutableHashMap = _interopRequireWildcard(require("effect/MutableHashMap"));
|
|
12
|
+
var MachineId = _interopRequireWildcard(require("./MachineId.js"));
|
|
13
|
+
var _Runner = require("./Runner.js");
|
|
14
|
+
var _ShardId = require("./ShardId.js");
|
|
15
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
16
|
+
/**
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Represents a generic interface to the persistent storage required by the
|
|
22
|
+
* cluster.
|
|
23
|
+
*
|
|
24
|
+
* @since 1.0.0
|
|
25
|
+
* @category models
|
|
26
|
+
*/
|
|
27
|
+
class RunnerStorage extends /*#__PURE__*/Context.Tag("@effect/cluster/RunnerStorage")() {}
|
|
28
|
+
/**
|
|
29
|
+
* @since 1.0.0
|
|
30
|
+
* @category layers
|
|
31
|
+
*/
|
|
32
|
+
exports.RunnerStorage = RunnerStorage;
|
|
33
|
+
const makeEncoded = encoded => RunnerStorage.of({
|
|
34
|
+
getRunners: Effect.gen(function* () {
|
|
35
|
+
const runners = yield* encoded.getRunners;
|
|
36
|
+
const results = [];
|
|
37
|
+
for (let i = 0; i < runners.length; i++) {
|
|
38
|
+
const [runner, healthy] = runners[i];
|
|
39
|
+
try {
|
|
40
|
+
results.push([_Runner.Runner.decodeSync(runner), healthy]);
|
|
41
|
+
} catch {
|
|
42
|
+
//
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return results;
|
|
46
|
+
}),
|
|
47
|
+
register: (runner, healthy) => Effect.map(encoded.register(encodeRunnerAddress(runner.address), _Runner.Runner.encodeSync(runner), healthy), MachineId.make),
|
|
48
|
+
unregister: address => encoded.unregister(encodeRunnerAddress(address)),
|
|
49
|
+
setRunnerHealth: (address, healthy) => encoded.setRunnerHealth(encodeRunnerAddress(address), healthy),
|
|
50
|
+
acquire: (address, shardIds) => {
|
|
51
|
+
const arr = Array.from(shardIds, id => id.toString());
|
|
52
|
+
if (!(0, _Array.isNonEmptyArray)(arr)) return Effect.succeed([]);
|
|
53
|
+
return encoded.acquire(encodeRunnerAddress(address), arr).pipe(Effect.map(shards => shards.map(_ShardId.ShardId.fromString)));
|
|
54
|
+
},
|
|
55
|
+
refresh: (address, shardIds) => encoded.refresh(encodeRunnerAddress(address), Array.from(shardIds, id => id.toString())).pipe(Effect.map(shards => shards.map(_ShardId.ShardId.fromString))),
|
|
56
|
+
release(address, shardId) {
|
|
57
|
+
return encoded.release(encodeRunnerAddress(address), shardId.toString());
|
|
58
|
+
},
|
|
59
|
+
releaseAll(address) {
|
|
60
|
+
return encoded.releaseAll(encodeRunnerAddress(address));
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
/**
|
|
64
|
+
* @since 1.0.0
|
|
65
|
+
* @category constructors
|
|
66
|
+
*/
|
|
67
|
+
exports.makeEncoded = makeEncoded;
|
|
68
|
+
const makeMemory = exports.makeMemory = /*#__PURE__*/Effect.gen(function* () {
|
|
69
|
+
const runners = MutableHashMap.empty();
|
|
70
|
+
let acquired = [];
|
|
71
|
+
let id = 0;
|
|
72
|
+
return RunnerStorage.of({
|
|
73
|
+
getRunners: Effect.sync(() => Array.from(MutableHashMap.values(runners), runner => [runner, true])),
|
|
74
|
+
register: runner => Effect.sync(() => {
|
|
75
|
+
MutableHashMap.set(runners, runner.address, runner);
|
|
76
|
+
return MachineId.make(id++);
|
|
77
|
+
}),
|
|
78
|
+
unregister: address => Effect.sync(() => {
|
|
79
|
+
MutableHashMap.remove(runners, address);
|
|
80
|
+
}),
|
|
81
|
+
setRunnerHealth: () => Effect.void,
|
|
82
|
+
acquire: (_address, shardIds) => {
|
|
83
|
+
acquired = Array.from(shardIds);
|
|
84
|
+
return Effect.succeed(Array.from(shardIds));
|
|
85
|
+
},
|
|
86
|
+
refresh: () => Effect.sync(() => acquired),
|
|
87
|
+
release: () => Effect.void,
|
|
88
|
+
releaseAll: () => Effect.void
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
/**
|
|
92
|
+
* @since 1.0.0
|
|
93
|
+
* @category layers
|
|
94
|
+
*/
|
|
95
|
+
const layerMemory = exports.layerMemory = /*#__PURE__*/Layer.effect(RunnerStorage)(makeMemory);
|
|
96
|
+
// -------------------------------------------------------------------------------------
|
|
97
|
+
// internal
|
|
98
|
+
// -------------------------------------------------------------------------------------
|
|
99
|
+
const encodeRunnerAddress = runnerAddress => `${runnerAddress.host}:${runnerAddress.port}`;
|
|
100
|
+
//# sourceMappingURL=RunnerStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RunnerStorage.js","names":["_Array","require","Context","_interopRequireWildcard","Effect","Layer","MutableHashMap","MachineId","_Runner","_ShardId","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","RunnerStorage","Tag","exports","makeEncoded","encoded","of","getRunners","gen","runners","results","length","runner","healthy","push","Runner","decodeSync","register","map","encodeRunnerAddress","address","encodeSync","make","unregister","setRunnerHealth","acquire","shardIds","arr","Array","from","id","toString","isNonEmptyArray","succeed","pipe","shards","ShardId","fromString","refresh","release","shardId","releaseAll","makeMemory","empty","acquired","sync","values","remove","void","_address","layerMemory","effect","runnerAddress","host","port"],"sources":["../../src/RunnerStorage.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,MAAA,GAAAD,uBAAA,CAAAF,OAAA;AACA,IAAAI,KAAA,GAAAF,uBAAA,CAAAF,OAAA;AACA,IAAAK,cAAA,GAAAH,uBAAA,CAAAF,OAAA;AAEA,IAAAM,SAAA,GAAAJ,uBAAA,CAAAF,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AAEA,IAAAQ,QAAA,GAAAR,OAAA;AAAsC,SAAAE,wBAAAO,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAT,uBAAA,YAAAA,CAAAO,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAZtC;;;;AAcA;;;;;;;AAOM,MAAOkB,aAAc,sBAAQ3B,OAAO,CAAC4B,GAAG,CAAC,+BAA+B,CAAC,EAmD3E;AA2DJ;;;;AAAAC,OAAA,CAAAF,aAAA,GAAAA,aAAA;AAIO,MAAMG,WAAW,GAAIC,OAAgB,IAC1CJ,aAAa,CAACK,EAAE,CAAC;EACfC,UAAU,EAAE/B,MAAM,CAACgC,GAAG,CAAC,aAAS;IAC9B,MAAMC,OAAO,GAAG,OAAOJ,OAAO,CAACE,UAAU;IACzC,MAAMG,OAAO,GAA6B,EAAE;IAC5C,KAAK,IAAIrB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoB,OAAO,CAACE,MAAM,EAAEtB,CAAC,EAAE,EAAE;MACvC,MAAM,CAACuB,MAAM,EAAEC,OAAO,CAAC,GAAGJ,OAAO,CAACpB,CAAC,CAAC;MACpC,IAAI;QACFqB,OAAO,CAACI,IAAI,CAAC,CAACC,cAAM,CAACC,UAAU,CAACJ,MAAM,CAAC,EAAEC,OAAO,CAAC,CAAC;MACpD,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;IACA,OAAOH,OAAO;EAChB,CAAC,CAAC;EACFO,QAAQ,EAAEA,CAACL,MAAM,EAAEC,OAAO,KACxBrC,MAAM,CAAC0C,GAAG,CACRb,OAAO,CAACY,QAAQ,CAACE,mBAAmB,CAACP,MAAM,CAACQ,OAAO,CAAC,EAAEL,cAAM,CAACM,UAAU,CAACT,MAAM,CAAC,EAAEC,OAAO,CAAC,EACzFlC,SAAS,CAAC2C,IAAI,CACf;EACHC,UAAU,EAAGH,OAAO,IAAKf,OAAO,CAACkB,UAAU,CAACJ,mBAAmB,CAACC,OAAO,CAAC,CAAC;EACzEI,eAAe,EAAEA,CAACJ,OAAO,EAAEP,OAAO,KAAKR,OAAO,CAACmB,eAAe,CAACL,mBAAmB,CAACC,OAAO,CAAC,EAAEP,OAAO,CAAC;EACrGY,OAAO,EAAEA,CAACL,OAAO,EAAEM,QAAQ,KAAI;IAC7B,MAAMC,GAAG,GAAGC,KAAK,CAACC,IAAI,CAACH,QAAQ,EAAGI,EAAE,IAAKA,EAAE,CAACC,QAAQ,EAAE,CAAC;IACvD,IAAI,CAAC,IAAAC,sBAAe,EAACL,GAAG,CAAC,EAAE,OAAOnD,MAAM,CAACyD,OAAO,CAAC,EAAE,CAAC;IACpD,OAAO5B,OAAO,CAACoB,OAAO,CAACN,mBAAmB,CAACC,OAAO,CAAC,EAAEO,GAAG,CAAC,CAACO,IAAI,CAC5D1D,MAAM,CAAC0C,GAAG,CAAEiB,MAAM,IAAKA,MAAM,CAACjB,GAAG,CAACkB,gBAAO,CAACC,UAAU,CAAC,CAAC,CACvD;EACH,CAAC;EACDC,OAAO,EAAEA,CAAClB,OAAO,EAAEM,QAAQ,KACzBrB,OAAO,CAACiC,OAAO,CAACnB,mBAAmB,CAACC,OAAO,CAAC,EAAEQ,KAAK,CAACC,IAAI,CAACH,QAAQ,EAAGI,EAAE,IAAKA,EAAE,CAACC,QAAQ,EAAE,CAAC,CAAC,CAACG,IAAI,CAC7F1D,MAAM,CAAC0C,GAAG,CAAEiB,MAAM,IAAKA,MAAM,CAACjB,GAAG,CAACkB,gBAAO,CAACC,UAAU,CAAC,CAAC,CACvD;EACHE,OAAOA,CAACnB,OAAO,EAAEoB,OAAO;IACtB,OAAOnC,OAAO,CAACkC,OAAO,CAACpB,mBAAmB,CAACC,OAAO,CAAC,EAAEoB,OAAO,CAACT,QAAQ,EAAE,CAAC;EAC1E,CAAC;EACDU,UAAUA,CAACrB,OAAO;IAChB,OAAOf,OAAO,CAACoC,UAAU,CAACtB,mBAAmB,CAACC,OAAO,CAAC,CAAC;EACzD;CACD,CAAC;AAEJ;;;;AAAAjB,OAAA,CAAAC,WAAA,GAAAA,WAAA;AAIO,MAAMsC,UAAU,GAAAvC,OAAA,CAAAuC,UAAA,gBAAGlE,MAAM,CAACgC,GAAG,CAAC,aAAS;EAC5C,MAAMC,OAAO,GAAG/B,cAAc,CAACiE,KAAK,EAAyB;EAC7D,IAAIC,QAAQ,GAAmB,EAAE;EACjC,IAAId,EAAE,GAAG,CAAC;EAEV,OAAO7B,aAAa,CAACK,EAAE,CAAC;IACtBC,UAAU,EAAE/B,MAAM,CAACqE,IAAI,CAAC,MAAMjB,KAAK,CAACC,IAAI,CAACnD,cAAc,CAACoE,MAAM,CAACrC,OAAO,CAAC,EAAGG,MAAM,IAAK,CAACA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACrGK,QAAQ,EAAGL,MAAM,IACfpC,MAAM,CAACqE,IAAI,CAAC,MAAK;MACfnE,cAAc,CAACiB,GAAG,CAACc,OAAO,EAAEG,MAAM,CAACQ,OAAO,EAAER,MAAM,CAAC;MACnD,OAAOjC,SAAS,CAAC2C,IAAI,CAACQ,EAAE,EAAE,CAAC;IAC7B,CAAC,CAAC;IACJP,UAAU,EAAGH,OAAO,IAClB5C,MAAM,CAACqE,IAAI,CAAC,MAAK;MACfnE,cAAc,CAACqE,MAAM,CAACtC,OAAO,EAAEW,OAAO,CAAC;IACzC,CAAC,CAAC;IACJI,eAAe,EAAEA,CAAA,KAAMhD,MAAM,CAACwE,IAAI;IAClCvB,OAAO,EAAEA,CAACwB,QAAQ,EAAEvB,QAAQ,KAAI;MAC9BkB,QAAQ,GAAGhB,KAAK,CAACC,IAAI,CAACH,QAAQ,CAAC;MAC/B,OAAOlD,MAAM,CAACyD,OAAO,CAACL,KAAK,CAACC,IAAI,CAACH,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACDY,OAAO,EAAEA,CAAA,KAAM9D,MAAM,CAACqE,IAAI,CAAC,MAAMD,QAAQ,CAAC;IAC1CL,OAAO,EAAEA,CAAA,KAAM/D,MAAM,CAACwE,IAAI;IAC1BP,UAAU,EAAEA,CAAA,KAAMjE,MAAM,CAACwE;GAC1B,CAAC;AACJ,CAAC,CAAC;AAEF;;;;AAIO,MAAME,WAAW,GAAA/C,OAAA,CAAA+C,WAAA,gBAA+BzE,KAAK,CAAC0E,MAAM,CAAClD,aAAa,CAAC,CAACyC,UAAU,CAAC;AAE9F;AACA;AACA;AAEA,MAAMvB,mBAAmB,GAAIiC,aAA4B,IAAK,GAAGA,aAAa,CAACC,IAAI,IAAID,aAAa,CAACE,IAAI,EAAE","ignoreList":[]}
|
package/dist/cjs/Runners.js
CHANGED
|
@@ -136,6 +136,7 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
136
136
|
for (const message of entry.messages) {
|
|
137
137
|
yield* message.respond(reply);
|
|
138
138
|
}
|
|
139
|
+
// wait for ack
|
|
139
140
|
yield* entry.latch.await;
|
|
140
141
|
}
|
|
141
142
|
entry.replies = [];
|
|
@@ -152,6 +153,7 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
152
153
|
const storageLatch = Effect.unsafeMakeLatch(false);
|
|
153
154
|
if (storage !== MessageStorage.noop) {
|
|
154
155
|
yield* Effect.gen(function* () {
|
|
156
|
+
const foundRequests = new Set();
|
|
155
157
|
while (true) {
|
|
156
158
|
yield* storageLatch.await;
|
|
157
159
|
storageLatch.unsafeClose();
|
|
@@ -160,7 +162,6 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
160
162
|
module: "Runners",
|
|
161
163
|
fiber: "Read replies loop"
|
|
162
164
|
}), [])));
|
|
163
|
-
const foundRequests = new Set();
|
|
164
165
|
// put the replies into the storage requests and then open the latches
|
|
165
166
|
for (let i = 0; i < replies.length; i++) {
|
|
166
167
|
const reply = replies[i];
|
|
@@ -171,6 +172,7 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
171
172
|
foundRequests.add(entry);
|
|
172
173
|
}
|
|
173
174
|
foundRequests.forEach(entry => entry.latch.unsafeOpen());
|
|
175
|
+
foundRequests.clear();
|
|
174
176
|
}
|
|
175
177
|
}).pipe(Effect.interruptible, Effect.forkIn(runnersScope));
|
|
176
178
|
yield* Effect.suspend(() => {
|
|
@@ -210,12 +212,7 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
210
212
|
return Effect.catchAll(options.send({
|
|
211
213
|
address: options_.address.value,
|
|
212
214
|
message
|
|
213
|
-
}),
|
|
214
|
-
if (error._tag === "EntityNotManagedByRunner") {
|
|
215
|
-
return Effect.fail(error);
|
|
216
|
-
}
|
|
217
|
-
return replyFromStorage(message);
|
|
218
|
-
});
|
|
215
|
+
}), _ => replyFromStorage(message));
|
|
219
216
|
}
|
|
220
217
|
return options.notify(options_).pipe(Effect.andThen(replyFromStorage(message)));
|
|
221
218
|
});
|
|
@@ -225,7 +222,7 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
225
222
|
if (options.discard || message._tag === "OutgoingEnvelope") {
|
|
226
223
|
return Effect.catchTag(options.notify(Message.incomingLocalFromOutgoing(message)), "EntityNotAssignedToRunner", () => Effect.void);
|
|
227
224
|
} else if (!duplicate && options.storageOnly !== true) {
|
|
228
|
-
return
|
|
225
|
+
return options.notify(Message.incomingLocalFromOutgoing(message)).pipe(Effect.andThen(storage.registerReplyHandler(message)), Effect.catchTag("EntityNotAssignedToRunner", () => replyFromStorage(message)));
|
|
229
226
|
}
|
|
230
227
|
return options.notify(Message.incomingLocalFromOutgoing(message)).pipe(Effect.catchTag("EntityNotAssignedToRunner", () => Effect.void), Effect.andThen(replyFromStorage(message)));
|
|
231
228
|
});
|
|
@@ -239,18 +236,19 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
239
236
|
const makeNoop = exports.makeNoop = /*#__PURE__*/make({
|
|
240
237
|
send: ({
|
|
241
238
|
message
|
|
242
|
-
}) => Effect.fail(new _ClusterError.
|
|
239
|
+
}) => Effect.fail(new _ClusterError.EntityNotAssignedToRunner({
|
|
243
240
|
address: message.envelope.address
|
|
244
241
|
})),
|
|
245
242
|
notify: () => Effect.void,
|
|
246
|
-
ping: () => Effect.void
|
|
243
|
+
ping: () => Effect.void,
|
|
244
|
+
onRunnerUnavailable: () => Effect.void
|
|
247
245
|
});
|
|
248
246
|
/**
|
|
249
247
|
* @since 1.0.0
|
|
250
248
|
* @category Layers
|
|
251
249
|
*/
|
|
252
250
|
const layerNoop = exports.layerNoop = /*#__PURE__*/Layer.scoped(Runners, makeNoop).pipe(/*#__PURE__*/Layer.provide([Snowflake.layerGenerator]));
|
|
253
|
-
const rpcErrors = /*#__PURE__*/Schema.Union(_ClusterError.
|
|
251
|
+
const rpcErrors = /*#__PURE__*/Schema.Union(_ClusterError.EntityNotAssignedToRunner, _ClusterError.MailboxFull, _ClusterError.AlreadyProcessingMessage);
|
|
254
252
|
/**
|
|
255
253
|
* @since 1.0.0
|
|
256
254
|
* @category Rpcs
|
|
@@ -260,7 +258,7 @@ class Rpcs extends /*#__PURE__*/RpcGroup.make(/*#__PURE__*/Rpc.make("Ping"), /*#
|
|
|
260
258
|
envelope: Envelope.PartialEncoded
|
|
261
259
|
},
|
|
262
260
|
success: Schema.Void,
|
|
263
|
-
error: /*#__PURE__*/Schema.Union(_ClusterError.
|
|
261
|
+
error: /*#__PURE__*/Schema.Union(_ClusterError.EntityNotAssignedToRunner, _ClusterError.AlreadyProcessingMessage)
|
|
264
262
|
}), /*#__PURE__*/Rpc.make("Effect", {
|
|
265
263
|
payload: {
|
|
266
264
|
request: Envelope.PartialEncodedRequest,
|
|
@@ -305,9 +303,11 @@ const makeRpc = exports.makeRpc = /*#__PURE__*/Effect.gen(function* () {
|
|
|
305
303
|
});
|
|
306
304
|
return yield* make({
|
|
307
305
|
ping(address) {
|
|
308
|
-
return RcMap.get(clients, address).pipe(Effect.flatMap(client => client.Ping()), Effect.catchAllCause(() =>
|
|
309
|
-
address
|
|
310
|
-
|
|
306
|
+
return RcMap.get(clients, address).pipe(Effect.flatMap(client => client.Ping()), Effect.catchAllCause(() => {
|
|
307
|
+
return Effect.zipRight(RcMap.invalidate(clients, address), Effect.fail(new _ClusterError.RunnerUnavailable({
|
|
308
|
+
address
|
|
309
|
+
})));
|
|
310
|
+
}), Effect.scoped);
|
|
311
311
|
},
|
|
312
312
|
send({
|
|
313
313
|
address,
|
|
@@ -368,13 +368,9 @@ const makeRpc = exports.makeRpc = /*#__PURE__*/Effect.gen(function* () {
|
|
|
368
368
|
const envelope = message.envelope;
|
|
369
369
|
return RcMap.get(clients, address.value).pipe(Effect.flatMap(client => client.Notify({
|
|
370
370
|
envelope
|
|
371
|
-
})), Effect.scoped, Effect.
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
}
|
|
375
|
-
return Effect.void;
|
|
376
|
-
}));
|
|
377
|
-
}
|
|
371
|
+
})), Effect.scoped, Effect.ignore);
|
|
372
|
+
},
|
|
373
|
+
onRunnerUnavailable: address => RcMap.invalidate(clients, address)
|
|
378
374
|
});
|
|
379
375
|
});
|
|
380
376
|
/**
|