@effect/cluster 0.50.6 → 0.52.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 (232) 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/ClusterSchema.js +17 -2
  8. package/dist/cjs/ClusterSchema.js.map +1 -1
  9. package/dist/cjs/ClusterWorkflowEngine.js +50 -83
  10. package/dist/cjs/ClusterWorkflowEngine.js.map +1 -1
  11. package/dist/cjs/Entity.js +1 -13
  12. package/dist/cjs/Entity.js.map +1 -1
  13. package/dist/cjs/EntityAddress.js +9 -1
  14. package/dist/cjs/EntityAddress.js.map +1 -1
  15. package/dist/cjs/EntityId.js +7 -1
  16. package/dist/cjs/EntityId.js.map +1 -1
  17. package/dist/cjs/EntityProxy.js +1 -1
  18. package/dist/cjs/EntityProxy.js.map +1 -1
  19. package/dist/cjs/HttpRunner.js +69 -43
  20. package/dist/cjs/HttpRunner.js.map +1 -1
  21. package/dist/cjs/MessageStorage.js +64 -16
  22. package/dist/cjs/MessageStorage.js.map +1 -1
  23. package/dist/cjs/Runner.js +3 -3
  24. package/dist/cjs/Runner.js.map +1 -1
  25. package/dist/cjs/RunnerAddress.js +7 -0
  26. package/dist/cjs/RunnerAddress.js.map +1 -1
  27. package/dist/cjs/RunnerHealth.js +91 -32
  28. package/dist/cjs/RunnerHealth.js.map +1 -1
  29. package/dist/cjs/RunnerServer.js +38 -24
  30. package/dist/cjs/RunnerServer.js.map +1 -1
  31. package/dist/cjs/RunnerStorage.js +100 -0
  32. package/dist/cjs/RunnerStorage.js.map +1 -0
  33. package/dist/cjs/Runners.js +18 -22
  34. package/dist/cjs/Runners.js.map +1 -1
  35. package/dist/cjs/ShardId.js +17 -7
  36. package/dist/cjs/ShardId.js.map +1 -1
  37. package/dist/cjs/Sharding.js +444 -320
  38. package/dist/cjs/Sharding.js.map +1 -1
  39. package/dist/cjs/ShardingConfig.js +10 -14
  40. package/dist/cjs/ShardingConfig.js.map +1 -1
  41. package/dist/cjs/Snowflake.js +1 -1
  42. package/dist/cjs/SocketRunner.js +1 -1
  43. package/dist/cjs/SocketRunner.js.map +1 -1
  44. package/dist/cjs/SqlMessageStorage.js +22 -28
  45. package/dist/cjs/SqlMessageStorage.js.map +1 -1
  46. package/dist/cjs/SqlRunnerStorage.js +375 -0
  47. package/dist/cjs/SqlRunnerStorage.js.map +1 -0
  48. package/dist/cjs/index.js +5 -15
  49. package/dist/cjs/internal/entityManager.js +42 -23
  50. package/dist/cjs/internal/entityManager.js.map +1 -1
  51. package/dist/dts/ClusterError.d.ts +0 -22
  52. package/dist/dts/ClusterError.d.ts.map +1 -1
  53. package/dist/dts/ClusterMetrics.d.ts +4 -14
  54. package/dist/dts/ClusterMetrics.d.ts.map +1 -1
  55. package/dist/dts/ClusterSchema.d.ts +9 -1
  56. package/dist/dts/ClusterSchema.d.ts.map +1 -1
  57. package/dist/dts/ClusterWorkflowEngine.d.ts.map +1 -1
  58. package/dist/dts/Entity.d.ts +3 -14
  59. package/dist/dts/Entity.d.ts.map +1 -1
  60. package/dist/dts/EntityAddress.d.ts +11 -0
  61. package/dist/dts/EntityAddress.d.ts.map +1 -1
  62. package/dist/dts/EntityId.d.ts +5 -0
  63. package/dist/dts/EntityId.d.ts.map +1 -1
  64. package/dist/dts/EntityProxy.d.ts +5 -6
  65. package/dist/dts/EntityProxy.d.ts.map +1 -1
  66. package/dist/dts/HttpRunner.d.ts +48 -25
  67. package/dist/dts/HttpRunner.d.ts.map +1 -1
  68. package/dist/dts/MessageStorage.d.ts +13 -5
  69. package/dist/dts/MessageStorage.d.ts.map +1 -1
  70. package/dist/dts/Runner.d.ts +4 -4
  71. package/dist/dts/Runner.d.ts.map +1 -1
  72. package/dist/dts/RunnerAddress.d.ts +5 -0
  73. package/dist/dts/RunnerAddress.d.ts.map +1 -1
  74. package/dist/dts/RunnerHealth.d.ts +24 -16
  75. package/dist/dts/RunnerHealth.d.ts.map +1 -1
  76. package/dist/dts/RunnerServer.d.ts +5 -4
  77. package/dist/dts/RunnerServer.d.ts.map +1 -1
  78. package/dist/dts/{ShardStorage.d.ts → RunnerStorage.d.ts} +41 -54
  79. package/dist/dts/RunnerStorage.d.ts.map +1 -0
  80. package/dist/dts/Runners.d.ts +15 -11
  81. package/dist/dts/Runners.d.ts.map +1 -1
  82. package/dist/dts/ShardId.d.ts +1 -1
  83. package/dist/dts/ShardId.d.ts.map +1 -1
  84. package/dist/dts/Sharding.d.ts +20 -10
  85. package/dist/dts/Sharding.d.ts.map +1 -1
  86. package/dist/dts/ShardingConfig.d.ts +40 -14
  87. package/dist/dts/ShardingConfig.d.ts.map +1 -1
  88. package/dist/dts/SocketRunner.d.ts +4 -3
  89. package/dist/dts/SocketRunner.d.ts.map +1 -1
  90. package/dist/dts/SqlMessageStorage.d.ts +2 -3
  91. package/dist/dts/SqlMessageStorage.d.ts.map +1 -1
  92. package/dist/dts/SqlRunnerStorage.d.ts +40 -0
  93. package/dist/dts/SqlRunnerStorage.d.ts.map +1 -0
  94. package/dist/dts/index.d.ts +4 -24
  95. package/dist/dts/index.d.ts.map +1 -1
  96. package/dist/esm/ClusterError.js +0 -21
  97. package/dist/esm/ClusterError.js.map +1 -1
  98. package/dist/esm/ClusterMetrics.js +12 -14
  99. package/dist/esm/ClusterMetrics.js.map +1 -1
  100. package/dist/esm/ClusterSchema.js +17 -2
  101. package/dist/esm/ClusterSchema.js.map +1 -1
  102. package/dist/esm/ClusterWorkflowEngine.js +50 -83
  103. package/dist/esm/ClusterWorkflowEngine.js.map +1 -1
  104. package/dist/esm/Entity.js +0 -12
  105. package/dist/esm/Entity.js.map +1 -1
  106. package/dist/esm/EntityAddress.js +7 -0
  107. package/dist/esm/EntityAddress.js.map +1 -1
  108. package/dist/esm/EntityId.js +5 -0
  109. package/dist/esm/EntityId.js.map +1 -1
  110. package/dist/esm/EntityProxy.js +2 -2
  111. package/dist/esm/EntityProxy.js.map +1 -1
  112. package/dist/esm/HttpRunner.js +62 -39
  113. package/dist/esm/HttpRunner.js.map +1 -1
  114. package/dist/esm/MessageStorage.js +65 -17
  115. package/dist/esm/MessageStorage.js.map +1 -1
  116. package/dist/esm/Runner.js +3 -3
  117. package/dist/esm/Runner.js.map +1 -1
  118. package/dist/esm/RunnerAddress.js +7 -0
  119. package/dist/esm/RunnerAddress.js.map +1 -1
  120. package/dist/esm/RunnerHealth.js +88 -30
  121. package/dist/esm/RunnerHealth.js.map +1 -1
  122. package/dist/esm/RunnerServer.js +38 -24
  123. package/dist/esm/RunnerServer.js.map +1 -1
  124. package/dist/esm/RunnerStorage.js +90 -0
  125. package/dist/esm/RunnerStorage.js.map +1 -0
  126. package/dist/esm/Runners.js +19 -23
  127. package/dist/esm/Runners.js.map +1 -1
  128. package/dist/esm/ShardId.js +16 -6
  129. package/dist/esm/ShardId.js.map +1 -1
  130. package/dist/esm/Sharding.js +447 -323
  131. package/dist/esm/Sharding.js.map +1 -1
  132. package/dist/esm/ShardingConfig.js +10 -14
  133. package/dist/esm/ShardingConfig.js.map +1 -1
  134. package/dist/esm/Snowflake.js +1 -1
  135. package/dist/esm/SocketRunner.js +1 -1
  136. package/dist/esm/SocketRunner.js.map +1 -1
  137. package/dist/esm/SqlMessageStorage.js +22 -28
  138. package/dist/esm/SqlMessageStorage.js.map +1 -1
  139. package/dist/esm/SqlRunnerStorage.js +366 -0
  140. package/dist/esm/SqlRunnerStorage.js.map +1 -0
  141. package/dist/esm/index.js +4 -24
  142. package/dist/esm/index.js.map +1 -1
  143. package/dist/esm/internal/entityManager.js +41 -22
  144. package/dist/esm/internal/entityManager.js.map +1 -1
  145. package/package.json +20 -60
  146. package/src/ClusterError.ts +0 -24
  147. package/src/ClusterMetrics.ts +12 -16
  148. package/src/ClusterSchema.ts +17 -2
  149. package/src/ClusterWorkflowEngine.ts +48 -80
  150. package/src/Entity.ts +3 -21
  151. package/src/EntityAddress.ts +10 -0
  152. package/src/EntityId.ts +6 -0
  153. package/src/EntityProxy.ts +10 -10
  154. package/src/HttpRunner.ts +132 -67
  155. package/src/MessageStorage.ts +89 -24
  156. package/src/Runner.ts +4 -4
  157. package/src/RunnerAddress.ts +8 -0
  158. package/src/RunnerHealth.ts +119 -56
  159. package/src/RunnerServer.ts +64 -47
  160. package/src/RunnerStorage.ts +218 -0
  161. package/src/Runners.ts +32 -45
  162. package/src/ShardId.ts +14 -3
  163. package/src/Sharding.ts +561 -417
  164. package/src/ShardingConfig.ts +39 -31
  165. package/src/Snowflake.ts +1 -1
  166. package/src/SocketRunner.ts +6 -4
  167. package/src/SqlMessageStorage.ts +28 -30
  168. package/src/SqlRunnerStorage.ts +537 -0
  169. package/src/index.ts +4 -29
  170. package/src/internal/entityManager.ts +45 -29
  171. package/HttpCommon/package.json +0 -6
  172. package/HttpShardManager/package.json +0 -6
  173. package/ShardManager/package.json +0 -6
  174. package/ShardStorage/package.json +0 -6
  175. package/SocketShardManager/package.json +0 -6
  176. package/SqlShardStorage/package.json +0 -6
  177. package/SynchronizedClock/package.json +0 -6
  178. package/dist/cjs/HttpCommon.js +0 -48
  179. package/dist/cjs/HttpCommon.js.map +0 -1
  180. package/dist/cjs/HttpShardManager.js +0 -139
  181. package/dist/cjs/HttpShardManager.js.map +0 -1
  182. package/dist/cjs/ShardManager.js +0 -549
  183. package/dist/cjs/ShardManager.js.map +0 -1
  184. package/dist/cjs/ShardStorage.js +0 -151
  185. package/dist/cjs/ShardStorage.js.map +0 -1
  186. package/dist/cjs/SocketShardManager.js +0 -32
  187. package/dist/cjs/SocketShardManager.js.map +0 -1
  188. package/dist/cjs/SqlShardStorage.js +0 -253
  189. package/dist/cjs/SqlShardStorage.js.map +0 -1
  190. package/dist/cjs/SynchronizedClock.js +0 -65
  191. package/dist/cjs/SynchronizedClock.js.map +0 -1
  192. package/dist/cjs/internal/shardManager.js +0 -353
  193. package/dist/cjs/internal/shardManager.js.map +0 -1
  194. package/dist/dts/HttpCommon.d.ts +0 -25
  195. package/dist/dts/HttpCommon.d.ts.map +0 -1
  196. package/dist/dts/HttpShardManager.d.ts +0 -119
  197. package/dist/dts/HttpShardManager.d.ts.map +0 -1
  198. package/dist/dts/ShardManager.d.ts +0 -459
  199. package/dist/dts/ShardManager.d.ts.map +0 -1
  200. package/dist/dts/ShardStorage.d.ts.map +0 -1
  201. package/dist/dts/SocketShardManager.d.ts +0 -17
  202. package/dist/dts/SocketShardManager.d.ts.map +0 -1
  203. package/dist/dts/SqlShardStorage.d.ts +0 -38
  204. package/dist/dts/SqlShardStorage.d.ts.map +0 -1
  205. package/dist/dts/SynchronizedClock.d.ts +0 -19
  206. package/dist/dts/SynchronizedClock.d.ts.map +0 -1
  207. package/dist/dts/internal/shardManager.d.ts +0 -2
  208. package/dist/dts/internal/shardManager.d.ts.map +0 -1
  209. package/dist/esm/HttpCommon.js +0 -38
  210. package/dist/esm/HttpCommon.js.map +0 -1
  211. package/dist/esm/HttpShardManager.js +0 -128
  212. package/dist/esm/HttpShardManager.js.map +0 -1
  213. package/dist/esm/ShardManager.js +0 -535
  214. package/dist/esm/ShardManager.js.map +0 -1
  215. package/dist/esm/ShardStorage.js +0 -141
  216. package/dist/esm/ShardStorage.js.map +0 -1
  217. package/dist/esm/SocketShardManager.js +0 -24
  218. package/dist/esm/SocketShardManager.js.map +0 -1
  219. package/dist/esm/SqlShardStorage.js +0 -244
  220. package/dist/esm/SqlShardStorage.js.map +0 -1
  221. package/dist/esm/SynchronizedClock.js +0 -57
  222. package/dist/esm/SynchronizedClock.js.map +0 -1
  223. package/dist/esm/internal/shardManager.js +0 -342
  224. package/dist/esm/internal/shardManager.js.map +0 -1
  225. package/src/HttpCommon.ts +0 -73
  226. package/src/HttpShardManager.ts +0 -273
  227. package/src/ShardManager.ts +0 -823
  228. package/src/ShardStorage.ts +0 -297
  229. package/src/SocketShardManager.ts +0 -48
  230. package/src/SqlShardStorage.ts +0 -329
  231. package/src/SynchronizedClock.ts +0 -82
  232. package/src/internal/shardManager.ts +0 -412
@@ -1,342 +0,0 @@
1
- import * as Arr from "effect/Array";
2
- import * as Clock from "effect/Clock";
3
- import * as Effect from "effect/Effect";
4
- import { constFalse } from "effect/Function";
5
- import * as MutableHashMap from "effect/MutableHashMap";
6
- import * as MutableHashSet from "effect/MutableHashSet";
7
- import * as Option from "effect/Option";
8
- import { RunnerHealth } from "../RunnerHealth.js";
9
- import { ShardId } from "../ShardId.js";
10
- import { ShardStorage } from "../ShardStorage.js";
11
- /** @internal */
12
- export class State {
13
- allRunners;
14
- runners;
15
- shards;
16
- shardsPerGroup;
17
- static fromStorage = /*#__PURE__*/Effect.fnUntraced(function* (shardsPerGroup) {
18
- const storage = yield* ShardStorage;
19
- const runnerHealth = yield* RunnerHealth;
20
- // Fetch registered runners and shard assignments from cluster storage
21
- const storedRunners = yield* storage.getRunners;
22
- const storedAssignments = yield* storage.getAssignments;
23
- // Determine which runners are still alive
24
- const deadRunners = Arr.empty();
25
- const aliveRunners = MutableHashMap.empty();
26
- yield* Effect.forEach(storedRunners, ([address, runner]) => Effect.map(runnerHealth.isAlive(address), isAlive => {
27
- if (isAlive) {
28
- MutableHashMap.set(aliveRunners, address, runner);
29
- } else {
30
- deadRunners.push(runner);
31
- }
32
- }), {
33
- concurrency: "unbounded",
34
- discard: true
35
- });
36
- if (deadRunners.length > 0) {
37
- yield* Effect.logWarning("Ignoring runners that are no longer considered alive:", deadRunners);
38
- }
39
- // Determine which shards remain unassigned to a runner
40
- const assignedShards = MutableHashMap.empty();
41
- const invalidAssignments = Arr.empty();
42
- for (const [shard, address] of storedAssignments) {
43
- if (Option.isSome(address) && MutableHashMap.has(aliveRunners, address.value)) {
44
- MutableHashMap.set(assignedShards, shard, address.value);
45
- } else if (Option.isSome(address)) {
46
- invalidAssignments.push([shard, address.value]);
47
- }
48
- }
49
- if (invalidAssignments.length > 0) {
50
- yield* Effect.logWarning("Ignoring shard assignments for runners that are no longer considered alive: ", invalidAssignments);
51
- }
52
- // Construct the initial state
53
- const now = yield* Clock.currentTimeMillis;
54
- const allRunners = MutableHashMap.empty();
55
- const runnerState = new Map();
56
- for (const [address, runner] of aliveRunners) {
57
- const withMetadata = RunnerWithMetadata({
58
- runner,
59
- registeredAt: now
60
- });
61
- MutableHashMap.set(allRunners, address, withMetadata);
62
- for (const group of runner.groups) {
63
- let groupMap = runnerState.get(group);
64
- if (!groupMap) {
65
- groupMap = MutableHashMap.empty();
66
- runnerState.set(group, groupMap);
67
- }
68
- MutableHashMap.set(groupMap, address, withMetadata);
69
- }
70
- }
71
- const shardState = new Map();
72
- for (const group of runnerState.keys()) {
73
- const groupMap = new Map();
74
- shardState.set(group, groupMap);
75
- for (let n = 1; n <= shardsPerGroup; n++) {
76
- const shardId = new ShardId({
77
- group,
78
- id: n
79
- });
80
- groupMap.set(n, MutableHashMap.get(assignedShards, shardId));
81
- }
82
- }
83
- return new State(allRunners, runnerState, shardState, shardsPerGroup);
84
- });
85
- constructor(allRunners, runners, shards, shardsPerGroup) {
86
- this.allRunners = allRunners;
87
- this.runners = runners;
88
- this.shards = shards;
89
- this.shardsPerGroup = shardsPerGroup;
90
- this.assignments = MutableHashMap.empty();
91
- this.perRunner = new Map();
92
- for (const [address, meta] of this.allRunners) {
93
- for (const group of meta.runner.groups) {
94
- let runnerMap = this.perRunner.get(group);
95
- if (!runnerMap) {
96
- runnerMap = MutableHashMap.empty();
97
- this.perRunner.set(group, runnerMap);
98
- }
99
- MutableHashMap.set(runnerMap, address, new Set());
100
- }
101
- }
102
- for (const [group, groupMap] of this.shards) {
103
- const perRunnerMap = this.perRunner.get(group);
104
- for (const [id, address_] of groupMap) {
105
- const address = Option.filter(address_, addr => MutableHashMap.has(this.allRunners, addr));
106
- MutableHashMap.set(this.assignments, new ShardId({
107
- group,
108
- id
109
- }), address);
110
- if (Option.isSome(address)) {
111
- Option.getOrUndefined(MutableHashMap.get(perRunnerMap, address.value))?.add(id);
112
- }
113
- }
114
- }
115
- }
116
- assignments;
117
- perRunner;
118
- addGroup(group) {
119
- this.runners.set(group, MutableHashMap.empty());
120
- const shardMap = new Map();
121
- this.shards.set(group, shardMap);
122
- for (let n = 1; n <= this.shardsPerGroup; n++) {
123
- shardMap.set(n, Option.none());
124
- MutableHashMap.set(this.assignments, new ShardId({
125
- group,
126
- id: n
127
- }), Option.none());
128
- }
129
- const perRunnerMap = MutableHashMap.empty();
130
- this.perRunner.set(group, perRunnerMap);
131
- for (const [address] of this.allRunners) {
132
- MutableHashMap.set(perRunnerMap, address, new Set());
133
- }
134
- }
135
- addAssignments(shards, address) {
136
- for (const shardId of shards) {
137
- const currentAddress = Option.flatten(MutableHashMap.get(this.assignments, shardId));
138
- MutableHashMap.set(this.assignments, shardId, address);
139
- this.shards.get(shardId.group)?.set(shardId.id, address);
140
- const perRunner = this.perRunner.get(shardId.group);
141
- if (Option.isSome(currentAddress)) {
142
- Option.getOrUndefined(MutableHashMap.get(perRunner, currentAddress.value))?.delete(shardId.id);
143
- }
144
- if (Option.isSome(address)) {
145
- Option.getOrUndefined(MutableHashMap.get(perRunner, address.value))?.add(shardId.id);
146
- }
147
- }
148
- }
149
- addRunner(runner, registeredAt) {
150
- const withMetadata = RunnerWithMetadata({
151
- runner,
152
- registeredAt
153
- });
154
- MutableHashMap.set(this.allRunners, runner.address, withMetadata);
155
- for (const group of runner.groups) {
156
- if (!this.runners.has(group)) {
157
- this.addGroup(group);
158
- }
159
- const groupMap = this.runners.get(group);
160
- MutableHashMap.set(groupMap, runner.address, withMetadata);
161
- const perRunner = this.perRunner.get(group);
162
- MutableHashMap.set(perRunner, runner.address, new Set());
163
- }
164
- }
165
- removeRunner(address) {
166
- MutableHashMap.remove(this.allRunners, address);
167
- for (const group of this.runners.keys()) {
168
- const groupMap = this.runners.get(group);
169
- MutableHashMap.remove(groupMap, address);
170
- const perRunner = this.perRunner.get(group);
171
- MutableHashMap.remove(perRunner, address);
172
- }
173
- }
174
- get maxVersion() {
175
- if (MutableHashMap.size(this.allRunners) === 0) return Option.none();
176
- let version = undefined;
177
- for (const [, meta] of this.allRunners) {
178
- if (version === undefined || meta.runner.version > version) {
179
- version = meta.runner.version;
180
- }
181
- }
182
- return Option.some(version);
183
- }
184
- allRunnersHaveVersion(version) {
185
- return version.pipe(Option.map(max => Arr.every(this.runnerVersions, version => version === max)), Option.getOrElse(constFalse));
186
- }
187
- get shardStats() {
188
- const perRunner = new Map();
189
- let unassigned = 0;
190
- for (const [, address] of this.assignments) {
191
- if (Option.isNone(address)) {
192
- unassigned++;
193
- continue;
194
- }
195
- const runner = address.value.toString();
196
- const count = perRunner.get(runner) ?? 0;
197
- perRunner.set(runner, count + 1);
198
- }
199
- return {
200
- perRunner,
201
- unassigned
202
- };
203
- }
204
- shardsPerRunner(group) {
205
- const shards = MutableHashMap.empty();
206
- const perRunner = this.perRunner.get(group);
207
- if (!perRunner || MutableHashMap.isEmpty(perRunner)) return shards;
208
- for (const [address, shardSet] of perRunner) {
209
- MutableHashMap.set(shards, address, new Set(shardSet));
210
- }
211
- return shards;
212
- }
213
- averageShardsPerRunner(group) {
214
- const runnerCount = MutableHashMap.size(this.runners.get(group) ?? MutableHashMap.empty());
215
- const shardGroup = this.shards.get(group) ?? new Map();
216
- return runnerCount > 0 ? shardGroup.size / runnerCount : 0;
217
- }
218
- get allUnassignedShards() {
219
- const unassigned = [];
220
- for (const [shardId, address] of this.assignments) {
221
- if (Option.isNone(address)) {
222
- unassigned.push(shardId);
223
- }
224
- }
225
- return unassigned;
226
- }
227
- unassignedShards(group) {
228
- const shardIds = [];
229
- const assignments = this.shards.get(group);
230
- for (const [shard, address] of assignments) {
231
- if (Option.isNone(address)) {
232
- shardIds.push(shard);
233
- }
234
- }
235
- return shardIds;
236
- }
237
- get runnerVersions() {
238
- const runnerVersions = [];
239
- for (const [, meta] of this.allRunners) {
240
- runnerVersions.push(meta.runner.version);
241
- }
242
- return runnerVersions;
243
- }
244
- }
245
- /** @internal */
246
- export const RunnerWithMetadata = runner => runner;
247
- /** @internal */
248
- export function decideAssignmentsForShards(state, group) {
249
- const shardsPerRunner = state.shardsPerRunner(group);
250
- const maxVersion = state.maxVersion;
251
- const shardsToRebalance = state.unassignedShards(group);
252
- if (state.allRunnersHaveVersion(maxVersion)) {
253
- const averageShardsPerRunner = state.averageShardsPerRunner(group);
254
- MutableHashMap.forEach(shardsPerRunner, shards => {
255
- const extraShards = Math.max(0, shards.size - averageShardsPerRunner);
256
- const iter = shards.values();
257
- for (let i = 0; i < extraShards; i++) {
258
- const shard = iter.next();
259
- if (shard.done) break;
260
- shardsToRebalance.push(shard.value);
261
- }
262
- });
263
- }
264
- return pickNewRunners(shardsToRebalance, state, group, shardsPerRunner, maxVersion);
265
- }
266
- function pickNewRunners(shardsToRebalance, state, group, shardsPerRunner, maybeMaxVersion = state.maxVersion) {
267
- const addressAssignments = MutableHashMap.empty();
268
- const unassignments = MutableHashMap.empty();
269
- const changes = MutableHashSet.empty();
270
- if (Option.isNone(maybeMaxVersion)) {
271
- return [addressAssignments, unassignments, changes];
272
- }
273
- const maxVersion = maybeMaxVersion.value;
274
- const runnerGroup = state.runners.get(group);
275
- const shardsGroup = state.shards.get(group);
276
- for (const shardId of shardsToRebalance) {
277
- // Find the runner with the fewest assigned shards
278
- let candidate;
279
- let candidateShards;
280
- for (const [address, shards] of shardsPerRunner) {
281
- // Keep only runners with the maximum version
282
- const maybeRunnerMeta = MutableHashMap.get(runnerGroup, address);
283
- if (Option.isNone(maybeRunnerMeta)) continue;
284
- const runnerMeta = maybeRunnerMeta.value;
285
- if (runnerMeta.runner.version !== maxVersion) continue;
286
- // Do not assign to a runner that has unassignments in the same rebalance
287
- if (MutableHashMap.has(unassignments, address)) continue;
288
- if (candidate === undefined || shards.size < candidateShards.size) {
289
- candidate = address;
290
- candidateShards = shards;
291
- }
292
- }
293
- if (!candidate || !candidateShards) break;
294
- // If the old runner is the same as the new runner, do nothing
295
- const oldRunner = Option.getOrUndefined(shardsGroup.get(shardId) ?? Option.none());
296
- if (oldRunner && oldRunner.toString() === candidate.toString()) {
297
- continue;
298
- }
299
- const oldShards = oldRunner && Option.getOrUndefined(MutableHashMap.get(shardsPerRunner, oldRunner));
300
- // If the new runner has one less, as many, or more shards than the
301
- // old runner, do not change anything
302
- if (oldShards && candidateShards.size + 1 >= oldShards.size) continue;
303
- // Otherwise create a new assignment
304
- MutableHashMap.modifyAt(addressAssignments, candidate, Option.match({
305
- onNone: () => Option.some(new Set([shardId])),
306
- onSome: shards => {
307
- shards.add(shardId);
308
- return Option.some(shards);
309
- }
310
- }));
311
- if (oldRunner) {
312
- MutableHashMap.modifyAt(unassignments, oldRunner, Option.match({
313
- onNone: () => Option.some(new Set([shardId])),
314
- onSome: shards => {
315
- shards.add(shardId);
316
- return Option.some(shards);
317
- }
318
- }));
319
- }
320
- // Move the shard to the new runner
321
- candidateShards.add(shardId);
322
- if (oldShards) {
323
- oldShards.delete(shardId);
324
- }
325
- // Track changes
326
- MutableHashSet.add(changes, candidate);
327
- if (oldRunner) MutableHashSet.add(changes, oldRunner);
328
- }
329
- return [addressAssignments, unassignments, changes];
330
- }
331
- /** @internal */
332
- export const addAllNested = (self, key, values) => {
333
- const oset = MutableHashMap.get(self, key);
334
- if (Option.isSome(oset)) {
335
- for (const value of values) {
336
- MutableHashSet.add(oset.value, value);
337
- }
338
- } else {
339
- MutableHashMap.set(self, key, MutableHashSet.fromIterable(values));
340
- }
341
- };
342
- //# sourceMappingURL=shardManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shardManager.js","names":["Arr","Clock","Effect","constFalse","MutableHashMap","MutableHashSet","Option","RunnerHealth","ShardId","ShardStorage","State","allRunners","runners","shards","shardsPerGroup","fromStorage","fnUntraced","storage","runnerHealth","storedRunners","getRunners","storedAssignments","getAssignments","deadRunners","empty","aliveRunners","forEach","address","runner","map","isAlive","set","push","concurrency","discard","length","logWarning","assignedShards","invalidAssignments","shard","isSome","has","value","now","currentTimeMillis","runnerState","Map","withMetadata","RunnerWithMetadata","registeredAt","group","groups","groupMap","get","shardState","keys","n","shardId","id","constructor","assignments","perRunner","meta","runnerMap","Set","perRunnerMap","address_","filter","addr","getOrUndefined","add","addGroup","shardMap","none","addAssignments","currentAddress","flatten","delete","addRunner","removeRunner","remove","maxVersion","size","version","undefined","some","allRunnersHaveVersion","pipe","max","every","runnerVersions","getOrElse","shardStats","unassigned","isNone","toString","count","shardsPerRunner","isEmpty","shardSet","averageShardsPerRunner","runnerCount","shardGroup","allUnassignedShards","unassignedShards","shardIds","decideAssignmentsForShards","state","shardsToRebalance","extraShards","Math","iter","values","i","next","done","pickNewRunners","maybeMaxVersion","addressAssignments","unassignments","changes","runnerGroup","shardsGroup","candidate","candidateShards","maybeRunnerMeta","runnerMeta","oldRunner","oldShards","modifyAt","match","onNone","onSome","addAllNested","self","key","oset","fromIterable"],"sources":["../../../src/internal/shardManager.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/src/HttpCommon.ts DELETED
@@ -1,73 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import * as HttpClient from "@effect/platform/HttpClient"
5
- import * as HttpClientRequest from "@effect/platform/HttpClientRequest"
6
- import * as Socket from "@effect/platform/Socket"
7
- import * as RpcClient from "@effect/rpc/RpcClient"
8
- import * as RpcSerialization from "@effect/rpc/RpcSerialization"
9
- import * as Effect from "effect/Effect"
10
- import * as Layer from "effect/Layer"
11
- import { RpcClientProtocol } from "./Runners.js"
12
-
13
- /**
14
- * @since 1.0.0
15
- * @category Layers
16
- */
17
- export const layerClientProtocolHttp = (options: {
18
- readonly path: string
19
- readonly https?: boolean | undefined
20
- }): Layer.Layer<
21
- RpcClientProtocol,
22
- never,
23
- RpcSerialization.RpcSerialization | HttpClient.HttpClient
24
- > =>
25
- Layer.effect(
26
- RpcClientProtocol,
27
- Effect.gen(function*() {
28
- const serialization = yield* RpcSerialization.RpcSerialization
29
- const client = yield* HttpClient.HttpClient
30
- const https = options.https ?? false
31
- return (address) => {
32
- const clientWithUrl = HttpClient.mapRequest(
33
- client,
34
- HttpClientRequest.prependUrl(`http${https ? "s" : ""}://${address.host}:${address.port}/${options.path}`)
35
- )
36
- return RpcClient.makeProtocolHttp(clientWithUrl).pipe(
37
- Effect.provideService(RpcSerialization.RpcSerialization, serialization)
38
- )
39
- }
40
- })
41
- )
42
-
43
- /**
44
- * @since 1.0.0
45
- * @category Layers
46
- */
47
- export const layerClientProtocolWebsocket = (options: {
48
- readonly path: string
49
- readonly https?: boolean | undefined
50
- }): Layer.Layer<
51
- RpcClientProtocol,
52
- never,
53
- RpcSerialization.RpcSerialization | Socket.WebSocketConstructor
54
- > =>
55
- Layer.effect(
56
- RpcClientProtocol,
57
- Effect.gen(function*() {
58
- const serialization = yield* RpcSerialization.RpcSerialization
59
- const https = options.https ?? false
60
- const constructor = yield* Socket.WebSocketConstructor
61
- return Effect.fnUntraced(function*(address) {
62
- const socket = yield* Socket.makeWebSocket(
63
- `ws${https ? "s" : ""}://${address.host}:${address.port}/${options.path}`
64
- ).pipe(
65
- Effect.provideService(Socket.WebSocketConstructor, constructor)
66
- )
67
- return yield* RpcClient.makeProtocolSocket().pipe(
68
- Effect.provideService(Socket.Socket, socket),
69
- Effect.provideService(RpcSerialization.RpcSerialization, serialization)
70
- )
71
- })
72
- })
73
- )