@effect/cluster 0.39.4 → 0.39.5

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.
@@ -12,7 +12,6 @@ var _Function = require("effect/Function");
12
12
  var MutableHashMap = _interopRequireWildcard(require("effect/MutableHashMap"));
13
13
  var MutableHashSet = _interopRequireWildcard(require("effect/MutableHashSet"));
14
14
  var Option = _interopRequireWildcard(require("effect/Option"));
15
- var Order = _interopRequireWildcard(require("effect/Order"));
16
15
  var _RunnerHealth = require("../RunnerHealth.js");
17
16
  var _ShardId = require("../ShardId.js");
18
17
  var _ShardStorage = require("../ShardStorage.js");
@@ -62,9 +61,6 @@ class State {
62
61
  const now = yield* Clock.currentTimeMillis;
63
62
  const allRunners = MutableHashMap.empty();
64
63
  const runnerState = new Map();
65
- // for (const group of groups) {
66
- // runnerState.set(group, MutableHashMap.empty<RunnerAddress, RunnerWithMetadata>())
67
- // }
68
64
  for (const [address, runner] of aliveRunners) {
69
65
  const withMetadata = RunnerWithMetadata({
70
66
  runner,
@@ -100,19 +96,37 @@ class State {
100
96
  this.shards = shards;
101
97
  this.shardsPerGroup = shardsPerGroup;
102
98
  this.assignments = MutableHashMap.empty();
99
+ this.perRunner = new Map();
100
+ for (const [address, meta] of this.allRunners) {
101
+ for (const group of meta.runner.groups) {
102
+ let runnerMap = this.perRunner.get(group);
103
+ if (!runnerMap) {
104
+ runnerMap = MutableHashMap.empty();
105
+ this.perRunner.set(group, runnerMap);
106
+ }
107
+ MutableHashMap.set(runnerMap, address, new Set());
108
+ }
109
+ }
103
110
  for (const [group, groupMap] of this.shards) {
104
- for (const [id, address] of groupMap) {
111
+ const perRunnerMap = this.perRunner.get(group);
112
+ for (const [id, address_] of groupMap) {
113
+ const address = Option.filter(address_, addr => MutableHashMap.has(this.allRunners, addr));
105
114
  MutableHashMap.set(this.assignments, new _ShardId.ShardId({
106
115
  group,
107
116
  id
108
117
  }), address);
118
+ if (Option.isSome(address)) {
119
+ Option.getOrUndefined(MutableHashMap.get(perRunnerMap, address.value))?.add(id);
120
+ }
109
121
  }
110
122
  }
111
123
  }
112
124
  assignments;
125
+ perRunner;
113
126
  addGroup(group) {
114
127
  this.runners.set(group, MutableHashMap.empty());
115
128
  const shardMap = new Map();
129
+ this.shards.set(group, shardMap);
116
130
  for (let n = 1; n <= this.shardsPerGroup; n++) {
117
131
  shardMap.set(n, Option.none());
118
132
  MutableHashMap.set(this.assignments, new _ShardId.ShardId({
@@ -120,12 +134,24 @@ class State {
120
134
  id: n
121
135
  }), Option.none());
122
136
  }
123
- this.shards.set(group, shardMap);
137
+ const perRunnerMap = MutableHashMap.empty();
138
+ this.perRunner.set(group, perRunnerMap);
139
+ for (const [address] of this.allRunners) {
140
+ MutableHashMap.set(perRunnerMap, address, new Set());
141
+ }
124
142
  }
125
143
  addAssignments(shards, address) {
126
144
  for (const shardId of shards) {
145
+ const currentAddress = Option.flatten(MutableHashMap.get(this.assignments, shardId));
127
146
  MutableHashMap.set(this.assignments, shardId, address);
128
147
  this.shards.get(shardId.group)?.set(shardId.id, address);
148
+ const perRunner = this.perRunner.get(shardId.group);
149
+ if (Option.isSome(currentAddress)) {
150
+ Option.getOrUndefined(MutableHashMap.get(perRunner, currentAddress.value))?.delete(shardId.id);
151
+ }
152
+ if (Option.isSome(address)) {
153
+ Option.getOrUndefined(MutableHashMap.get(perRunner, address.value))?.add(shardId.id);
154
+ }
129
155
  }
130
156
  }
131
157
  addRunner(runner, registeredAt) {
@@ -140,12 +166,17 @@ class State {
140
166
  }
141
167
  const groupMap = this.runners.get(group);
142
168
  MutableHashMap.set(groupMap, runner.address, withMetadata);
169
+ const perRunner = this.perRunner.get(group);
170
+ MutableHashMap.set(perRunner, runner.address, new Set());
143
171
  }
144
172
  }
145
173
  removeRunner(address) {
146
174
  MutableHashMap.remove(this.allRunners, address);
147
- for (const groupMap of this.runners.values()) {
175
+ for (const group of this.runners.keys()) {
176
+ const groupMap = this.runners.get(group);
148
177
  MutableHashMap.remove(groupMap, address);
178
+ const perRunner = this.perRunner.get(group);
179
+ MutableHashMap.remove(perRunner, address);
149
180
  }
150
181
  }
151
182
  get maxVersion() {
@@ -179,17 +210,11 @@ class State {
179
210
  };
180
211
  }
181
212
  shardsPerRunner(group) {
182
- const groupRunners = this.runners.get(group);
183
213
  const shards = MutableHashMap.empty();
184
- if (!groupRunners || MutableHashMap.isEmpty(groupRunners)) return shards;
185
- MutableHashMap.forEach(groupRunners, (_, address) => {
186
- MutableHashMap.set(shards, address, new Set());
187
- });
188
- const assignments = this.shards.get(group);
189
- for (const [id, address] of assignments) {
190
- if (Option.isNone(address)) continue;
191
- const shardIds = Option.getOrUndefined(MutableHashMap.get(shards, address.value));
192
- shardIds.add(id);
214
+ const perRunner = this.perRunner.get(group);
215
+ if (!perRunner || MutableHashMap.isEmpty(perRunner)) return shards;
216
+ for (const [address, shardSet] of perRunner) {
217
+ MutableHashMap.set(shards, address, new Set(shardSet));
193
218
  }
194
219
  return shards;
195
220
  }
@@ -228,45 +253,27 @@ class State {
228
253
  /** @internal */
229
254
  exports.State = State;
230
255
  const RunnerWithMetadata = runner => runner;
231
- exports.RunnerWithMetadata = RunnerWithMetadata;
232
- const allocationOrder = /*#__PURE__*/Order.combine(/*#__PURE__*/Order.mapInput(Order.number, ([, shards]) => shards), /*#__PURE__*/Order.mapInput(Order.number, ([,, registeredAt]) => registeredAt));
233
256
  /** @internal */
257
+ exports.RunnerWithMetadata = RunnerWithMetadata;
234
258
  function decideAssignmentsForShards(state, group) {
235
259
  const shardsPerRunner = state.shardsPerRunner(group);
236
260
  const maxVersion = state.maxVersion;
237
261
  const shardsToRebalance = state.unassignedShards(group);
238
- const runnerGroup = state.runners.get(group);
239
- const shardsGroup = state.shards.get(group);
240
262
  if (state.allRunnersHaveVersion(maxVersion)) {
241
- const extraShardsToAllocate = Arr.empty();
242
263
  const averageShardsPerRunner = state.averageShardsPerRunner(group);
243
264
  MutableHashMap.forEach(shardsPerRunner, shards => {
244
- // Count how many extra shards there are compared to the average
245
265
  const extraShards = Math.max(0, shards.size - averageShardsPerRunner);
246
- for (const shard of takeRandom(shards, extraShards)) {
247
- const maybeAddress = shardsGroup.get(shard) ?? Option.none();
248
- if (Option.isNone(maybeAddress)) {
249
- extraShardsToAllocate.push([shard, Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER]);
250
- continue;
251
- }
252
- const address = maybeAddress.value;
253
- extraShardsToAllocate.push([shard, Option.match(MutableHashMap.get(shardsPerRunner, address), {
254
- onNone: () => Number.MIN_SAFE_INTEGER,
255
- onSome: shards => -shards.size
256
- }), Option.match(MutableHashMap.get(runnerGroup, address), {
257
- onNone: () => Number.MIN_SAFE_INTEGER,
258
- onSome: meta => meta.registeredAt
259
- })]);
266
+ const iter = shards.values();
267
+ for (let i = 0; i < extraShards; i++) {
268
+ const shard = iter.next();
269
+ if (shard.done) break;
270
+ shardsToRebalance.push(shard.value);
260
271
  }
261
272
  });
262
- extraShardsToAllocate.sort(allocationOrder);
263
- for (let i = 0; i < extraShardsToAllocate.length; i++) {
264
- shardsToRebalance.push(extraShardsToAllocate[i][0]);
265
- }
266
273
  }
267
274
  return pickNewRunners(shardsToRebalance, state, group, shardsPerRunner, maxVersion);
268
275
  }
269
- function pickNewRunners(shardsToRebalance, state, group, shardsPerRunner = state.shardsPerRunner(group), maybeMaxVersion = state.maxVersion) {
276
+ function pickNewRunners(shardsToRebalance, state, group, shardsPerRunner, maybeMaxVersion = state.maxVersion) {
270
277
  const addressAssignments = MutableHashMap.empty();
271
278
  const unassignments = MutableHashMap.empty();
272
279
  const changes = MutableHashSet.empty();
@@ -331,22 +338,6 @@ function pickNewRunners(shardsToRebalance, state, group, shardsPerRunner = state
331
338
  }
332
339
  return [addressAssignments, unassignments, changes];
333
340
  }
334
- function takeRandom(self, n) {
335
- const array = Array.from(self);
336
- let currentIndex = array.length;
337
- while (currentIndex != 0) {
338
- const randomIndex = Math.floor(Math.random() * currentIndex);
339
- currentIndex = currentIndex - 1;
340
- swap(array, currentIndex, randomIndex);
341
- }
342
- return n < array.length ? array.slice(0, n) : array;
343
- }
344
- function swap(array, i, j) {
345
- const tmp = array[i];
346
- array[i] = array[j];
347
- array[j] = tmp;
348
- return array;
349
- }
350
341
  /** @internal */
351
342
  const addAllNested = (self, key, values) => {
352
343
  const oset = MutableHashMap.get(self, key);
@@ -1 +1 @@
1
- {"version":3,"file":"shardManager.js","names":["Arr","_interopRequireWildcard","require","Clock","Effect","_Function","MutableHashMap","MutableHashSet","Option","Order","_RunnerHealth","_ShardId","_ShardStorage","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","State","allRunners","runners","shards","shardsPerGroup","fromStorage","fnUntraced","storage","ShardStorage","runnerHealth","RunnerHealth","storedRunners","getRunners","storedAssignments","getAssignments","deadRunners","empty","aliveRunners","forEach","address","runner","map","isAlive","push","concurrency","discard","length","logWarning","assignedShards","invalidAssignments","shard","isSome","value","now","currentTimeMillis","runnerState","Map","withMetadata","RunnerWithMetadata","registeredAt","group","groups","groupMap","shardState","keys","shardId","ShardId","id","constructor","assignments","addGroup","shardMap","none","addAssignments","addRunner","removeRunner","remove","values","maxVersion","size","version","undefined","meta","some","allRunnersHaveVersion","pipe","max","every","runnerVersions","getOrElse","constFalse","shardStats","perRunner","unassigned","isNone","toString","count","shardsPerRunner","groupRunners","isEmpty","_","Set","shardIds","getOrUndefined","add","averageShardsPerRunner","runnerCount","shardGroup","allUnassignedShards","unassignedShards","exports","allocationOrder","combine","mapInput","number","decideAssignmentsForShards","state","shardsToRebalance","runnerGroup","shardsGroup","extraShardsToAllocate","extraShards","Math","takeRandom","maybeAddress","Number","MIN_SAFE_INTEGER","match","onNone","onSome","sort","pickNewRunners","maybeMaxVersion","addressAssignments","unassignments","changes","candidate","candidateShards","maybeRunnerMeta","runnerMeta","oldRunner","oldShards","modifyAt","delete","self","array","Array","from","currentIndex","randomIndex","floor","random","swap","slice","j","tmp","addAllNested","key","oset","fromIterable"],"sources":["../../../src/internal/shardManager.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"shardManager.js","names":["Arr","_interopRequireWildcard","require","Clock","Effect","_Function","MutableHashMap","MutableHashSet","Option","_RunnerHealth","_ShardId","_ShardStorage","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","State","allRunners","runners","shards","shardsPerGroup","fromStorage","fnUntraced","storage","ShardStorage","runnerHealth","RunnerHealth","storedRunners","getRunners","storedAssignments","getAssignments","deadRunners","empty","aliveRunners","forEach","address","runner","map","isAlive","push","concurrency","discard","length","logWarning","assignedShards","invalidAssignments","shard","isSome","value","now","currentTimeMillis","runnerState","Map","withMetadata","RunnerWithMetadata","registeredAt","group","groups","groupMap","shardState","keys","shardId","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","constFalse","shardStats","unassigned","isNone","toString","count","shardsPerRunner","isEmpty","shardSet","averageShardsPerRunner","runnerCount","shardGroup","allUnassignedShards","unassignedShards","shardIds","exports","decideAssignmentsForShards","state","shardsToRebalance","extraShards","Math","iter","values","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":[]}
@@ -5,7 +5,6 @@ import { constFalse } from "effect/Function";
5
5
  import * as MutableHashMap from "effect/MutableHashMap";
6
6
  import * as MutableHashSet from "effect/MutableHashSet";
7
7
  import * as Option from "effect/Option";
8
- import * as Order from "effect/Order";
9
8
  import { RunnerHealth } from "../RunnerHealth.js";
10
9
  import { ShardId } from "../ShardId.js";
11
10
  import { ShardStorage } from "../ShardStorage.js";
@@ -54,9 +53,6 @@ export class State {
54
53
  const now = yield* Clock.currentTimeMillis;
55
54
  const allRunners = MutableHashMap.empty();
56
55
  const runnerState = new Map();
57
- // for (const group of groups) {
58
- // runnerState.set(group, MutableHashMap.empty<RunnerAddress, RunnerWithMetadata>())
59
- // }
60
56
  for (const [address, runner] of aliveRunners) {
61
57
  const withMetadata = RunnerWithMetadata({
62
58
  runner,
@@ -92,19 +88,37 @@ export class State {
92
88
  this.shards = shards;
93
89
  this.shardsPerGroup = shardsPerGroup;
94
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
+ }
95
102
  for (const [group, groupMap] of this.shards) {
96
- for (const [id, address] of groupMap) {
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));
97
106
  MutableHashMap.set(this.assignments, new ShardId({
98
107
  group,
99
108
  id
100
109
  }), address);
110
+ if (Option.isSome(address)) {
111
+ Option.getOrUndefined(MutableHashMap.get(perRunnerMap, address.value))?.add(id);
112
+ }
101
113
  }
102
114
  }
103
115
  }
104
116
  assignments;
117
+ perRunner;
105
118
  addGroup(group) {
106
119
  this.runners.set(group, MutableHashMap.empty());
107
120
  const shardMap = new Map();
121
+ this.shards.set(group, shardMap);
108
122
  for (let n = 1; n <= this.shardsPerGroup; n++) {
109
123
  shardMap.set(n, Option.none());
110
124
  MutableHashMap.set(this.assignments, new ShardId({
@@ -112,12 +126,24 @@ export class State {
112
126
  id: n
113
127
  }), Option.none());
114
128
  }
115
- this.shards.set(group, shardMap);
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
+ }
116
134
  }
117
135
  addAssignments(shards, address) {
118
136
  for (const shardId of shards) {
137
+ const currentAddress = Option.flatten(MutableHashMap.get(this.assignments, shardId));
119
138
  MutableHashMap.set(this.assignments, shardId, address);
120
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
+ }
121
147
  }
122
148
  }
123
149
  addRunner(runner, registeredAt) {
@@ -132,12 +158,17 @@ export class State {
132
158
  }
133
159
  const groupMap = this.runners.get(group);
134
160
  MutableHashMap.set(groupMap, runner.address, withMetadata);
161
+ const perRunner = this.perRunner.get(group);
162
+ MutableHashMap.set(perRunner, runner.address, new Set());
135
163
  }
136
164
  }
137
165
  removeRunner(address) {
138
166
  MutableHashMap.remove(this.allRunners, address);
139
- for (const groupMap of this.runners.values()) {
167
+ for (const group of this.runners.keys()) {
168
+ const groupMap = this.runners.get(group);
140
169
  MutableHashMap.remove(groupMap, address);
170
+ const perRunner = this.perRunner.get(group);
171
+ MutableHashMap.remove(perRunner, address);
141
172
  }
142
173
  }
143
174
  get maxVersion() {
@@ -171,17 +202,11 @@ export class State {
171
202
  };
172
203
  }
173
204
  shardsPerRunner(group) {
174
- const groupRunners = this.runners.get(group);
175
205
  const shards = MutableHashMap.empty();
176
- if (!groupRunners || MutableHashMap.isEmpty(groupRunners)) return shards;
177
- MutableHashMap.forEach(groupRunners, (_, address) => {
178
- MutableHashMap.set(shards, address, new Set());
179
- });
180
- const assignments = this.shards.get(group);
181
- for (const [id, address] of assignments) {
182
- if (Option.isNone(address)) continue;
183
- const shardIds = Option.getOrUndefined(MutableHashMap.get(shards, address.value));
184
- shardIds.add(id);
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));
185
210
  }
186
211
  return shards;
187
212
  }
@@ -219,44 +244,26 @@ export class State {
219
244
  }
220
245
  /** @internal */
221
246
  export const RunnerWithMetadata = runner => runner;
222
- const allocationOrder = /*#__PURE__*/Order.combine(/*#__PURE__*/Order.mapInput(Order.number, ([, shards]) => shards), /*#__PURE__*/Order.mapInput(Order.number, ([,, registeredAt]) => registeredAt));
223
247
  /** @internal */
224
248
  export function decideAssignmentsForShards(state, group) {
225
249
  const shardsPerRunner = state.shardsPerRunner(group);
226
250
  const maxVersion = state.maxVersion;
227
251
  const shardsToRebalance = state.unassignedShards(group);
228
- const runnerGroup = state.runners.get(group);
229
- const shardsGroup = state.shards.get(group);
230
252
  if (state.allRunnersHaveVersion(maxVersion)) {
231
- const extraShardsToAllocate = Arr.empty();
232
253
  const averageShardsPerRunner = state.averageShardsPerRunner(group);
233
254
  MutableHashMap.forEach(shardsPerRunner, shards => {
234
- // Count how many extra shards there are compared to the average
235
255
  const extraShards = Math.max(0, shards.size - averageShardsPerRunner);
236
- for (const shard of takeRandom(shards, extraShards)) {
237
- const maybeAddress = shardsGroup.get(shard) ?? Option.none();
238
- if (Option.isNone(maybeAddress)) {
239
- extraShardsToAllocate.push([shard, Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER]);
240
- continue;
241
- }
242
- const address = maybeAddress.value;
243
- extraShardsToAllocate.push([shard, Option.match(MutableHashMap.get(shardsPerRunner, address), {
244
- onNone: () => Number.MIN_SAFE_INTEGER,
245
- onSome: shards => -shards.size
246
- }), Option.match(MutableHashMap.get(runnerGroup, address), {
247
- onNone: () => Number.MIN_SAFE_INTEGER,
248
- onSome: meta => meta.registeredAt
249
- })]);
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);
250
261
  }
251
262
  });
252
- extraShardsToAllocate.sort(allocationOrder);
253
- for (let i = 0; i < extraShardsToAllocate.length; i++) {
254
- shardsToRebalance.push(extraShardsToAllocate[i][0]);
255
- }
256
263
  }
257
264
  return pickNewRunners(shardsToRebalance, state, group, shardsPerRunner, maxVersion);
258
265
  }
259
- function pickNewRunners(shardsToRebalance, state, group, shardsPerRunner = state.shardsPerRunner(group), maybeMaxVersion = state.maxVersion) {
266
+ function pickNewRunners(shardsToRebalance, state, group, shardsPerRunner, maybeMaxVersion = state.maxVersion) {
260
267
  const addressAssignments = MutableHashMap.empty();
261
268
  const unassignments = MutableHashMap.empty();
262
269
  const changes = MutableHashSet.empty();
@@ -321,22 +328,6 @@ function pickNewRunners(shardsToRebalance, state, group, shardsPerRunner = state
321
328
  }
322
329
  return [addressAssignments, unassignments, changes];
323
330
  }
324
- function takeRandom(self, n) {
325
- const array = Array.from(self);
326
- let currentIndex = array.length;
327
- while (currentIndex != 0) {
328
- const randomIndex = Math.floor(Math.random() * currentIndex);
329
- currentIndex = currentIndex - 1;
330
- swap(array, currentIndex, randomIndex);
331
- }
332
- return n < array.length ? array.slice(0, n) : array;
333
- }
334
- function swap(array, i, j) {
335
- const tmp = array[i];
336
- array[i] = array[j];
337
- array[j] = tmp;
338
- return array;
339
- }
340
331
  /** @internal */
341
332
  export const addAllNested = (self, key, values) => {
342
333
  const oset = MutableHashMap.get(self, key);
@@ -1 +1 @@
1
- {"version":3,"file":"shardManager.js","names":["Arr","Clock","Effect","constFalse","MutableHashMap","MutableHashSet","Option","Order","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","addGroup","shardMap","none","addAssignments","addRunner","removeRunner","remove","values","maxVersion","size","version","undefined","meta","some","allRunnersHaveVersion","pipe","max","every","runnerVersions","getOrElse","shardStats","perRunner","unassigned","isNone","toString","count","shardsPerRunner","groupRunners","isEmpty","_","Set","shardIds","getOrUndefined","add","averageShardsPerRunner","runnerCount","shardGroup","allUnassignedShards","unassignedShards","allocationOrder","combine","mapInput","number","decideAssignmentsForShards","state","shardsToRebalance","runnerGroup","shardsGroup","extraShardsToAllocate","extraShards","Math","takeRandom","maybeAddress","Number","MIN_SAFE_INTEGER","match","onNone","onSome","sort","i","pickNewRunners","maybeMaxVersion","addressAssignments","unassignments","changes","candidate","candidateShards","maybeRunnerMeta","runnerMeta","oldRunner","oldShards","modifyAt","delete","self","array","Array","from","currentIndex","randomIndex","floor","random","swap","slice","j","tmp","addAllNested","key","oset","fromIterable"],"sources":["../../../src/internal/shardManager.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/cluster",
3
- "version": "0.39.4",
3
+ "version": "0.39.5",
4
4
  "description": "Unified interfaces for common cluster-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -5,7 +5,6 @@ import { constFalse } from "effect/Function"
5
5
  import * as MutableHashMap from "effect/MutableHashMap"
6
6
  import * as MutableHashSet from "effect/MutableHashSet"
7
7
  import * as Option from "effect/Option"
8
- import * as Order from "effect/Order"
9
8
  import type { Runner } from "../Runner.js"
10
9
  import type { RunnerAddress } from "../RunnerAddress.js"
11
10
  import { RunnerHealth } from "../RunnerHealth.js"
@@ -60,9 +59,6 @@ export class State {
60
59
  const now = yield* Clock.currentTimeMillis
61
60
  const allRunners = MutableHashMap.empty<RunnerAddress, RunnerWithMetadata>()
62
61
  const runnerState = new Map<string, MutableHashMap.MutableHashMap<RunnerAddress, RunnerWithMetadata>>()
63
- // for (const group of groups) {
64
- // runnerState.set(group, MutableHashMap.empty<RunnerAddress, RunnerWithMetadata>())
65
- // }
66
62
  for (const [address, runner] of aliveRunners) {
67
63
  const withMetadata = RunnerWithMetadata({ runner, registeredAt: now })
68
64
  MutableHashMap.set(allRunners, address, withMetadata)
@@ -96,23 +92,48 @@ export class State {
96
92
  readonly shardsPerGroup: number
97
93
  ) {
98
94
  this.assignments = MutableHashMap.empty<ShardId, Option.Option<RunnerAddress>>()
95
+ this.perRunner = new Map<string, MutableHashMap.MutableHashMap<RunnerAddress, Set<number>>>()
96
+
97
+ for (const [address, meta] of this.allRunners) {
98
+ for (const group of meta.runner.groups) {
99
+ let runnerMap = this.perRunner.get(group)
100
+ if (!runnerMap) {
101
+ runnerMap = MutableHashMap.empty<RunnerAddress, Set<number>>()
102
+ this.perRunner.set(group, runnerMap)
103
+ }
104
+ MutableHashMap.set(runnerMap, address, new Set())
105
+ }
106
+ }
107
+
99
108
  for (const [group, groupMap] of this.shards) {
100
- for (const [id, address] of groupMap) {
109
+ const perRunnerMap = this.perRunner.get(group)!
110
+ for (const [id, address_] of groupMap) {
111
+ const address = Option.filter(address_, (addr) => MutableHashMap.has(this.allRunners, addr))
101
112
  MutableHashMap.set(this.assignments, new ShardId({ group, id }), address)
113
+ if (Option.isSome(address)) {
114
+ Option.getOrUndefined(MutableHashMap.get(perRunnerMap, address.value))?.add(id)
115
+ }
102
116
  }
103
117
  }
104
118
  }
105
119
 
106
120
  readonly assignments: MutableHashMap.MutableHashMap<ShardId, Option.Option<RunnerAddress>>
121
+ readonly perRunner: Map<string, MutableHashMap.MutableHashMap<RunnerAddress, Set<number>>>
107
122
 
108
123
  addGroup(group: string): void {
109
124
  this.runners.set(group, MutableHashMap.empty<RunnerAddress, RunnerWithMetadata>())
110
125
  const shardMap = new Map<number, Option.Option<RunnerAddress>>()
126
+ this.shards.set(group, shardMap)
111
127
  for (let n = 1; n <= this.shardsPerGroup; n++) {
112
128
  shardMap.set(n, Option.none())
113
129
  MutableHashMap.set(this.assignments, new ShardId({ group, id: n }), Option.none())
114
130
  }
115
- this.shards.set(group, shardMap)
131
+
132
+ const perRunnerMap = MutableHashMap.empty<RunnerAddress, Set<number>>()
133
+ this.perRunner.set(group, perRunnerMap)
134
+ for (const [address] of this.allRunners) {
135
+ MutableHashMap.set(perRunnerMap, address, new Set())
136
+ }
116
137
  }
117
138
 
118
139
  addAssignments(
@@ -120,8 +141,17 @@ export class State {
120
141
  address: Option.Option<RunnerAddress>
121
142
  ) {
122
143
  for (const shardId of shards) {
144
+ const currentAddress = Option.flatten(MutableHashMap.get(this.assignments, shardId))
123
145
  MutableHashMap.set(this.assignments, shardId, address)
124
146
  this.shards.get(shardId.group)?.set(shardId.id, address)
147
+
148
+ const perRunner = this.perRunner.get(shardId.group)!
149
+ if (Option.isSome(currentAddress)) {
150
+ Option.getOrUndefined(MutableHashMap.get(perRunner, currentAddress.value))?.delete(shardId.id)
151
+ }
152
+ if (Option.isSome(address)) {
153
+ Option.getOrUndefined(MutableHashMap.get(perRunner, address.value))?.add(shardId.id)
154
+ }
125
155
  }
126
156
  }
127
157
 
@@ -134,13 +164,19 @@ export class State {
134
164
  }
135
165
  const groupMap = this.runners.get(group)!
136
166
  MutableHashMap.set(groupMap, runner.address, withMetadata)
167
+ const perRunner = this.perRunner.get(group)!
168
+ MutableHashMap.set(perRunner, runner.address, new Set())
137
169
  }
138
170
  }
139
171
 
140
172
  removeRunner(address: RunnerAddress): void {
141
173
  MutableHashMap.remove(this.allRunners, address)
142
- for (const groupMap of this.runners.values()) {
174
+ for (const group of this.runners.keys()) {
175
+ const groupMap = this.runners.get(group)!
143
176
  MutableHashMap.remove(groupMap, address)
177
+
178
+ const perRunner = this.perRunner.get(group)!
179
+ MutableHashMap.remove(perRunner, address)
144
180
  }
145
181
  }
146
182
 
@@ -182,19 +218,12 @@ export class State {
182
218
  }
183
219
 
184
220
  shardsPerRunner(group: string): MutableHashMap.MutableHashMap<RunnerAddress, Set<number>> {
185
- const groupRunners = this.runners.get(group)
186
221
  const shards = MutableHashMap.empty<RunnerAddress, Set<number>>()
222
+ const perRunner = this.perRunner.get(group)
223
+ if (!perRunner || MutableHashMap.isEmpty(perRunner)) return shards
187
224
 
188
- if (!groupRunners || MutableHashMap.isEmpty(groupRunners)) return shards
189
- MutableHashMap.forEach(groupRunners, (_, address) => {
190
- MutableHashMap.set(shards, address, new Set())
191
- })
192
-
193
- const assignments = this.shards.get(group)!
194
- for (const [id, address] of assignments) {
195
- if (Option.isNone(address)) continue
196
- const shardIds = Option.getOrUndefined(MutableHashMap.get(shards, address.value))!
197
- shardIds.add(id)
225
+ for (const [address, shardSet] of perRunner) {
226
+ MutableHashMap.set(shards, address, new Set(shardSet))
198
227
  }
199
228
 
200
229
  return shards
@@ -244,11 +273,6 @@ export interface RunnerWithMetadata {
244
273
  /** @internal */
245
274
  export const RunnerWithMetadata = (runner: RunnerWithMetadata): RunnerWithMetadata => runner
246
275
 
247
- const allocationOrder: Order.Order<[number, number, number]> = Order.combine(
248
- Order.mapInput(Order.number, ([, shards]) => shards),
249
- Order.mapInput(Order.number, ([, , registeredAt]) => registeredAt)
250
- )
251
-
252
276
  /** @internal */
253
277
  export function decideAssignmentsForShards(state: State, group: string): readonly [
254
278
  assignments: MutableHashMap.MutableHashMap<RunnerAddress, Set<number>>,
@@ -259,39 +283,17 @@ export function decideAssignmentsForShards(state: State, group: string): readonl
259
283
  const maxVersion = state.maxVersion
260
284
  const shardsToRebalance = state.unassignedShards(group)
261
285
 
262
- const runnerGroup = state.runners.get(group)!
263
- const shardsGroup = state.shards.get(group)!
264
-
265
286
  if (state.allRunnersHaveVersion(maxVersion)) {
266
- const extraShardsToAllocate = Arr.empty<[number, shardsInverse: number, registeredAt: number]>()
267
287
  const averageShardsPerRunner = state.averageShardsPerRunner(group)
268
288
  MutableHashMap.forEach(shardsPerRunner, (shards) => {
269
- // Count how many extra shards there are compared to the average
270
289
  const extraShards = Math.max(0, shards.size - averageShardsPerRunner)
271
- for (const shard of takeRandom(shards, extraShards)) {
272
- const maybeAddress = shardsGroup.get(shard) ?? Option.none()
273
- if (Option.isNone(maybeAddress)) {
274
- extraShardsToAllocate.push([shard, Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER])
275
- continue
276
- }
277
- const address = maybeAddress.value
278
- extraShardsToAllocate.push([
279
- shard,
280
- Option.match(MutableHashMap.get(shardsPerRunner, address), {
281
- onNone: () => Number.MIN_SAFE_INTEGER,
282
- onSome: (shards) => -shards.size
283
- }),
284
- Option.match(MutableHashMap.get(runnerGroup, address), {
285
- onNone: () => Number.MIN_SAFE_INTEGER,
286
- onSome: (meta) => meta.registeredAt
287
- })
288
- ])
290
+ const iter = shards.values()
291
+ for (let i = 0; i < extraShards; i++) {
292
+ const shard = iter.next()
293
+ if (shard.done) break
294
+ shardsToRebalance.push(shard.value)
289
295
  }
290
296
  })
291
- extraShardsToAllocate.sort(allocationOrder)
292
- for (let i = 0; i < extraShardsToAllocate.length; i++) {
293
- shardsToRebalance.push(extraShardsToAllocate[i][0])
294
- }
295
297
  }
296
298
 
297
299
  return pickNewRunners(shardsToRebalance, state, group, shardsPerRunner, maxVersion)
@@ -301,7 +303,7 @@ function pickNewRunners(
301
303
  shardsToRebalance: ReadonlyArray<number>,
302
304
  state: State,
303
305
  group: string,
304
- shardsPerRunner = state.shardsPerRunner(group),
306
+ shardsPerRunner: MutableHashMap.MutableHashMap<RunnerAddress, Set<number>>,
305
307
  maybeMaxVersion = state.maxVersion
306
308
  ): readonly [
307
309
  assignments: MutableHashMap.MutableHashMap<RunnerAddress, Set<number>>,
@@ -393,24 +395,6 @@ function pickNewRunners(
393
395
  return [addressAssignments, unassignments, changes]
394
396
  }
395
397
 
396
- function takeRandom<A>(self: Iterable<A>, n: number): ReadonlyArray<A> {
397
- const array = Array.from(self)
398
- let currentIndex = array.length
399
- while (currentIndex != 0) {
400
- const randomIndex = Math.floor(Math.random() * currentIndex)
401
- currentIndex = currentIndex - 1
402
- swap(array, currentIndex, randomIndex)
403
- }
404
- return n < array.length ? array.slice(0, n) : array
405
- }
406
-
407
- function swap<A>(array: Array<A>, i: number, j: number): ReadonlyArray<A> {
408
- const tmp = array[i]
409
- array[i] = array[j]
410
- array[j] = tmp
411
- return array
412
- }
413
-
414
398
  /** @internal */
415
399
  export const addAllNested = <K, V>(
416
400
  self: MutableHashMap.MutableHashMap<K, MutableHashSet.MutableHashSet<V>>,