@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
|
-
|
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
|
-
|
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
|
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
|
-
|
185
|
-
MutableHashMap.
|
186
|
-
|
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
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
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
|
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":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,uBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAH,uBAAA,CAAAC,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAL,uBAAA,CAAAC,OAAA;AACA,IAAAK,cAAA,GAAAN,uBAAA,CAAAC,OAAA;AACA,IAAAM,MAAA,GAAAP,uBAAA,CAAAC,OAAA;AACA,IAAAO,KAAA,GAAAR,uBAAA,CAAAC,OAAA;AAGA,IAAAQ,aAAA,GAAAR,OAAA;AACA,IAAAS,QAAA,GAAAT,OAAA;AACA,IAAAU,aAAA,GAAAV,OAAA;AAAiD,SAAAD,wBAAAY,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAd,uBAAA,YAAAA,CAAAY,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;AAEjD;AACM,MAAOkB,KAAK;EA6ELC,UAAA;EACAC,OAAA;EACAC,MAAA;EACAC,cAAA;EA/EX,OAAOC,WAAW,gBAAGjC,MAAM,CAACkC,UAAU,CAAC,WACrCF,cAAsB;IAEtB,MAAMG,OAAO,GAAG,OAAOC,0BAAY;IACnC,MAAMC,YAAY,GAAG,OAAOC,0BAAY;IAExC;IACA,MAAMC,aAAa,GAAG,OAAOJ,OAAO,CAACK,UAAU;IAC/C,MAAMC,iBAAiB,GAAG,OAAON,OAAO,CAACO,cAAc;IAEvD;IACA,MAAMC,WAAW,GAAG/C,GAAG,CAACgD,KAAK,EAAU;IACvC,MAAMC,YAAY,GAAG3C,cAAc,CAAC0C,KAAK,EAAyB;IAClE,OAAO5C,MAAM,CAAC8C,OAAO,CAACP,aAAa,EAAE,CAAC,CAACQ,OAAO,EAAEC,MAAM,CAAC,KACrDhD,MAAM,CAACiD,GAAG,CAACZ,YAAY,CAACa,OAAO,CAACH,OAAO,CAAC,EAAGG,OAAO,IAAI;MACpD,IAAIA,OAAO,EAAE;QACXhD,cAAc,CAACoB,GAAG,CAACuB,YAAY,EAAEE,OAAO,EAAEC,MAAM,CAAC;MACnD,CAAC,MAAM;QACLL,WAAW,CAACQ,IAAI,CAACH,MAAM,CAAC;MAC1B;IACF,CAAC,CAAC,EAAE;MAAEI,WAAW,EAAE,WAAW;MAAEC,OAAO,EAAE;IAAI,CAAE,CAAC;IAClD,IAAIV,WAAW,CAACW,MAAM,GAAG,CAAC,EAAE;MAC1B,OAAOtD,MAAM,CAACuD,UAAU,CAAC,uDAAuD,EAAEZ,WAAW,CAAC;IAChG;IAEA;IACA,MAAMa,cAAc,GAAGtD,cAAc,CAAC0C,KAAK,EAA0B;IACrE,MAAMa,kBAAkB,GAAG7D,GAAG,CAACgD,KAAK,EAA4B;IAChE,KAAK,MAAM,CAACc,KAAK,EAAEX,OAAO,CAAC,IAAIN,iBAAiB,EAAE;MAChD,IAAIrC,MAAM,CAACuD,MAAM,CAACZ,OAAO,CAAC,IAAI7C,cAAc,CAACkB,GAAG,CAACyB,YAAY,EAAEE,OAAO,CAACa,KAAK,CAAC,EAAE;QAC7E1D,cAAc,CAACoB,GAAG,CAACkC,cAAc,EAAEE,KAAK,EAAEX,OAAO,CAACa,KAAK,CAAC;MAC1D,CAAC,MAAM,IAAIxD,MAAM,CAACuD,MAAM,CAACZ,OAAO,CAAC,EAAE;QACjCU,kBAAkB,CAACN,IAAI,CAAC,CAACO,KAAK,EAAEX,OAAO,CAACa,KAAK,CAAC,CAAC;MACjD;IACF;IACA,IAAIH,kBAAkB,CAACH,MAAM,GAAG,CAAC,EAAE;MACjC,OAAOtD,MAAM,CAACuD,UAAU,CACtB,8EAA8E,EAC9EE,kBAAkB,CACnB;IACH;IAEA;IACA,MAAMI,GAAG,GAAG,OAAO9D,KAAK,CAAC+D,iBAAiB;IAC1C,MAAMjC,UAAU,GAAG3B,cAAc,CAAC0C,KAAK,EAAqC;IAC5E,MAAMmB,WAAW,GAAG,IAAIC,GAAG,EAA4E;IACvG;IACA;IACA;IACA,KAAK,MAAM,CAACjB,OAAO,EAAEC,MAAM,CAAC,IAAIH,YAAY,EAAE;MAC5C,MAAMoB,YAAY,GAAGC,kBAAkB,CAAC;QAAElB,MAAM;QAAEmB,YAAY,EAAEN;MAAG,CAAE,CAAC;MACtE3D,cAAc,CAACoB,GAAG,CAACO,UAAU,EAAEkB,OAAO,EAAEkB,YAAY,CAAC;MACrD,KAAK,MAAMG,KAAK,IAAIpB,MAAM,CAACqB,MAAM,EAAE;QACjC,IAAIC,QAAQ,GAAGP,WAAW,CAAC1C,GAAG,CAAC+C,KAAK,CAAC;QACrC,IAAI,CAACE,QAAQ,EAAE;UACbA,QAAQ,GAAGpE,cAAc,CAAC0C,KAAK,EAAqC;UACpEmB,WAAW,CAACzC,GAAG,CAAC8C,KAAK,EAAEE,QAAQ,CAAC;QAClC;QACApE,cAAc,CAACoB,GAAG,CAACgD,QAAQ,EAAEvB,OAAO,EAAEkB,YAAY,CAAC;MACrD;IACF;IAEA,MAAMM,UAAU,GAAG,IAAIP,GAAG,EAAqD;IAC/E,KAAK,MAAMI,KAAK,IAAIL,WAAW,CAACS,IAAI,EAAE,EAAE;MACtC,MAAMF,QAAQ,GAAG,IAAIN,GAAG,EAAwC;MAChEO,UAAU,CAACjD,GAAG,CAAC8C,KAAK,EAAEE,QAAQ,CAAC;MAC/B,KAAK,IAAIzD,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAImB,cAAc,EAAEnB,CAAC,EAAE,EAAE;QACxC,MAAM4D,OAAO,GAAG,IAAIC,gBAAO,CAAC;UAAEN,KAAK;UAAEO,EAAE,EAAE9D;QAAC,CAAE,CAAC;QAC7CyD,QAAQ,CAAChD,GAAG,CAACT,CAAC,EAAEX,cAAc,CAACmB,GAAG,CAACmC,cAAc,EAAEiB,OAAO,CAAC,CAAC;MAC9D;IACF;IAEA,OAAO,IAAI7C,KAAK,CAACC,UAAU,EAAEkC,WAAW,EAAEQ,UAAU,EAAEvC,cAAc,CAAC;EACvE,CAAC,CAAC;EAEF4C,YACW/C,UAA4E,EAC5EC,OAAsF,EACtFC,MAA8D,EAC9DC,cAAsB;IAHtB,KAAAH,UAAU,GAAVA,UAAU;IACV,KAAAC,OAAO,GAAPA,OAAO;IACP,KAAAC,MAAM,GAANA,MAAM;IACN,KAAAC,cAAc,GAAdA,cAAc;IAEvB,IAAI,CAAC6C,WAAW,GAAG3E,cAAc,CAAC0C,KAAK,EAAyC;IAChF,KAAK,MAAM,CAACwB,KAAK,EAAEE,QAAQ,CAAC,IAAI,IAAI,CAACvC,MAAM,EAAE;MAC3C,KAAK,MAAM,CAAC4C,EAAE,EAAE5B,OAAO,CAAC,IAAIuB,QAAQ,EAAE;QACpCpE,cAAc,CAACoB,GAAG,CAAC,IAAI,CAACuD,WAAW,EAAE,IAAIH,gBAAO,CAAC;UAAEN,KAAK;UAAEO;QAAE,CAAE,CAAC,EAAE5B,OAAO,CAAC;MAC3E;IACF;EACF;EAES8B,WAAW;EAEpBC,QAAQA,CAACV,KAAa;IACpB,IAAI,CAACtC,OAAO,CAACR,GAAG,CAAC8C,KAAK,EAAElE,cAAc,CAAC0C,KAAK,EAAqC,CAAC;IAClF,MAAMmC,QAAQ,GAAG,IAAIf,GAAG,EAAwC;IAChE,KAAK,IAAInD,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,IAAI,CAACmB,cAAc,EAAEnB,CAAC,EAAE,EAAE;MAC7CkE,QAAQ,CAACzD,GAAG,CAACT,CAAC,EAAET,MAAM,CAAC4E,IAAI,EAAE,CAAC;MAC9B9E,cAAc,CAACoB,GAAG,CAAC,IAAI,CAACuD,WAAW,EAAE,IAAIH,gBAAO,CAAC;QAAEN,KAAK;QAAEO,EAAE,EAAE9D;MAAC,CAAE,CAAC,EAAET,MAAM,CAAC4E,IAAI,EAAE,CAAC;IACpF;IACA,IAAI,CAACjD,MAAM,CAACT,GAAG,CAAC8C,KAAK,EAAEW,QAAQ,CAAC;EAClC;EAEAE,cAAcA,CACZlD,MAAyB,EACzBgB,OAAqC;IAErC,KAAK,MAAM0B,OAAO,IAAI1C,MAAM,EAAE;MAC5B7B,cAAc,CAACoB,GAAG,CAAC,IAAI,CAACuD,WAAW,EAAEJ,OAAO,EAAE1B,OAAO,CAAC;MACtD,IAAI,CAAChB,MAAM,CAACV,GAAG,CAACoD,OAAO,CAACL,KAAK,CAAC,EAAE9C,GAAG,CAACmD,OAAO,CAACE,EAAE,EAAE5B,OAAO,CAAC;IAC1D;EACF;EAEAmC,SAASA,CAAClC,MAAc,EAAEmB,YAAoB;IAC5C,MAAMF,YAAY,GAAGC,kBAAkB,CAAC;MAAElB,MAAM;MAAEmB;IAAY,CAAE,CAAC;IACjEjE,cAAc,CAACoB,GAAG,CAAC,IAAI,CAACO,UAAU,EAAEmB,MAAM,CAACD,OAAO,EAAEkB,YAAY,CAAC;IACjE,KAAK,MAAMG,KAAK,IAAIpB,MAAM,CAACqB,MAAM,EAAE;MACjC,IAAI,CAAC,IAAI,CAACvC,OAAO,CAACV,GAAG,CAACgD,KAAK,CAAC,EAAE;QAC5B,IAAI,CAACU,QAAQ,CAACV,KAAK,CAAC;MACtB;MACA,MAAME,QAAQ,GAAG,IAAI,CAACxC,OAAO,CAACT,GAAG,CAAC+C,KAAK,CAAE;MACzClE,cAAc,CAACoB,GAAG,CAACgD,QAAQ,EAAEtB,MAAM,CAACD,OAAO,EAAEkB,YAAY,CAAC;IAC5D;EACF;EAEAkB,YAAYA,CAACpC,OAAsB;IACjC7C,cAAc,CAACkF,MAAM,CAAC,IAAI,CAACvD,UAAU,EAAEkB,OAAO,CAAC;IAC/C,KAAK,MAAMuB,QAAQ,IAAI,IAAI,CAACxC,OAAO,CAACuD,MAAM,EAAE,EAAE;MAC5CnF,cAAc,CAACkF,MAAM,CAACd,QAAQ,EAAEvB,OAAO,CAAC;IAC1C;EACF;EAEA,IAAIuC,UAAUA,CAAA;IACZ,IAAIpF,cAAc,CAACqF,IAAI,CAAC,IAAI,CAAC1D,UAAU,CAAC,KAAK,CAAC,EAAE,OAAOzB,MAAM,CAAC4E,IAAI,EAAE;IACpE,IAAIQ,OAAO,GAAuBC,SAAS;IAC3C,KAAK,MAAM,GAAGC,IAAI,CAAC,IAAI,IAAI,CAAC7D,UAAU,EAAE;MACtC,IAAI2D,OAAO,KAAKC,SAAS,IAAIC,IAAI,CAAC1C,MAAM,CAACwC,OAAO,GAAGA,OAAO,EAAE;QAC1DA,OAAO,GAAGE,IAAI,CAAC1C,MAAM,CAACwC,OAAO;MAC/B;IACF;IACA,OAAOpF,MAAM,CAACuF,IAAI,CAACH,OAAQ,CAAC;EAC9B;EAEAI,qBAAqBA,CAACJ,OAA8B;IAClD,OAAOA,OAAO,CAACK,IAAI,CACjBzF,MAAM,CAAC6C,GAAG,CAAE6C,GAAG,IAAKlG,GAAG,CAACmG,KAAK,CAAC,IAAI,CAACC,cAAc,EAAGR,OAAO,IAAKA,OAAO,KAAKM,GAAG,CAAC,CAAC,EACjF1F,MAAM,CAAC6F,SAAS,CAACC,oBAAU,CAAC,CAC7B;EACH;EAEA,IAAIC,UAAUA,CAAA;IAIZ,MAAMC,SAAS,GAAG,IAAIpC,GAAG,EAAkB;IAC3C,IAAIqC,UAAU,GAAG,CAAC;IAClB,KAAK,MAAM,GAAGtD,OAAO,CAAC,IAAI,IAAI,CAAC8B,WAAW,EAAE;MAC1C,IAAIzE,MAAM,CAACkG,MAAM,CAACvD,OAAO,CAAC,EAAE;QAC1BsD,UAAU,EAAE;QACZ;MACF;MACA,MAAMrD,MAAM,GAAGD,OAAO,CAACa,KAAK,CAAC2C,QAAQ,EAAE;MACvC,MAAMC,KAAK,GAAGJ,SAAS,CAAC/E,GAAG,CAAC2B,MAAM,CAAC,IAAI,CAAC;MACxCoD,SAAS,CAAC9E,GAAG,CAAC0B,MAAM,EAAEwD,KAAK,GAAG,CAAC,CAAC;IAClC;IAEA,OAAO;MAAEJ,SAAS;MAAEC;IAAU,CAAE;EAClC;EAEAI,eAAeA,CAACrC,KAAa;IAC3B,MAAMsC,YAAY,GAAG,IAAI,CAAC5E,OAAO,CAACT,GAAG,CAAC+C,KAAK,CAAC;IAC5C,MAAMrC,MAAM,GAAG7B,cAAc,CAAC0C,KAAK,EAA8B;IAEjE,IAAI,CAAC8D,YAAY,IAAIxG,cAAc,CAACyG,OAAO,CAACD,YAAY,CAAC,EAAE,OAAO3E,MAAM;IACxE7B,cAAc,CAAC4C,OAAO,CAAC4D,YAAY,EAAE,CAACE,CAAC,EAAE7D,OAAO,KAAI;MAClD7C,cAAc,CAACoB,GAAG,CAACS,MAAM,EAAEgB,OAAO,EAAE,IAAI8D,GAAG,EAAE,CAAC;IAChD,CAAC,CAAC;IAEF,MAAMhC,WAAW,GAAG,IAAI,CAAC9C,MAAM,CAACV,GAAG,CAAC+C,KAAK,CAAE;IAC3C,KAAK,MAAM,CAACO,EAAE,EAAE5B,OAAO,CAAC,IAAI8B,WAAW,EAAE;MACvC,IAAIzE,MAAM,CAACkG,MAAM,CAACvD,OAAO,CAAC,EAAE;MAC5B,MAAM+D,QAAQ,GAAG1G,MAAM,CAAC2G,cAAc,CAAC7G,cAAc,CAACmB,GAAG,CAACU,MAAM,EAAEgB,OAAO,CAACa,KAAK,CAAC,CAAE;MAClFkD,QAAQ,CAACE,GAAG,CAACrC,EAAE,CAAC;IAClB;IAEA,OAAO5C,MAAM;EACf;EAEAkF,sBAAsBA,CAAC7C,KAAa;IAClC,MAAM8C,WAAW,GAAGhH,cAAc,CAACqF,IAAI,CAAC,IAAI,CAACzD,OAAO,CAACT,GAAG,CAAC+C,KAAK,CAAC,IAAIlE,cAAc,CAAC0C,KAAK,EAAE,CAAC;IAC1F,MAAMuE,UAAU,GAAG,IAAI,CAACpF,MAAM,CAACV,GAAG,CAAC+C,KAAK,CAAC,IAAI,IAAIJ,GAAG,EAAE;IACtD,OAAOkD,WAAW,GAAG,CAAC,GAAGC,UAAU,CAAC5B,IAAI,GAAG2B,WAAW,GAAG,CAAC;EAC5D;EAEA,IAAIE,mBAAmBA,CAAA;IACrB,MAAMf,UAAU,GAAmB,EAAE;IACrC,KAAK,MAAM,CAAC5B,OAAO,EAAE1B,OAAO,CAAC,IAAI,IAAI,CAAC8B,WAAW,EAAE;MACjD,IAAIzE,MAAM,CAACkG,MAAM,CAACvD,OAAO,CAAC,EAAE;QAC1BsD,UAAU,CAAClD,IAAI,CAACsB,OAAO,CAAC;MAC1B;IACF;IACA,OAAO4B,UAAU;EACnB;EAEAgB,gBAAgBA,CAACjD,KAAa;IAC5B,MAAM0C,QAAQ,GAAkB,EAAE;IAClC,MAAMjC,WAAW,GAAG,IAAI,CAAC9C,MAAM,CAACV,GAAG,CAAC+C,KAAK,CAAE;IAC3C,KAAK,MAAM,CAACV,KAAK,EAAEX,OAAO,CAAC,IAAI8B,WAAW,EAAE;MAC1C,IAAIzE,MAAM,CAACkG,MAAM,CAACvD,OAAO,CAAC,EAAE;QAC1B+D,QAAQ,CAAC3D,IAAI,CAACO,KAAK,CAAC;MACtB;IACF;IACA,OAAOoD,QAAQ;EACjB;EAEA,IAAYd,cAAcA,CAAA;IACxB,MAAMA,cAAc,GAAkB,EAAE;IACxC,KAAK,MAAM,GAAGN,IAAI,CAAC,IAAI,IAAI,CAAC7D,UAAU,EAAE;MACtCmE,cAAc,CAAC7C,IAAI,CAACuC,IAAI,CAAC1C,MAAM,CAACwC,OAAO,CAAC;IAC1C;IACA,OAAOQ,cAAc;EACvB;;AAQF;AAAAsB,OAAA,CAAA1F,KAAA,GAAAA,KAAA;AACO,MAAMsC,kBAAkB,GAAIlB,MAA0B,IAAyBA,MAAM;AAAAsE,OAAA,CAAApD,kBAAA,GAAAA,kBAAA;AAE5F,MAAMqD,eAAe,gBAA0ClH,KAAK,CAACmH,OAAO,cAC1EnH,KAAK,CAACoH,QAAQ,CAACpH,KAAK,CAACqH,MAAM,EAAE,CAAC,GAAG3F,MAAM,CAAC,KAAKA,MAAM,CAAC,eACpD1B,KAAK,CAACoH,QAAQ,CAACpH,KAAK,CAACqH,MAAM,EAAE,CAAC,IAAKvD,YAAY,CAAC,KAAKA,YAAY,CAAC,CACnE;AAED;AACM,SAAUwD,0BAA0BA,CAACC,KAAY,EAAExD,KAAa;EAKpE,MAAMqC,eAAe,GAAGmB,KAAK,CAACnB,eAAe,CAACrC,KAAK,CAAC;EACpD,MAAMkB,UAAU,GAAGsC,KAAK,CAACtC,UAAU;EACnC,MAAMuC,iBAAiB,GAAGD,KAAK,CAACP,gBAAgB,CAACjD,KAAK,CAAC;EAEvD,MAAM0D,WAAW,GAAGF,KAAK,CAAC9F,OAAO,CAACT,GAAG,CAAC+C,KAAK,CAAE;EAC7C,MAAM2D,WAAW,GAAGH,KAAK,CAAC7F,MAAM,CAACV,GAAG,CAAC+C,KAAK,CAAE;EAE5C,IAAIwD,KAAK,CAAChC,qBAAqB,CAACN,UAAU,CAAC,EAAE;IAC3C,MAAM0C,qBAAqB,GAAGpI,GAAG,CAACgD,KAAK,EAAyD;IAChG,MAAMqE,sBAAsB,GAAGW,KAAK,CAACX,sBAAsB,CAAC7C,KAAK,CAAC;IAClElE,cAAc,CAAC4C,OAAO,CAAC2D,eAAe,EAAG1E,MAAM,IAAI;MACjD;MACA,MAAMkG,WAAW,GAAGC,IAAI,CAACpC,GAAG,CAAC,CAAC,EAAE/D,MAAM,CAACwD,IAAI,GAAG0B,sBAAsB,CAAC;MACrE,KAAK,MAAMvD,KAAK,IAAIyE,UAAU,CAACpG,MAAM,EAAEkG,WAAW,CAAC,EAAE;QACnD,MAAMG,YAAY,GAAGL,WAAW,CAAC1G,GAAG,CAACqC,KAAK,CAAC,IAAItD,MAAM,CAAC4E,IAAI,EAAE;QAC5D,IAAI5E,MAAM,CAACkG,MAAM,CAAC8B,YAAY,CAAC,EAAE;UAC/BJ,qBAAqB,CAAC7E,IAAI,CAAC,CAACO,KAAK,EAAE2E,MAAM,CAACC,gBAAgB,EAAED,MAAM,CAACC,gBAAgB,CAAC,CAAC;UACrF;QACF;QACA,MAAMvF,OAAO,GAAGqF,YAAY,CAACxE,KAAK;QAClCoE,qBAAqB,CAAC7E,IAAI,CAAC,CACzBO,KAAK,EACLtD,MAAM,CAACmI,KAAK,CAACrI,cAAc,CAACmB,GAAG,CAACoF,eAAe,EAAE1D,OAAO,CAAC,EAAE;UACzDyF,MAAM,EAAEA,CAAA,KAAMH,MAAM,CAACC,gBAAgB;UACrCG,MAAM,EAAG1G,MAAM,IAAK,CAACA,MAAM,CAACwD;SAC7B,CAAC,EACFnF,MAAM,CAACmI,KAAK,CAACrI,cAAc,CAACmB,GAAG,CAACyG,WAAW,EAAE/E,OAAO,CAAC,EAAE;UACrDyF,MAAM,EAAEA,CAAA,KAAMH,MAAM,CAACC,gBAAgB;UACrCG,MAAM,EAAG/C,IAAI,IAAKA,IAAI,CAACvB;SACxB,CAAC,CACH,CAAC;MACJ;IACF,CAAC,CAAC;IACF6D,qBAAqB,CAACU,IAAI,CAACnB,eAAe,CAAC;IAC3C,KAAK,IAAIvG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgH,qBAAqB,CAAC1E,MAAM,EAAEtC,CAAC,EAAE,EAAE;MACrD6G,iBAAiB,CAAC1E,IAAI,CAAC6E,qBAAqB,CAAChH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD;EACF;EAEA,OAAO2H,cAAc,CAACd,iBAAiB,EAAED,KAAK,EAAExD,KAAK,EAAEqC,eAAe,EAAEnB,UAAU,CAAC;AACrF;AAEA,SAASqD,cAAcA,CACrBd,iBAAwC,EACxCD,KAAY,EACZxD,KAAa,EACbqC,eAAe,GAAGmB,KAAK,CAACnB,eAAe,CAACrC,KAAK,CAAC,EAC9CwE,eAAe,GAAGhB,KAAK,CAACtC,UAAU;EAMlC,MAAMuD,kBAAkB,GAAG3I,cAAc,CAAC0C,KAAK,EAA8B;EAC7E,MAAMkG,aAAa,GAAG5I,cAAc,CAAC0C,KAAK,EAA8B;EACxE,MAAMmG,OAAO,GAAG5I,cAAc,CAACyC,KAAK,EAAiB;EAErD,IAAIxC,MAAM,CAACkG,MAAM,CAACsC,eAAe,CAAC,EAAE;IAClC,OAAO,CAACC,kBAAkB,EAAEC,aAAa,EAAEC,OAAO,CAAC;EACrD;EACA,MAAMzD,UAAU,GAAGsD,eAAe,CAAChF,KAAK;EAExC,MAAMkE,WAAW,GAAGF,KAAK,CAAC9F,OAAO,CAACT,GAAG,CAAC+C,KAAK,CAAE;EAC7C,MAAM2D,WAAW,GAAGH,KAAK,CAAC7F,MAAM,CAACV,GAAG,CAAC+C,KAAK,CAAE;EAE5C,KAAK,MAAMK,OAAO,IAAIoD,iBAAiB,EAAE;IACvC;IACA,IAAImB,SAAoC;IACxC,IAAIC,eAAwC;IAE5C,KAAK,MAAM,CAAClG,OAAO,EAAEhB,MAAM,CAAC,IAAI0E,eAAe,EAAE;MAC/C;MACA,MAAMyC,eAAe,GAAGhJ,cAAc,CAACmB,GAAG,CAACyG,WAAW,EAAE/E,OAAO,CAAC;MAChE,IAAI3C,MAAM,CAACkG,MAAM,CAAC4C,eAAe,CAAC,EAAE;MACpC,MAAMC,UAAU,GAAGD,eAAe,CAACtF,KAAK;MACxC,IAAIuF,UAAU,CAACnG,MAAM,CAACwC,OAAO,KAAKF,UAAU,EAAE;MAE9C;MACA,IAAIpF,cAAc,CAACkB,GAAG,CAAC0H,aAAa,EAAE/F,OAAO,CAAC,EAAE;MAEhD,IAAIiG,SAAS,KAAKvD,SAAS,IAAI1D,MAAM,CAACwD,IAAI,GAAG0D,eAAgB,CAAC1D,IAAI,EAAE;QAClEyD,SAAS,GAAGjG,OAAO;QACnBkG,eAAe,GAAGlH,MAAM;MAC1B;IACF;IACA,IAAI,CAACiH,SAAS,IAAI,CAACC,eAAe,EAAE;IAEpC;IACA,MAAMG,SAAS,GAAGhJ,MAAM,CAAC2G,cAAc,CAACgB,WAAW,CAAC1G,GAAG,CAACoD,OAAO,CAAC,IAAIrE,MAAM,CAAC4E,IAAI,EAAE,CAAC;IAClF,IAAIoE,SAAS,IAAIA,SAAS,CAAC7C,QAAQ,EAAE,KAAKyC,SAAS,CAACzC,QAAQ,EAAE,EAAE;MAC9D;IACF;IACA,MAAM8C,SAAS,GAAGD,SAAS,IAAIhJ,MAAM,CAAC2G,cAAc,CAAC7G,cAAc,CAACmB,GAAG,CAACoF,eAAe,EAAE2C,SAAS,CAAC,CAAC;IAEpG;IACA;IACA,IAAIC,SAAS,IAAIJ,eAAe,CAAC1D,IAAI,GAAG,CAAC,IAAI8D,SAAS,CAAC9D,IAAI,EAAE;IAE7D;IACArF,cAAc,CAACoJ,QAAQ,CACrBT,kBAAkB,EAClBG,SAAS,EACT5I,MAAM,CAACmI,KAAK,CAAC;MACXC,MAAM,EAAEA,CAAA,KAAMpI,MAAM,CAACuF,IAAI,CAAC,IAAIkB,GAAG,CAAC,CAACpC,OAAO,CAAC,CAAC,CAAC;MAC7CgE,MAAM,EAAG1G,MAAM,IAAI;QACjBA,MAAM,CAACiF,GAAG,CAACvC,OAAO,CAAC;QACnB,OAAOrE,MAAM,CAACuF,IAAI,CAAC5D,MAAM,CAAC;MAC5B;KACD,CAAC,CACH;IACD,IAAIqH,SAAS,EAAE;MACblJ,cAAc,CAACoJ,QAAQ,CACrBR,aAAa,EACbM,SAAS,EACThJ,MAAM,CAACmI,KAAK,CAAC;QACXC,MAAM,EAAEA,CAAA,KAAMpI,MAAM,CAACuF,IAAI,CAAC,IAAIkB,GAAG,CAAC,CAACpC,OAAO,CAAC,CAAC,CAAC;QAC7CgE,MAAM,EAAG1G,MAAM,IAAI;UACjBA,MAAM,CAACiF,GAAG,CAACvC,OAAO,CAAC;UACnB,OAAOrE,MAAM,CAACuF,IAAI,CAAC5D,MAAM,CAAC;QAC5B;OACD,CAAC,CACH;IACH;IAEA;IACAkH,eAAe,CAACjC,GAAG,CAACvC,OAAO,CAAC;IAC5B,IAAI4E,SAAS,EAAE;MACbA,SAAS,CAACE,MAAM,CAAC9E,OAAO,CAAC;IAC3B;IAEA;IACAtE,cAAc,CAAC6G,GAAG,CAAC+B,OAAO,EAAEC,SAAS,CAAC;IACtC,IAAII,SAAS,EAAEjJ,cAAc,CAAC6G,GAAG,CAAC+B,OAAO,EAAEK,SAAS,CAAC;EACvD;EAEA,OAAO,CAACP,kBAAkB,EAAEC,aAAa,EAAEC,OAAO,CAAC;AACrD;AAEA,SAASZ,UAAUA,CAAIqB,IAAiB,EAAE3I,CAAS;EACjD,MAAM4I,KAAK,GAAGC,KAAK,CAACC,IAAI,CAACH,IAAI,CAAC;EAC9B,IAAII,YAAY,GAAGH,KAAK,CAACnG,MAAM;EAC/B,OAAOsG,YAAY,IAAI,CAAC,EAAE;IACxB,MAAMC,WAAW,GAAG3B,IAAI,CAAC4B,KAAK,CAAC5B,IAAI,CAAC6B,MAAM,EAAE,GAAGH,YAAY,CAAC;IAC5DA,YAAY,GAAGA,YAAY,GAAG,CAAC;IAC/BI,IAAI,CAACP,KAAK,EAAEG,YAAY,EAAEC,WAAW,CAAC;EACxC;EACA,OAAOhJ,CAAC,GAAG4I,KAAK,CAACnG,MAAM,GAAGmG,KAAK,CAACQ,KAAK,CAAC,CAAC,EAAEpJ,CAAC,CAAC,GAAG4I,KAAK;AACrD;AAEA,SAASO,IAAIA,CAAIP,KAAe,EAAEzI,CAAS,EAAEkJ,CAAS;EACpD,MAAMC,GAAG,GAAGV,KAAK,CAACzI,CAAC,CAAC;EACpByI,KAAK,CAACzI,CAAC,CAAC,GAAGyI,KAAK,CAACS,CAAC,CAAC;EACnBT,KAAK,CAACS,CAAC,CAAC,GAAGC,GAAG;EACd,OAAOV,KAAK;AACd;AAEA;AACO,MAAMW,YAAY,GAAGA,CAC1BZ,IAAwE,EACxEa,GAAM,EACNhF,MAAmB,KACjB;EACF,MAAMiF,IAAI,GAAGpK,cAAc,CAACmB,GAAG,CAACmI,IAAI,EAAEa,GAAG,CAAC;EAC1C,IAAIjK,MAAM,CAACuD,MAAM,CAAC2G,IAAI,CAAC,EAAE;IACvB,KAAK,MAAM1G,KAAK,IAAIyB,MAAM,EAAE;MAC1BlF,cAAc,CAAC6G,GAAG,CAACsD,IAAI,CAAC1G,KAAK,EAAEA,KAAK,CAAC;IACvC;EACF,CAAC,MAAM;IACL1D,cAAc,CAACoB,GAAG,CAACkI,IAAI,EAAEa,GAAG,EAAElK,cAAc,CAACoK,YAAY,CAAClF,MAAM,CAAC,CAAC;EACpE;AACF,CAAC;AAAAiC,OAAA,CAAA8C,YAAA,GAAAA,YAAA","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":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,uBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAH,uBAAA,CAAAC,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAL,uBAAA,CAAAC,OAAA;AACA,IAAAK,cAAA,GAAAN,uBAAA,CAAAC,OAAA;AACA,IAAAM,MAAA,GAAAP,uBAAA,CAAAC,OAAA;AAGA,IAAAO,aAAA,GAAAP,OAAA;AACA,IAAAQ,QAAA,GAAAR,OAAA;AACA,IAAAS,aAAA,GAAAT,OAAA;AAAiD,SAAAD,wBAAAW,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAb,uBAAA,YAAAA,CAAAW,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;AAEjD;AACM,MAAOkB,KAAK;EA0ELC,UAAA;EACAC,OAAA;EACAC,MAAA;EACAC,cAAA;EA5EX,OAAOC,WAAW,gBAAGhC,MAAM,CAACiC,UAAU,CAAC,WACrCF,cAAsB;IAEtB,MAAMG,OAAO,GAAG,OAAOC,0BAAY;IACnC,MAAMC,YAAY,GAAG,OAAOC,0BAAY;IAExC;IACA,MAAMC,aAAa,GAAG,OAAOJ,OAAO,CAACK,UAAU;IAC/C,MAAMC,iBAAiB,GAAG,OAAON,OAAO,CAACO,cAAc;IAEvD;IACA,MAAMC,WAAW,GAAG9C,GAAG,CAAC+C,KAAK,EAAU;IACvC,MAAMC,YAAY,GAAG1C,cAAc,CAACyC,KAAK,EAAyB;IAClE,OAAO3C,MAAM,CAAC6C,OAAO,CAACP,aAAa,EAAE,CAAC,CAACQ,OAAO,EAAEC,MAAM,CAAC,KACrD/C,MAAM,CAACgD,GAAG,CAACZ,YAAY,CAACa,OAAO,CAACH,OAAO,CAAC,EAAGG,OAAO,IAAI;MACpD,IAAIA,OAAO,EAAE;QACX/C,cAAc,CAACmB,GAAG,CAACuB,YAAY,EAAEE,OAAO,EAAEC,MAAM,CAAC;MACnD,CAAC,MAAM;QACLL,WAAW,CAACQ,IAAI,CAACH,MAAM,CAAC;MAC1B;IACF,CAAC,CAAC,EAAE;MAAEI,WAAW,EAAE,WAAW;MAAEC,OAAO,EAAE;IAAI,CAAE,CAAC;IAClD,IAAIV,WAAW,CAACW,MAAM,GAAG,CAAC,EAAE;MAC1B,OAAOrD,MAAM,CAACsD,UAAU,CAAC,uDAAuD,EAAEZ,WAAW,CAAC;IAChG;IAEA;IACA,MAAMa,cAAc,GAAGrD,cAAc,CAACyC,KAAK,EAA0B;IACrE,MAAMa,kBAAkB,GAAG5D,GAAG,CAAC+C,KAAK,EAA4B;IAChE,KAAK,MAAM,CAACc,KAAK,EAAEX,OAAO,CAAC,IAAIN,iBAAiB,EAAE;MAChD,IAAIpC,MAAM,CAACsD,MAAM,CAACZ,OAAO,CAAC,IAAI5C,cAAc,CAACiB,GAAG,CAACyB,YAAY,EAAEE,OAAO,CAACa,KAAK,CAAC,EAAE;QAC7EzD,cAAc,CAACmB,GAAG,CAACkC,cAAc,EAAEE,KAAK,EAAEX,OAAO,CAACa,KAAK,CAAC;MAC1D,CAAC,MAAM,IAAIvD,MAAM,CAACsD,MAAM,CAACZ,OAAO,CAAC,EAAE;QACjCU,kBAAkB,CAACN,IAAI,CAAC,CAACO,KAAK,EAAEX,OAAO,CAACa,KAAK,CAAC,CAAC;MACjD;IACF;IACA,IAAIH,kBAAkB,CAACH,MAAM,GAAG,CAAC,EAAE;MACjC,OAAOrD,MAAM,CAACsD,UAAU,CACtB,8EAA8E,EAC9EE,kBAAkB,CACnB;IACH;IAEA;IACA,MAAMI,GAAG,GAAG,OAAO7D,KAAK,CAAC8D,iBAAiB;IAC1C,MAAMjC,UAAU,GAAG1B,cAAc,CAACyC,KAAK,EAAqC;IAC5E,MAAMmB,WAAW,GAAG,IAAIC,GAAG,EAA4E;IACvG,KAAK,MAAM,CAACjB,OAAO,EAAEC,MAAM,CAAC,IAAIH,YAAY,EAAE;MAC5C,MAAMoB,YAAY,GAAGC,kBAAkB,CAAC;QAAElB,MAAM;QAAEmB,YAAY,EAAEN;MAAG,CAAE,CAAC;MACtE1D,cAAc,CAACmB,GAAG,CAACO,UAAU,EAAEkB,OAAO,EAAEkB,YAAY,CAAC;MACrD,KAAK,MAAMG,KAAK,IAAIpB,MAAM,CAACqB,MAAM,EAAE;QACjC,IAAIC,QAAQ,GAAGP,WAAW,CAAC1C,GAAG,CAAC+C,KAAK,CAAC;QACrC,IAAI,CAACE,QAAQ,EAAE;UACbA,QAAQ,GAAGnE,cAAc,CAACyC,KAAK,EAAqC;UACpEmB,WAAW,CAACzC,GAAG,CAAC8C,KAAK,EAAEE,QAAQ,CAAC;QAClC;QACAnE,cAAc,CAACmB,GAAG,CAACgD,QAAQ,EAAEvB,OAAO,EAAEkB,YAAY,CAAC;MACrD;IACF;IAEA,MAAMM,UAAU,GAAG,IAAIP,GAAG,EAAqD;IAC/E,KAAK,MAAMI,KAAK,IAAIL,WAAW,CAACS,IAAI,EAAE,EAAE;MACtC,MAAMF,QAAQ,GAAG,IAAIN,GAAG,EAAwC;MAChEO,UAAU,CAACjD,GAAG,CAAC8C,KAAK,EAAEE,QAAQ,CAAC;MAC/B,KAAK,IAAIzD,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAImB,cAAc,EAAEnB,CAAC,EAAE,EAAE;QACxC,MAAM4D,OAAO,GAAG,IAAIC,gBAAO,CAAC;UAAEN,KAAK;UAAEO,EAAE,EAAE9D;QAAC,CAAE,CAAC;QAC7CyD,QAAQ,CAAChD,GAAG,CAACT,CAAC,EAAEV,cAAc,CAACkB,GAAG,CAACmC,cAAc,EAAEiB,OAAO,CAAC,CAAC;MAC9D;IACF;IAEA,OAAO,IAAI7C,KAAK,CAACC,UAAU,EAAEkC,WAAW,EAAEQ,UAAU,EAAEvC,cAAc,CAAC;EACvE,CAAC,CAAC;EAEF4C,YACW/C,UAA4E,EAC5EC,OAAsF,EACtFC,MAA8D,EAC9DC,cAAsB;IAHtB,KAAAH,UAAU,GAAVA,UAAU;IACV,KAAAC,OAAO,GAAPA,OAAO;IACP,KAAAC,MAAM,GAANA,MAAM;IACN,KAAAC,cAAc,GAAdA,cAAc;IAEvB,IAAI,CAAC6C,WAAW,GAAG1E,cAAc,CAACyC,KAAK,EAAyC;IAChF,IAAI,CAACkC,SAAS,GAAG,IAAId,GAAG,EAAqE;IAE7F,KAAK,MAAM,CAACjB,OAAO,EAAEgC,IAAI,CAAC,IAAI,IAAI,CAAClD,UAAU,EAAE;MAC7C,KAAK,MAAMuC,KAAK,IAAIW,IAAI,CAAC/B,MAAM,CAACqB,MAAM,EAAE;QACtC,IAAIW,SAAS,GAAG,IAAI,CAACF,SAAS,CAACzD,GAAG,CAAC+C,KAAK,CAAC;QACzC,IAAI,CAACY,SAAS,EAAE;UACdA,SAAS,GAAG7E,cAAc,CAACyC,KAAK,EAA8B;UAC9D,IAAI,CAACkC,SAAS,CAACxD,GAAG,CAAC8C,KAAK,EAAEY,SAAS,CAAC;QACtC;QACA7E,cAAc,CAACmB,GAAG,CAAC0D,SAAS,EAAEjC,OAAO,EAAE,IAAIkC,GAAG,EAAE,CAAC;MACnD;IACF;IAEA,KAAK,MAAM,CAACb,KAAK,EAAEE,QAAQ,CAAC,IAAI,IAAI,CAACvC,MAAM,EAAE;MAC3C,MAAMmD,YAAY,GAAG,IAAI,CAACJ,SAAS,CAACzD,GAAG,CAAC+C,KAAK,CAAE;MAC/C,KAAK,MAAM,CAACO,EAAE,EAAEQ,QAAQ,CAAC,IAAIb,QAAQ,EAAE;QACrC,MAAMvB,OAAO,GAAG1C,MAAM,CAAC+E,MAAM,CAACD,QAAQ,EAAGE,IAAI,IAAKlF,cAAc,CAACiB,GAAG,CAAC,IAAI,CAACS,UAAU,EAAEwD,IAAI,CAAC,CAAC;QAC5FlF,cAAc,CAACmB,GAAG,CAAC,IAAI,CAACuD,WAAW,EAAE,IAAIH,gBAAO,CAAC;UAAEN,KAAK;UAAEO;QAAE,CAAE,CAAC,EAAE5B,OAAO,CAAC;QACzE,IAAI1C,MAAM,CAACsD,MAAM,CAACZ,OAAO,CAAC,EAAE;UAC1B1C,MAAM,CAACiF,cAAc,CAACnF,cAAc,CAACkB,GAAG,CAAC6D,YAAY,EAAEnC,OAAO,CAACa,KAAK,CAAC,CAAC,EAAE2B,GAAG,CAACZ,EAAE,CAAC;QACjF;MACF;IACF;EACF;EAESE,WAAW;EACXC,SAAS;EAElBU,QAAQA,CAACpB,KAAa;IACpB,IAAI,CAACtC,OAAO,CAACR,GAAG,CAAC8C,KAAK,EAAEjE,cAAc,CAACyC,KAAK,EAAqC,CAAC;IAClF,MAAM6C,QAAQ,GAAG,IAAIzB,GAAG,EAAwC;IAChE,IAAI,CAACjC,MAAM,CAACT,GAAG,CAAC8C,KAAK,EAAEqB,QAAQ,CAAC;IAChC,KAAK,IAAI5E,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,IAAI,CAACmB,cAAc,EAAEnB,CAAC,EAAE,EAAE;MAC7C4E,QAAQ,CAACnE,GAAG,CAACT,CAAC,EAAER,MAAM,CAACqF,IAAI,EAAE,CAAC;MAC9BvF,cAAc,CAACmB,GAAG,CAAC,IAAI,CAACuD,WAAW,EAAE,IAAIH,gBAAO,CAAC;QAAEN,KAAK;QAAEO,EAAE,EAAE9D;MAAC,CAAE,CAAC,EAAER,MAAM,CAACqF,IAAI,EAAE,CAAC;IACpF;IAEA,MAAMR,YAAY,GAAG/E,cAAc,CAACyC,KAAK,EAA8B;IACvE,IAAI,CAACkC,SAAS,CAACxD,GAAG,CAAC8C,KAAK,EAAEc,YAAY,CAAC;IACvC,KAAK,MAAM,CAACnC,OAAO,CAAC,IAAI,IAAI,CAAClB,UAAU,EAAE;MACvC1B,cAAc,CAACmB,GAAG,CAAC4D,YAAY,EAAEnC,OAAO,EAAE,IAAIkC,GAAG,EAAE,CAAC;IACtD;EACF;EAEAU,cAAcA,CACZ5D,MAAyB,EACzBgB,OAAqC;IAErC,KAAK,MAAM0B,OAAO,IAAI1C,MAAM,EAAE;MAC5B,MAAM6D,cAAc,GAAGvF,MAAM,CAACwF,OAAO,CAAC1F,cAAc,CAACkB,GAAG,CAAC,IAAI,CAACwD,WAAW,EAAEJ,OAAO,CAAC,CAAC;MACpFtE,cAAc,CAACmB,GAAG,CAAC,IAAI,CAACuD,WAAW,EAAEJ,OAAO,EAAE1B,OAAO,CAAC;MACtD,IAAI,CAAChB,MAAM,CAACV,GAAG,CAACoD,OAAO,CAACL,KAAK,CAAC,EAAE9C,GAAG,CAACmD,OAAO,CAACE,EAAE,EAAE5B,OAAO,CAAC;MAExD,MAAM+B,SAAS,GAAG,IAAI,CAACA,SAAS,CAACzD,GAAG,CAACoD,OAAO,CAACL,KAAK,CAAE;MACpD,IAAI/D,MAAM,CAACsD,MAAM,CAACiC,cAAc,CAAC,EAAE;QACjCvF,MAAM,CAACiF,cAAc,CAACnF,cAAc,CAACkB,GAAG,CAACyD,SAAS,EAAEc,cAAc,CAAChC,KAAK,CAAC,CAAC,EAAEkC,MAAM,CAACrB,OAAO,CAACE,EAAE,CAAC;MAChG;MACA,IAAItE,MAAM,CAACsD,MAAM,CAACZ,OAAO,CAAC,EAAE;QAC1B1C,MAAM,CAACiF,cAAc,CAACnF,cAAc,CAACkB,GAAG,CAACyD,SAAS,EAAE/B,OAAO,CAACa,KAAK,CAAC,CAAC,EAAE2B,GAAG,CAACd,OAAO,CAACE,EAAE,CAAC;MACtF;IACF;EACF;EAEAoB,SAASA,CAAC/C,MAAc,EAAEmB,YAAoB;IAC5C,MAAMF,YAAY,GAAGC,kBAAkB,CAAC;MAAElB,MAAM;MAAEmB;IAAY,CAAE,CAAC;IACjEhE,cAAc,CAACmB,GAAG,CAAC,IAAI,CAACO,UAAU,EAAEmB,MAAM,CAACD,OAAO,EAAEkB,YAAY,CAAC;IACjE,KAAK,MAAMG,KAAK,IAAIpB,MAAM,CAACqB,MAAM,EAAE;MACjC,IAAI,CAAC,IAAI,CAACvC,OAAO,CAACV,GAAG,CAACgD,KAAK,CAAC,EAAE;QAC5B,IAAI,CAACoB,QAAQ,CAACpB,KAAK,CAAC;MACtB;MACA,MAAME,QAAQ,GAAG,IAAI,CAACxC,OAAO,CAACT,GAAG,CAAC+C,KAAK,CAAE;MACzCjE,cAAc,CAACmB,GAAG,CAACgD,QAAQ,EAAEtB,MAAM,CAACD,OAAO,EAAEkB,YAAY,CAAC;MAC1D,MAAMa,SAAS,GAAG,IAAI,CAACA,SAAS,CAACzD,GAAG,CAAC+C,KAAK,CAAE;MAC5CjE,cAAc,CAACmB,GAAG,CAACwD,SAAS,EAAE9B,MAAM,CAACD,OAAO,EAAE,IAAIkC,GAAG,EAAE,CAAC;IAC1D;EACF;EAEAe,YAAYA,CAACjD,OAAsB;IACjC5C,cAAc,CAAC8F,MAAM,CAAC,IAAI,CAACpE,UAAU,EAAEkB,OAAO,CAAC;IAC/C,KAAK,MAAMqB,KAAK,IAAI,IAAI,CAACtC,OAAO,CAAC0C,IAAI,EAAE,EAAE;MACvC,MAAMF,QAAQ,GAAG,IAAI,CAACxC,OAAO,CAACT,GAAG,CAAC+C,KAAK,CAAE;MACzCjE,cAAc,CAAC8F,MAAM,CAAC3B,QAAQ,EAAEvB,OAAO,CAAC;MAExC,MAAM+B,SAAS,GAAG,IAAI,CAACA,SAAS,CAACzD,GAAG,CAAC+C,KAAK,CAAE;MAC5CjE,cAAc,CAAC8F,MAAM,CAACnB,SAAS,EAAE/B,OAAO,CAAC;IAC3C;EACF;EAEA,IAAImD,UAAUA,CAAA;IACZ,IAAI/F,cAAc,CAACgG,IAAI,CAAC,IAAI,CAACtE,UAAU,CAAC,KAAK,CAAC,EAAE,OAAOxB,MAAM,CAACqF,IAAI,EAAE;IACpE,IAAIU,OAAO,GAAuBC,SAAS;IAC3C,KAAK,MAAM,GAAGtB,IAAI,CAAC,IAAI,IAAI,CAAClD,UAAU,EAAE;MACtC,IAAIuE,OAAO,KAAKC,SAAS,IAAItB,IAAI,CAAC/B,MAAM,CAACoD,OAAO,GAAGA,OAAO,EAAE;QAC1DA,OAAO,GAAGrB,IAAI,CAAC/B,MAAM,CAACoD,OAAO;MAC/B;IACF;IACA,OAAO/F,MAAM,CAACiG,IAAI,CAACF,OAAQ,CAAC;EAC9B;EAEAG,qBAAqBA,CAACH,OAA8B;IAClD,OAAOA,OAAO,CAACI,IAAI,CACjBnG,MAAM,CAAC4C,GAAG,CAAEwD,GAAG,IAAK5G,GAAG,CAAC6G,KAAK,CAAC,IAAI,CAACC,cAAc,EAAGP,OAAO,IAAKA,OAAO,KAAKK,GAAG,CAAC,CAAC,EACjFpG,MAAM,CAACuG,SAAS,CAACC,oBAAU,CAAC,CAC7B;EACH;EAEA,IAAIC,UAAUA,CAAA;IAIZ,MAAMhC,SAAS,GAAG,IAAId,GAAG,EAAkB;IAC3C,IAAI+C,UAAU,GAAG,CAAC;IAClB,KAAK,MAAM,GAAGhE,OAAO,CAAC,IAAI,IAAI,CAAC8B,WAAW,EAAE;MAC1C,IAAIxE,MAAM,CAAC2G,MAAM,CAACjE,OAAO,CAAC,EAAE;QAC1BgE,UAAU,EAAE;QACZ;MACF;MACA,MAAM/D,MAAM,GAAGD,OAAO,CAACa,KAAK,CAACqD,QAAQ,EAAE;MACvC,MAAMC,KAAK,GAAGpC,SAAS,CAACzD,GAAG,CAAC2B,MAAM,CAAC,IAAI,CAAC;MACxC8B,SAAS,CAACxD,GAAG,CAAC0B,MAAM,EAAEkE,KAAK,GAAG,CAAC,CAAC;IAClC;IAEA,OAAO;MAAEpC,SAAS;MAAEiC;IAAU,CAAE;EAClC;EAEAI,eAAeA,CAAC/C,KAAa;IAC3B,MAAMrC,MAAM,GAAG5B,cAAc,CAACyC,KAAK,EAA8B;IACjE,MAAMkC,SAAS,GAAG,IAAI,CAACA,SAAS,CAACzD,GAAG,CAAC+C,KAAK,CAAC;IAC3C,IAAI,CAACU,SAAS,IAAI3E,cAAc,CAACiH,OAAO,CAACtC,SAAS,CAAC,EAAE,OAAO/C,MAAM;IAElE,KAAK,MAAM,CAACgB,OAAO,EAAEsE,QAAQ,CAAC,IAAIvC,SAAS,EAAE;MAC3C3E,cAAc,CAACmB,GAAG,CAACS,MAAM,EAAEgB,OAAO,EAAE,IAAIkC,GAAG,CAACoC,QAAQ,CAAC,CAAC;IACxD;IAEA,OAAOtF,MAAM;EACf;EAEAuF,sBAAsBA,CAAClD,KAAa;IAClC,MAAMmD,WAAW,GAAGpH,cAAc,CAACgG,IAAI,CAAC,IAAI,CAACrE,OAAO,CAACT,GAAG,CAAC+C,KAAK,CAAC,IAAIjE,cAAc,CAACyC,KAAK,EAAE,CAAC;IAC1F,MAAM4E,UAAU,GAAG,IAAI,CAACzF,MAAM,CAACV,GAAG,CAAC+C,KAAK,CAAC,IAAI,IAAIJ,GAAG,EAAE;IACtD,OAAOuD,WAAW,GAAG,CAAC,GAAGC,UAAU,CAACrB,IAAI,GAAGoB,WAAW,GAAG,CAAC;EAC5D;EAEA,IAAIE,mBAAmBA,CAAA;IACrB,MAAMV,UAAU,GAAmB,EAAE;IACrC,KAAK,MAAM,CAACtC,OAAO,EAAE1B,OAAO,CAAC,IAAI,IAAI,CAAC8B,WAAW,EAAE;MACjD,IAAIxE,MAAM,CAAC2G,MAAM,CAACjE,OAAO,CAAC,EAAE;QAC1BgE,UAAU,CAAC5D,IAAI,CAACsB,OAAO,CAAC;MAC1B;IACF;IACA,OAAOsC,UAAU;EACnB;EAEAW,gBAAgBA,CAACtD,KAAa;IAC5B,MAAMuD,QAAQ,GAAkB,EAAE;IAClC,MAAM9C,WAAW,GAAG,IAAI,CAAC9C,MAAM,CAACV,GAAG,CAAC+C,KAAK,CAAE;IAC3C,KAAK,MAAM,CAACV,KAAK,EAAEX,OAAO,CAAC,IAAI8B,WAAW,EAAE;MAC1C,IAAIxE,MAAM,CAAC2G,MAAM,CAACjE,OAAO,CAAC,EAAE;QAC1B4E,QAAQ,CAACxE,IAAI,CAACO,KAAK,CAAC;MACtB;IACF;IACA,OAAOiE,QAAQ;EACjB;EAEA,IAAYhB,cAAcA,CAAA;IACxB,MAAMA,cAAc,GAAkB,EAAE;IACxC,KAAK,MAAM,GAAG5B,IAAI,CAAC,IAAI,IAAI,CAAClD,UAAU,EAAE;MACtC8E,cAAc,CAACxD,IAAI,CAAC4B,IAAI,CAAC/B,MAAM,CAACoD,OAAO,CAAC;IAC1C;IACA,OAAOO,cAAc;EACvB;;AAQF;AAAAiB,OAAA,CAAAhG,KAAA,GAAAA,KAAA;AACO,MAAMsC,kBAAkB,GAAIlB,MAA0B,IAAyBA,MAAM;AAE5F;AAAA4E,OAAA,CAAA1D,kBAAA,GAAAA,kBAAA;AACM,SAAU2D,0BAA0BA,CAACC,KAAY,EAAE1D,KAAa;EAKpE,MAAM+C,eAAe,GAAGW,KAAK,CAACX,eAAe,CAAC/C,KAAK,CAAC;EACpD,MAAM8B,UAAU,GAAG4B,KAAK,CAAC5B,UAAU;EACnC,MAAM6B,iBAAiB,GAAGD,KAAK,CAACJ,gBAAgB,CAACtD,KAAK,CAAC;EAEvD,IAAI0D,KAAK,CAACvB,qBAAqB,CAACL,UAAU,CAAC,EAAE;IAC3C,MAAMoB,sBAAsB,GAAGQ,KAAK,CAACR,sBAAsB,CAAClD,KAAK,CAAC;IAClEjE,cAAc,CAAC2C,OAAO,CAACqE,eAAe,EAAGpF,MAAM,IAAI;MACjD,MAAMiG,WAAW,GAAGC,IAAI,CAACxB,GAAG,CAAC,CAAC,EAAE1E,MAAM,CAACoE,IAAI,GAAGmB,sBAAsB,CAAC;MACrE,MAAMY,IAAI,GAAGnG,MAAM,CAACoG,MAAM,EAAE;MAC5B,KAAK,IAAInH,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgH,WAAW,EAAEhH,CAAC,EAAE,EAAE;QACpC,MAAM0C,KAAK,GAAGwE,IAAI,CAACE,IAAI,EAAE;QACzB,IAAI1E,KAAK,CAAC2E,IAAI,EAAE;QAChBN,iBAAiB,CAAC5E,IAAI,CAACO,KAAK,CAACE,KAAK,CAAC;MACrC;IACF,CAAC,CAAC;EACJ;EAEA,OAAO0E,cAAc,CAACP,iBAAiB,EAAED,KAAK,EAAE1D,KAAK,EAAE+C,eAAe,EAAEjB,UAAU,CAAC;AACrF;AAEA,SAASoC,cAAcA,CACrBP,iBAAwC,EACxCD,KAAY,EACZ1D,KAAa,EACb+C,eAA0E,EAC1EoB,eAAe,GAAGT,KAAK,CAAC5B,UAAU;EAMlC,MAAMsC,kBAAkB,GAAGrI,cAAc,CAACyC,KAAK,EAA8B;EAC7E,MAAM6F,aAAa,GAAGtI,cAAc,CAACyC,KAAK,EAA8B;EACxE,MAAM8F,OAAO,GAAGtI,cAAc,CAACwC,KAAK,EAAiB;EAErD,IAAIvC,MAAM,CAAC2G,MAAM,CAACuB,eAAe,CAAC,EAAE;IAClC,OAAO,CAACC,kBAAkB,EAAEC,aAAa,EAAEC,OAAO,CAAC;EACrD;EACA,MAAMxC,UAAU,GAAGqC,eAAe,CAAC3E,KAAK;EAExC,MAAM+E,WAAW,GAAGb,KAAK,CAAChG,OAAO,CAACT,GAAG,CAAC+C,KAAK,CAAE;EAC7C,MAAMwE,WAAW,GAAGd,KAAK,CAAC/F,MAAM,CAACV,GAAG,CAAC+C,KAAK,CAAE;EAE5C,KAAK,MAAMK,OAAO,IAAIsD,iBAAiB,EAAE;IACvC;IACA,IAAIc,SAAoC;IACxC,IAAIC,eAAwC;IAE5C,KAAK,MAAM,CAAC/F,OAAO,EAAEhB,MAAM,CAAC,IAAIoF,eAAe,EAAE;MAC/C;MACA,MAAM4B,eAAe,GAAG5I,cAAc,CAACkB,GAAG,CAACsH,WAAW,EAAE5F,OAAO,CAAC;MAChE,IAAI1C,MAAM,CAAC2G,MAAM,CAAC+B,eAAe,CAAC,EAAE;MACpC,MAAMC,UAAU,GAAGD,eAAe,CAACnF,KAAK;MACxC,IAAIoF,UAAU,CAAChG,MAAM,CAACoD,OAAO,KAAKF,UAAU,EAAE;MAE9C;MACA,IAAI/F,cAAc,CAACiB,GAAG,CAACqH,aAAa,EAAE1F,OAAO,CAAC,EAAE;MAEhD,IAAI8F,SAAS,KAAKxC,SAAS,IAAItE,MAAM,CAACoE,IAAI,GAAG2C,eAAgB,CAAC3C,IAAI,EAAE;QAClE0C,SAAS,GAAG9F,OAAO;QACnB+F,eAAe,GAAG/G,MAAM;MAC1B;IACF;IACA,IAAI,CAAC8G,SAAS,IAAI,CAACC,eAAe,EAAE;IAEpC;IACA,MAAMG,SAAS,GAAG5I,MAAM,CAACiF,cAAc,CAACsD,WAAW,CAACvH,GAAG,CAACoD,OAAO,CAAC,IAAIpE,MAAM,CAACqF,IAAI,EAAE,CAAC;IAClF,IAAIuD,SAAS,IAAIA,SAAS,CAAChC,QAAQ,EAAE,KAAK4B,SAAS,CAAC5B,QAAQ,EAAE,EAAE;MAC9D;IACF;IACA,MAAMiC,SAAS,GAAGD,SAAS,IAAI5I,MAAM,CAACiF,cAAc,CAACnF,cAAc,CAACkB,GAAG,CAAC8F,eAAe,EAAE8B,SAAS,CAAC,CAAC;IAEpG;IACA;IACA,IAAIC,SAAS,IAAIJ,eAAe,CAAC3C,IAAI,GAAG,CAAC,IAAI+C,SAAS,CAAC/C,IAAI,EAAE;IAE7D;IACAhG,cAAc,CAACgJ,QAAQ,CACrBX,kBAAkB,EAClBK,SAAS,EACTxI,MAAM,CAAC+I,KAAK,CAAC;MACXC,MAAM,EAAEA,CAAA,KAAMhJ,MAAM,CAACiG,IAAI,CAAC,IAAIrB,GAAG,CAAC,CAACR,OAAO,CAAC,CAAC,CAAC;MAC7C6E,MAAM,EAAGvH,MAAM,IAAI;QACjBA,MAAM,CAACwD,GAAG,CAACd,OAAO,CAAC;QACnB,OAAOpE,MAAM,CAACiG,IAAI,CAACvE,MAAM,CAAC;MAC5B;KACD,CAAC,CACH;IACD,IAAIkH,SAAS,EAAE;MACb9I,cAAc,CAACgJ,QAAQ,CACrBV,aAAa,EACbQ,SAAS,EACT5I,MAAM,CAAC+I,KAAK,CAAC;QACXC,MAAM,EAAEA,CAAA,KAAMhJ,MAAM,CAACiG,IAAI,CAAC,IAAIrB,GAAG,CAAC,CAACR,OAAO,CAAC,CAAC,CAAC;QAC7C6E,MAAM,EAAGvH,MAAM,IAAI;UACjBA,MAAM,CAACwD,GAAG,CAACd,OAAO,CAAC;UACnB,OAAOpE,MAAM,CAACiG,IAAI,CAACvE,MAAM,CAAC;QAC5B;OACD,CAAC,CACH;IACH;IAEA;IACA+G,eAAe,CAACvD,GAAG,CAACd,OAAO,CAAC;IAC5B,IAAIyE,SAAS,EAAE;MACbA,SAAS,CAACpD,MAAM,CAACrB,OAAO,CAAC;IAC3B;IAEA;IACArE,cAAc,CAACmF,GAAG,CAACmD,OAAO,EAAEG,SAAS,CAAC;IACtC,IAAII,SAAS,EAAE7I,cAAc,CAACmF,GAAG,CAACmD,OAAO,EAAEO,SAAS,CAAC;EACvD;EAEA,OAAO,CAACT,kBAAkB,EAAEC,aAAa,EAAEC,OAAO,CAAC;AACrD;AAEA;AACO,MAAMa,YAAY,GAAGA,CAC1BC,IAAwE,EACxEC,GAAM,EACNtB,MAAmB,KACjB;EACF,MAAMuB,IAAI,GAAGvJ,cAAc,CAACkB,GAAG,CAACmI,IAAI,EAAEC,GAAG,CAAC;EAC1C,IAAIpJ,MAAM,CAACsD,MAAM,CAAC+F,IAAI,CAAC,EAAE;IACvB,KAAK,MAAM9F,KAAK,IAAIuE,MAAM,EAAE;MAC1B/H,cAAc,CAACmF,GAAG,CAACmE,IAAI,CAAC9F,KAAK,EAAEA,KAAK,CAAC;IACvC;EACF,CAAC,MAAM;IACLzD,cAAc,CAACmB,GAAG,CAACkI,IAAI,EAAEC,GAAG,EAAErJ,cAAc,CAACuJ,YAAY,CAACxB,MAAM,CAAC,CAAC;EACpE;AACF,CAAC;AAAAP,OAAA,CAAA2B,YAAA,GAAAA,YAAA","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
|
-
|
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
|
-
|
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
|
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
|
-
|
177
|
-
MutableHashMap.
|
178
|
-
|
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
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
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
|
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
@@ -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
|
-
|
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
|
-
|
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
|
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
|
-
|
189
|
-
|
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
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
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
|
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>>,
|