@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.
Files changed (223) hide show
  1. package/RunnerStorage/package.json +6 -0
  2. package/SqlRunnerStorage/package.json +6 -0
  3. package/dist/cjs/ClusterError.js +2 -24
  4. package/dist/cjs/ClusterError.js.map +1 -1
  5. package/dist/cjs/ClusterMetrics.js +13 -15
  6. package/dist/cjs/ClusterMetrics.js.map +1 -1
  7. package/dist/cjs/ClusterWorkflowEngine.js +41 -81
  8. package/dist/cjs/ClusterWorkflowEngine.js.map +1 -1
  9. package/dist/cjs/Entity.js.map +1 -1
  10. package/dist/cjs/EntityAddress.js +9 -1
  11. package/dist/cjs/EntityAddress.js.map +1 -1
  12. package/dist/cjs/EntityId.js +7 -1
  13. package/dist/cjs/EntityId.js.map +1 -1
  14. package/dist/cjs/EntityProxy.js +1 -1
  15. package/dist/cjs/EntityProxy.js.map +1 -1
  16. package/dist/cjs/HttpRunner.js +69 -43
  17. package/dist/cjs/HttpRunner.js.map +1 -1
  18. package/dist/cjs/MessageStorage.js +64 -16
  19. package/dist/cjs/MessageStorage.js.map +1 -1
  20. package/dist/cjs/Runner.js +3 -3
  21. package/dist/cjs/Runner.js.map +1 -1
  22. package/dist/cjs/RunnerAddress.js +7 -0
  23. package/dist/cjs/RunnerAddress.js.map +1 -1
  24. package/dist/cjs/RunnerHealth.js +91 -32
  25. package/dist/cjs/RunnerHealth.js.map +1 -1
  26. package/dist/cjs/RunnerServer.js +38 -24
  27. package/dist/cjs/RunnerServer.js.map +1 -1
  28. package/dist/cjs/RunnerStorage.js +100 -0
  29. package/dist/cjs/RunnerStorage.js.map +1 -0
  30. package/dist/cjs/Runners.js +18 -22
  31. package/dist/cjs/Runners.js.map +1 -1
  32. package/dist/cjs/ShardId.js +17 -7
  33. package/dist/cjs/ShardId.js.map +1 -1
  34. package/dist/cjs/Sharding.js +435 -318
  35. package/dist/cjs/Sharding.js.map +1 -1
  36. package/dist/cjs/ShardingConfig.js +10 -14
  37. package/dist/cjs/ShardingConfig.js.map +1 -1
  38. package/dist/cjs/Snowflake.js +1 -1
  39. package/dist/cjs/SocketRunner.js +1 -1
  40. package/dist/cjs/SocketRunner.js.map +1 -1
  41. package/dist/cjs/SqlMessageStorage.js +22 -28
  42. package/dist/cjs/SqlMessageStorage.js.map +1 -1
  43. package/dist/cjs/SqlRunnerStorage.js +378 -0
  44. package/dist/cjs/SqlRunnerStorage.js.map +1 -0
  45. package/dist/cjs/index.js +5 -15
  46. package/dist/cjs/internal/entityManager.js +40 -9
  47. package/dist/cjs/internal/entityManager.js.map +1 -1
  48. package/dist/dts/ClusterError.d.ts +0 -22
  49. package/dist/dts/ClusterError.d.ts.map +1 -1
  50. package/dist/dts/ClusterMetrics.d.ts +4 -14
  51. package/dist/dts/ClusterMetrics.d.ts.map +1 -1
  52. package/dist/dts/ClusterWorkflowEngine.d.ts.map +1 -1
  53. package/dist/dts/Entity.d.ts +2 -2
  54. package/dist/dts/Entity.d.ts.map +1 -1
  55. package/dist/dts/EntityAddress.d.ts +11 -0
  56. package/dist/dts/EntityAddress.d.ts.map +1 -1
  57. package/dist/dts/EntityId.d.ts +5 -0
  58. package/dist/dts/EntityId.d.ts.map +1 -1
  59. package/dist/dts/EntityProxy.d.ts +5 -6
  60. package/dist/dts/EntityProxy.d.ts.map +1 -1
  61. package/dist/dts/HttpRunner.d.ts +48 -25
  62. package/dist/dts/HttpRunner.d.ts.map +1 -1
  63. package/dist/dts/MessageStorage.d.ts +13 -5
  64. package/dist/dts/MessageStorage.d.ts.map +1 -1
  65. package/dist/dts/Runner.d.ts +4 -4
  66. package/dist/dts/Runner.d.ts.map +1 -1
  67. package/dist/dts/RunnerAddress.d.ts +5 -0
  68. package/dist/dts/RunnerAddress.d.ts.map +1 -1
  69. package/dist/dts/RunnerHealth.d.ts +24 -16
  70. package/dist/dts/RunnerHealth.d.ts.map +1 -1
  71. package/dist/dts/RunnerServer.d.ts +5 -4
  72. package/dist/dts/RunnerServer.d.ts.map +1 -1
  73. package/dist/dts/{ShardStorage.d.ts → RunnerStorage.d.ts} +41 -54
  74. package/dist/dts/RunnerStorage.d.ts.map +1 -0
  75. package/dist/dts/Runners.d.ts +15 -11
  76. package/dist/dts/Runners.d.ts.map +1 -1
  77. package/dist/dts/ShardId.d.ts +1 -1
  78. package/dist/dts/ShardId.d.ts.map +1 -1
  79. package/dist/dts/Sharding.d.ts +20 -10
  80. package/dist/dts/Sharding.d.ts.map +1 -1
  81. package/dist/dts/ShardingConfig.d.ts +40 -14
  82. package/dist/dts/ShardingConfig.d.ts.map +1 -1
  83. package/dist/dts/SocketRunner.d.ts +4 -3
  84. package/dist/dts/SocketRunner.d.ts.map +1 -1
  85. package/dist/dts/SqlMessageStorage.d.ts +2 -3
  86. package/dist/dts/SqlMessageStorage.d.ts.map +1 -1
  87. package/dist/dts/SqlRunnerStorage.d.ts +40 -0
  88. package/dist/dts/SqlRunnerStorage.d.ts.map +1 -0
  89. package/dist/dts/index.d.ts +4 -24
  90. package/dist/dts/index.d.ts.map +1 -1
  91. package/dist/esm/ClusterError.js +0 -21
  92. package/dist/esm/ClusterError.js.map +1 -1
  93. package/dist/esm/ClusterMetrics.js +12 -14
  94. package/dist/esm/ClusterMetrics.js.map +1 -1
  95. package/dist/esm/ClusterWorkflowEngine.js +41 -81
  96. package/dist/esm/ClusterWorkflowEngine.js.map +1 -1
  97. package/dist/esm/Entity.js.map +1 -1
  98. package/dist/esm/EntityAddress.js +7 -0
  99. package/dist/esm/EntityAddress.js.map +1 -1
  100. package/dist/esm/EntityId.js +5 -0
  101. package/dist/esm/EntityId.js.map +1 -1
  102. package/dist/esm/EntityProxy.js +2 -2
  103. package/dist/esm/EntityProxy.js.map +1 -1
  104. package/dist/esm/HttpRunner.js +62 -39
  105. package/dist/esm/HttpRunner.js.map +1 -1
  106. package/dist/esm/MessageStorage.js +65 -17
  107. package/dist/esm/MessageStorage.js.map +1 -1
  108. package/dist/esm/Runner.js +3 -3
  109. package/dist/esm/Runner.js.map +1 -1
  110. package/dist/esm/RunnerAddress.js +7 -0
  111. package/dist/esm/RunnerAddress.js.map +1 -1
  112. package/dist/esm/RunnerHealth.js +88 -30
  113. package/dist/esm/RunnerHealth.js.map +1 -1
  114. package/dist/esm/RunnerServer.js +38 -24
  115. package/dist/esm/RunnerServer.js.map +1 -1
  116. package/dist/esm/RunnerStorage.js +90 -0
  117. package/dist/esm/RunnerStorage.js.map +1 -0
  118. package/dist/esm/Runners.js +19 -23
  119. package/dist/esm/Runners.js.map +1 -1
  120. package/dist/esm/ShardId.js +16 -6
  121. package/dist/esm/ShardId.js.map +1 -1
  122. package/dist/esm/Sharding.js +438 -321
  123. package/dist/esm/Sharding.js.map +1 -1
  124. package/dist/esm/ShardingConfig.js +10 -14
  125. package/dist/esm/ShardingConfig.js.map +1 -1
  126. package/dist/esm/Snowflake.js +1 -1
  127. package/dist/esm/SocketRunner.js +1 -1
  128. package/dist/esm/SocketRunner.js.map +1 -1
  129. package/dist/esm/SqlMessageStorage.js +22 -28
  130. package/dist/esm/SqlMessageStorage.js.map +1 -1
  131. package/dist/esm/SqlRunnerStorage.js +369 -0
  132. package/dist/esm/SqlRunnerStorage.js.map +1 -0
  133. package/dist/esm/index.js +4 -24
  134. package/dist/esm/index.js.map +1 -1
  135. package/dist/esm/internal/entityManager.js +40 -9
  136. package/dist/esm/internal/entityManager.js.map +1 -1
  137. package/package.json +20 -60
  138. package/src/ClusterError.ts +0 -24
  139. package/src/ClusterMetrics.ts +12 -16
  140. package/src/ClusterWorkflowEngine.ts +38 -78
  141. package/src/Entity.ts +2 -7
  142. package/src/EntityAddress.ts +10 -0
  143. package/src/EntityId.ts +6 -0
  144. package/src/EntityProxy.ts +10 -10
  145. package/src/HttpRunner.ts +132 -67
  146. package/src/MessageStorage.ts +89 -24
  147. package/src/Runner.ts +4 -4
  148. package/src/RunnerAddress.ts +8 -0
  149. package/src/RunnerHealth.ts +119 -56
  150. package/src/RunnerServer.ts +64 -47
  151. package/src/RunnerStorage.ts +218 -0
  152. package/src/Runners.ts +32 -45
  153. package/src/ShardId.ts +14 -3
  154. package/src/Sharding.ts +548 -413
  155. package/src/ShardingConfig.ts +39 -31
  156. package/src/Snowflake.ts +1 -1
  157. package/src/SocketRunner.ts +6 -4
  158. package/src/SqlMessageStorage.ts +28 -30
  159. package/src/SqlRunnerStorage.ts +541 -0
  160. package/src/index.ts +4 -29
  161. package/src/internal/entityManager.ts +44 -10
  162. package/HttpCommon/package.json +0 -6
  163. package/HttpShardManager/package.json +0 -6
  164. package/ShardManager/package.json +0 -6
  165. package/ShardStorage/package.json +0 -6
  166. package/SocketShardManager/package.json +0 -6
  167. package/SqlShardStorage/package.json +0 -6
  168. package/SynchronizedClock/package.json +0 -6
  169. package/dist/cjs/HttpCommon.js +0 -48
  170. package/dist/cjs/HttpCommon.js.map +0 -1
  171. package/dist/cjs/HttpShardManager.js +0 -139
  172. package/dist/cjs/HttpShardManager.js.map +0 -1
  173. package/dist/cjs/ShardManager.js +0 -549
  174. package/dist/cjs/ShardManager.js.map +0 -1
  175. package/dist/cjs/ShardStorage.js +0 -151
  176. package/dist/cjs/ShardStorage.js.map +0 -1
  177. package/dist/cjs/SocketShardManager.js +0 -32
  178. package/dist/cjs/SocketShardManager.js.map +0 -1
  179. package/dist/cjs/SqlShardStorage.js +0 -253
  180. package/dist/cjs/SqlShardStorage.js.map +0 -1
  181. package/dist/cjs/SynchronizedClock.js +0 -65
  182. package/dist/cjs/SynchronizedClock.js.map +0 -1
  183. package/dist/cjs/internal/shardManager.js +0 -353
  184. package/dist/cjs/internal/shardManager.js.map +0 -1
  185. package/dist/dts/HttpCommon.d.ts +0 -25
  186. package/dist/dts/HttpCommon.d.ts.map +0 -1
  187. package/dist/dts/HttpShardManager.d.ts +0 -119
  188. package/dist/dts/HttpShardManager.d.ts.map +0 -1
  189. package/dist/dts/ShardManager.d.ts +0 -459
  190. package/dist/dts/ShardManager.d.ts.map +0 -1
  191. package/dist/dts/ShardStorage.d.ts.map +0 -1
  192. package/dist/dts/SocketShardManager.d.ts +0 -17
  193. package/dist/dts/SocketShardManager.d.ts.map +0 -1
  194. package/dist/dts/SqlShardStorage.d.ts +0 -38
  195. package/dist/dts/SqlShardStorage.d.ts.map +0 -1
  196. package/dist/dts/SynchronizedClock.d.ts +0 -19
  197. package/dist/dts/SynchronizedClock.d.ts.map +0 -1
  198. package/dist/dts/internal/shardManager.d.ts +0 -2
  199. package/dist/dts/internal/shardManager.d.ts.map +0 -1
  200. package/dist/esm/HttpCommon.js +0 -38
  201. package/dist/esm/HttpCommon.js.map +0 -1
  202. package/dist/esm/HttpShardManager.js +0 -128
  203. package/dist/esm/HttpShardManager.js.map +0 -1
  204. package/dist/esm/ShardManager.js +0 -535
  205. package/dist/esm/ShardManager.js.map +0 -1
  206. package/dist/esm/ShardStorage.js +0 -141
  207. package/dist/esm/ShardStorage.js.map +0 -1
  208. package/dist/esm/SocketShardManager.js +0 -24
  209. package/dist/esm/SocketShardManager.js.map +0 -1
  210. package/dist/esm/SqlShardStorage.js +0 -244
  211. package/dist/esm/SqlShardStorage.js.map +0 -1
  212. package/dist/esm/SynchronizedClock.js +0 -57
  213. package/dist/esm/SynchronizedClock.js.map +0 -1
  214. package/dist/esm/internal/shardManager.js +0 -342
  215. package/dist/esm/internal/shardManager.js.map +0 -1
  216. package/src/HttpCommon.ts +0 -73
  217. package/src/HttpShardManager.ts +0 -273
  218. package/src/ShardManager.ts +0 -823
  219. package/src/ShardStorage.ts +0 -297
  220. package/src/SocketShardManager.ts +0 -48
  221. package/src/SqlShardStorage.ts +0 -329
  222. package/src/SynchronizedClock.ts +0 -82
  223. package/src/internal/shardManager.ts +0 -412
@@ -3,12 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.makePing = exports.make = exports.layerRpc = exports.layerNoop = exports.layer = exports.RunnerHealth = void 0;
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 RcMap = _interopRequireWildcard(require("effect/RcMap"));
11
- var MessageStorage = _interopRequireWildcard(require("./MessageStorage.js"));
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
- const layerNoop = exports.layerNoop = /*#__PURE__*/Layer.scoped(RunnerHealth, /*#__PURE__*/make({
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(3000), Effect.retry({
69
- times: 3
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 yield* make({
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 layer = exports.layer = /*#__PURE__*/Layer.scoped(RunnerHealth, makePing);
69
+ const layerPing = exports.layerPing = /*#__PURE__*/Layer.scoped(RunnerHealth, makePing);
83
70
  /**
84
- * A layer which will ping a Runner directly to check if it is healthy.
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 layerRpc = exports.layerRpc = /*#__PURE__*/layer.pipe(/*#__PURE__*/Layer.provide(Runners.layerRpc), /*#__PURE__*/Layer.provide(MessageStorage.layerNoop));
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":["Context","_interopRequireWildcard","require","Effect","Layer","RcMap","MessageStorage","Runners","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","RunnerHealth","Tag","exports","make","fnUntraced","options","connections","lookup","_address","void","onConnection","address","isAlive","of","layerNoop","scoped","succeed","makePing","gen","runners","ping","pipe","timeout","retry","times","isSuccess","layer","layerRpc","provide"],"sources":["../../src/RunnerHealth.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
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":[]}
@@ -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 ClusterError = _interopRequireWildcard(require("./ClusterError.js"));
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 resume;
52
- let replyEncoded;
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
- return Effect.flatMap(Reply.serialize(reply), reply => {
58
- if (resume) {
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
- return Effect.zipRight(persisted ? Effect.zipRight(storage.registerReplyHandler(message, Effect.sync(() => resume(Effect.fail(new ClusterError.EntityNotAssignedToRunner({
68
- address: request.address
69
- }))))), sharding.notify(message)) : sharding.send(message), Effect.async(resume_ => {
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_(Effect.succeed(replyEncoded));
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, Effect.suspend(() => mailbox.fail(new ClusterError.EntityNotAssignedToRunner({
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), /*#__PURE__*/Layer.provideMerge(SynchronizedClock.layer), /*#__PURE__*/Layer.provide(ShardManager.layerClientRpc));
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 the ShardManager and recieve shard assignments,
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(ShardManager.layerClientRpc), /*#__PURE__*/Layer.provide(ShardStorage.layerNoop), /*#__PURE__*/Layer.updateService(_ShardingConfig.ShardingConfig, config => ({
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","ClusterError","Message","MessageStorage","Reply","Runners","Sharding","_ShardingConfig","ShardManager","ShardStorage","SynchronizedClock","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","resume","replyEncoded","message","reply","flatMap","serialize","succeed","zipRight","registerReplyHandler","sync","fail","EntityNotAssignedToRunner","address","send","async","resume_","Stream","make","mailbox","unsafeOffer","as","suspend","Envelope","layer","spanPrefix","disableTracing","pipe","provide","layerWithClients","provideMerge","layerRpc","layerClientRpc","layerClientOnly","layerNoop","updateService","ShardingConfig","config","runnerAddress"],"sources":["../../src/RunnerServer.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,SAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,uBAAA,CAAAC,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAJ,uBAAA,CAAAC,OAAA;AACA,IAAAI,OAAA,GAAAL,uBAAA,CAAAC,OAAA;AACA,IAAAK,MAAA,GAAAN,uBAAA,CAAAC,OAAA;AACA,IAAAM,YAAA,GAAAP,uBAAA,CAAAC,OAAA;AACA,IAAAO,OAAA,GAAAR,uBAAA,CAAAC,OAAA;AACA,IAAAQ,cAAA,GAAAT,uBAAA,CAAAC,OAAA;AACA,IAAAS,KAAA,GAAAV,uBAAA,CAAAC,OAAA;AACA,IAAAU,OAAA,GAAAX,uBAAA,CAAAC,OAAA;AACA,IAAAW,QAAA,GAAAZ,uBAAA,CAAAC,OAAA;AACA,IAAAY,eAAA,GAAAZ,OAAA;AACA,IAAAa,YAAA,GAAAd,uBAAA,CAAAC,OAAA;AACA,IAAAc,YAAA,GAAAf,uBAAA,CAAAC,OAAA;AACA,IAAAe,iBAAA,GAAAhB,uBAAA,CAAAC,OAAA;AAA2D,SAAAD,wBAAAiB,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAnB,uBAAA,YAAAA,CAAAiB,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;AAlB3D;;;;AAoBA,MAAMkB,SAAS,gBAAG,IAAAC,kBAAQ,EAACnC,MAAM,CAACoC,IAAI,CAAC;AAEvC;;;;AAIO,MAAMC,aAAa,GAAAC,OAAA,CAAAD,aAAA,gBAAG5B,OAAO,CAAC8B,IAAI,CAACC,OAAO,cAACxC,MAAM,CAACyC,GAAG,CAAC,aAAS;EACpE,MAAMC,QAAQ,GAAG,OAAOhC,QAAQ,CAACA,QAAQ;EACzC,MAAMiC,OAAO,GAAG,OAAOpC,cAAc,CAACA,cAAc;EAEpD,OAAO;IACLqC,IAAI,EAAEA,CAAA,KAAM5C,MAAM,CAACoC,IAAI;IACvBS,MAAM,EAAEA,CAAC;MAAEC;IAAQ,CAAE,KACnBJ,QAAQ,CAACK,MAAM,CACbD,QAAQ,CAACE,IAAI,KAAK,SAAS,GACvB,IAAI1C,OAAO,CAAC2C,eAAe,CAAC;MAC5BH,QAAQ;MACRI,OAAO,EAAEhB,SAAS;MAClBiB,aAAa,EAAE/C,MAAM,CAACgD,IAAI;KAC3B,CAAC,GACA,IAAI9C,OAAO,CAAC+C,gBAAgB,CAAC;MAAEP;IAAQ,CAAE,CAAC,CAC/C;IACH9C,MAAM,EAAEA,CAAC;MAAEsD,SAAS;MAAEC;IAAO,CAAE,KAAI;MACjC,IAAIC,MAAuG;MAC3G,IAAIC,YAAiD;MACrD,MAAMC,OAAO,GAAG,IAAIpD,OAAO,CAAC2C,eAAe,CAAC;QAC1CH,QAAQ,EAAES,OAAO;QACjBJ,aAAa,EAAE/C,MAAM,CAACgD,IAAI,EAAE;QAC5BF,OAAOA,CAACS,KAAK;UACX,OAAO3D,MAAM,CAAC4D,OAAO,CAACpD,KAAK,CAACqD,SAAS,CAACF,KAAK,CAAC,EAAGA,KAAK,IAAI;YACtD,IAAIH,MAAM,EAAE;cACVA,MAAM,CAACxD,MAAM,CAAC8D,OAAO,CAACH,KAAK,CAAC,CAAC;YAC/B,CAAC,MAAM;cACLF,YAAY,GAAGE,KAAK;YACtB;YACA,OAAO3D,MAAM,CAACoC,IAAI;UACpB,CAAC,CAAC;QACJ;OACD,CAAC;MACF,OAAOpC,MAAM,CAAC+D,QAAQ,CACpBT,SAAS,GACPtD,MAAM,CAAC+D,QAAQ,CACbpB,OAAO,CAACqB,oBAAoB,CAC1BN,OAAO,EACP1D,MAAM,CAACiE,IAAI,CAAC,MACVT,MAAM,CAACxD,MAAM,CAACkE,IAAI,CAChB,IAAI7D,YAAY,CAAC8D,yBAAyB,CAAC;QACzCC,OAAO,EAAEb,OAAO,CAACa;OAClB,CAAC,CACH,CAAC,CACH,CACF,EACD1B,QAAQ,CAACK,MAAM,CAACW,OAAO,CAAC,CACzB,GACDhB,QAAQ,CAAC2B,IAAI,CAACX,OAAO,CAAC,EACxB1D,MAAM,CAACsE,KAAK,CAAmEC,OAAO,IAAI;QACxF,IAAId,YAAY,EAAE;UAChBc,OAAO,CAACvE,MAAM,CAAC8D,OAAO,CAACL,YAAY,CAAC,CAAC;QACvC,CAAC,MAAM;UACLD,MAAM,GAAGe,OAAO;QAClB;MACF,CAAC,CAAC,CACH;IACH,CAAC;IACDC,MAAM,EAAEA,CAAC;MAAElB,SAAS;MAAEC;IAAO,CAAE,KAC7BvD,MAAM,CAAC4D,OAAO,CACZzD,OAAO,CAACsE,IAAI,EAAmE,EAC9EC,OAAO,IAAI;MACV,MAAMhB,OAAO,GAAG,IAAIpD,OAAO,CAAC2C,eAAe,CAAC;QAC1CH,QAAQ,EAAES,OAAO;QACjBJ,aAAa,EAAE/C,MAAM,CAACgD,IAAI,EAAE;QAC5BF,OAAOA,CAACS,KAAK;UACX,OAAO3D,MAAM,CAAC4D,OAAO,CAACpD,KAAK,CAACqD,SAAS,CAACF,KAAK,CAAC,EAAGA,KAAK,IAAI;YACtDe,OAAO,CAACC,WAAW,CAAChB,KAAK,CAAC;YAC1B,OAAO3D,MAAM,CAACoC,IAAI;UACpB,CAAC,CAAC;QACJ;OACD,CAAC;MACF,OAAOpC,MAAM,CAAC4E,EAAE,CACdtB,SAAS,GACPtD,MAAM,CAAC+D,QAAQ,CACbpB,OAAO,CAACqB,oBAAoB,CAC1BN,OAAO,EACP1D,MAAM,CAAC6E,OAAO,CAAC,MACbH,OAAO,CAACR,IAAI,CACV,IAAI7D,YAAY,CAAC8D,yBAAyB,CAAC;QACzCC,OAAO,EAAEb,OAAO,CAACa;OAClB,CAAC,CACH,CACF,CACF,EACD1B,QAAQ,CAACK,MAAM,CAACW,OAAO,CAAC,CACzB,GACDhB,QAAQ,CAAC2B,IAAI,CAACX,OAAO,CAAC,EACxBgB,OAAO,CACR;IACH,CAAC,CACF;IACHI,QAAQ,EAAEA,CAAC;MAAEhC;IAAQ,CAAE,KAAKJ,QAAQ,CAAC2B,IAAI,CAAC,IAAI/D,OAAO,CAAC+C,gBAAgB,CAAC;MAAEP;IAAQ,CAAE,CAAC;GACrF;AACH,CAAC,CAAC,CAAC;AAEH;;;;;;;;;AASO,MAAMiC,KAAK,GAAAzC,OAAA,CAAAyC,KAAA,gBAIdlF,SAAS,CAACkF,KAAK,CAACtE,OAAO,CAAC8B,IAAI,EAAE;EAChCyC,UAAU,EAAE,cAAc;EAC1BC,cAAc,EAAE;CACjB,CAAC,CAACC,IAAI,cAAChF,KAAK,CAACiF,OAAO,CAAC9C,aAAa,CAAC,CAAC;AAErC;;;;;;AAMO,MAAM+C,gBAAgB,GAAA9C,OAAA,CAAA8C,gBAAA,gBAQzBL,KAAK,CAACG,IAAI,cACZhF,KAAK,CAACmF,YAAY,CAAC3E,QAAQ,CAACqE,KAAK,CAAC,eAClC7E,KAAK,CAACmF,YAAY,CAAC5E,OAAO,CAAC6E,QAAQ,CAAC,eACpCpF,KAAK,CAACmF,YAAY,CAACvE,iBAAiB,CAACiE,KAAK,CAAC,eAC3C7E,KAAK,CAACiF,OAAO,CAACvE,YAAY,CAAC2E,cAAc,CAAC,CAC3C;AAED;;;;;;;;;;AAUO,MAAMC,eAAe,GAAAlD,OAAA,CAAAkD,eAAA,gBAMxB9E,QAAQ,CAACqE,KAAK,CAACG,IAAI,cACrBhF,KAAK,CAACmF,YAAY,CAAC5E,OAAO,CAAC6E,QAAQ,CAAC,eACpCpF,KAAK,CAACiF,OAAO,CAACvE,YAAY,CAAC2E,cAAc,CAAC,eAC1CrF,KAAK,CAACiF,OAAO,CAACtE,YAAY,CAAC4E,SAAS,CAAC,eACrCvF,KAAK,CAACwF,aAAa,CAACC,8BAAc,EAAGC,MAAM,KAAM;EAC/C,GAAGA,MAAM;EACTC,aAAa,EAAEzF,MAAM,CAACgD,IAAI;CAC3B,CAAC,CAAC,CACJ","ignoreList":[]}
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":[]}
@@ -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
- }), error => {
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 storage.registerReplyHandler(message, Effect.suspend(() => replyFromStorage(message).pipe(Effect.forkIn(runnersScope), Effect.interruptible))).pipe(Effect.andThen(options.notify(Message.incomingLocalFromOutgoing(message))), Effect.catchTag("EntityNotAssignedToRunner", () => Effect.void));
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.EntityNotManagedByRunner({
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.EntityNotManagedByRunner, _ClusterError.EntityNotAssignedToRunner, _ClusterError.MailboxFull, _ClusterError.AlreadyProcessingMessage);
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.EntityNotManagedByRunner, _ClusterError.EntityNotAssignedToRunner, _ClusterError.AlreadyProcessingMessage)
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(() => Effect.fail(new _ClusterError.RunnerUnavailable({
309
- address
310
- }))), Effect.scoped);
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.catchAll(error => {
372
- if (error._tag === "EntityNotManagedByRunner") {
373
- return Effect.fail(error);
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
  /**