@effect/cluster 0.50.6 → 0.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RunnerStorage/package.json +6 -0
- package/SqlRunnerStorage/package.json +6 -0
- package/dist/cjs/ClusterError.js +2 -24
- package/dist/cjs/ClusterError.js.map +1 -1
- package/dist/cjs/ClusterMetrics.js +13 -15
- package/dist/cjs/ClusterMetrics.js.map +1 -1
- package/dist/cjs/ClusterWorkflowEngine.js +41 -81
- package/dist/cjs/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cjs/Entity.js.map +1 -1
- package/dist/cjs/EntityAddress.js +9 -1
- package/dist/cjs/EntityAddress.js.map +1 -1
- package/dist/cjs/EntityId.js +7 -1
- package/dist/cjs/EntityId.js.map +1 -1
- package/dist/cjs/EntityProxy.js +1 -1
- package/dist/cjs/EntityProxy.js.map +1 -1
- package/dist/cjs/HttpRunner.js +69 -43
- package/dist/cjs/HttpRunner.js.map +1 -1
- package/dist/cjs/MessageStorage.js +64 -16
- package/dist/cjs/MessageStorage.js.map +1 -1
- package/dist/cjs/Runner.js +3 -3
- package/dist/cjs/Runner.js.map +1 -1
- package/dist/cjs/RunnerAddress.js +7 -0
- package/dist/cjs/RunnerAddress.js.map +1 -1
- package/dist/cjs/RunnerHealth.js +91 -32
- package/dist/cjs/RunnerHealth.js.map +1 -1
- package/dist/cjs/RunnerServer.js +38 -24
- package/dist/cjs/RunnerServer.js.map +1 -1
- package/dist/cjs/RunnerStorage.js +100 -0
- package/dist/cjs/RunnerStorage.js.map +1 -0
- package/dist/cjs/Runners.js +18 -22
- package/dist/cjs/Runners.js.map +1 -1
- package/dist/cjs/ShardId.js +17 -7
- package/dist/cjs/ShardId.js.map +1 -1
- package/dist/cjs/Sharding.js +435 -318
- package/dist/cjs/Sharding.js.map +1 -1
- package/dist/cjs/ShardingConfig.js +10 -14
- package/dist/cjs/ShardingConfig.js.map +1 -1
- package/dist/cjs/Snowflake.js +1 -1
- package/dist/cjs/SocketRunner.js +1 -1
- package/dist/cjs/SocketRunner.js.map +1 -1
- package/dist/cjs/SqlMessageStorage.js +22 -28
- package/dist/cjs/SqlMessageStorage.js.map +1 -1
- package/dist/cjs/SqlRunnerStorage.js +378 -0
- package/dist/cjs/SqlRunnerStorage.js.map +1 -0
- package/dist/cjs/index.js +5 -15
- package/dist/cjs/internal/entityManager.js +40 -9
- package/dist/cjs/internal/entityManager.js.map +1 -1
- package/dist/dts/ClusterError.d.ts +0 -22
- package/dist/dts/ClusterError.d.ts.map +1 -1
- package/dist/dts/ClusterMetrics.d.ts +4 -14
- package/dist/dts/ClusterMetrics.d.ts.map +1 -1
- package/dist/dts/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/dts/Entity.d.ts +2 -2
- package/dist/dts/Entity.d.ts.map +1 -1
- package/dist/dts/EntityAddress.d.ts +11 -0
- package/dist/dts/EntityAddress.d.ts.map +1 -1
- package/dist/dts/EntityId.d.ts +5 -0
- package/dist/dts/EntityId.d.ts.map +1 -1
- package/dist/dts/EntityProxy.d.ts +5 -6
- package/dist/dts/EntityProxy.d.ts.map +1 -1
- package/dist/dts/HttpRunner.d.ts +48 -25
- package/dist/dts/HttpRunner.d.ts.map +1 -1
- package/dist/dts/MessageStorage.d.ts +13 -5
- package/dist/dts/MessageStorage.d.ts.map +1 -1
- package/dist/dts/Runner.d.ts +4 -4
- package/dist/dts/Runner.d.ts.map +1 -1
- package/dist/dts/RunnerAddress.d.ts +5 -0
- package/dist/dts/RunnerAddress.d.ts.map +1 -1
- package/dist/dts/RunnerHealth.d.ts +24 -16
- package/dist/dts/RunnerHealth.d.ts.map +1 -1
- package/dist/dts/RunnerServer.d.ts +5 -4
- package/dist/dts/RunnerServer.d.ts.map +1 -1
- package/dist/dts/{ShardStorage.d.ts → RunnerStorage.d.ts} +41 -54
- package/dist/dts/RunnerStorage.d.ts.map +1 -0
- package/dist/dts/Runners.d.ts +15 -11
- package/dist/dts/Runners.d.ts.map +1 -1
- package/dist/dts/ShardId.d.ts +1 -1
- package/dist/dts/ShardId.d.ts.map +1 -1
- package/dist/dts/Sharding.d.ts +20 -10
- package/dist/dts/Sharding.d.ts.map +1 -1
- package/dist/dts/ShardingConfig.d.ts +40 -14
- package/dist/dts/ShardingConfig.d.ts.map +1 -1
- package/dist/dts/SocketRunner.d.ts +4 -3
- package/dist/dts/SocketRunner.d.ts.map +1 -1
- package/dist/dts/SqlMessageStorage.d.ts +2 -3
- package/dist/dts/SqlMessageStorage.d.ts.map +1 -1
- package/dist/dts/SqlRunnerStorage.d.ts +40 -0
- package/dist/dts/SqlRunnerStorage.d.ts.map +1 -0
- package/dist/dts/index.d.ts +4 -24
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/esm/ClusterError.js +0 -21
- package/dist/esm/ClusterError.js.map +1 -1
- package/dist/esm/ClusterMetrics.js +12 -14
- package/dist/esm/ClusterMetrics.js.map +1 -1
- package/dist/esm/ClusterWorkflowEngine.js +41 -81
- package/dist/esm/ClusterWorkflowEngine.js.map +1 -1
- package/dist/esm/Entity.js.map +1 -1
- package/dist/esm/EntityAddress.js +7 -0
- package/dist/esm/EntityAddress.js.map +1 -1
- package/dist/esm/EntityId.js +5 -0
- package/dist/esm/EntityId.js.map +1 -1
- package/dist/esm/EntityProxy.js +2 -2
- package/dist/esm/EntityProxy.js.map +1 -1
- package/dist/esm/HttpRunner.js +62 -39
- package/dist/esm/HttpRunner.js.map +1 -1
- package/dist/esm/MessageStorage.js +65 -17
- package/dist/esm/MessageStorage.js.map +1 -1
- package/dist/esm/Runner.js +3 -3
- package/dist/esm/Runner.js.map +1 -1
- package/dist/esm/RunnerAddress.js +7 -0
- package/dist/esm/RunnerAddress.js.map +1 -1
- package/dist/esm/RunnerHealth.js +88 -30
- package/dist/esm/RunnerHealth.js.map +1 -1
- package/dist/esm/RunnerServer.js +38 -24
- package/dist/esm/RunnerServer.js.map +1 -1
- package/dist/esm/RunnerStorage.js +90 -0
- package/dist/esm/RunnerStorage.js.map +1 -0
- package/dist/esm/Runners.js +19 -23
- package/dist/esm/Runners.js.map +1 -1
- package/dist/esm/ShardId.js +16 -6
- package/dist/esm/ShardId.js.map +1 -1
- package/dist/esm/Sharding.js +438 -321
- package/dist/esm/Sharding.js.map +1 -1
- package/dist/esm/ShardingConfig.js +10 -14
- package/dist/esm/ShardingConfig.js.map +1 -1
- package/dist/esm/Snowflake.js +1 -1
- package/dist/esm/SocketRunner.js +1 -1
- package/dist/esm/SocketRunner.js.map +1 -1
- package/dist/esm/SqlMessageStorage.js +22 -28
- package/dist/esm/SqlMessageStorage.js.map +1 -1
- package/dist/esm/SqlRunnerStorage.js +369 -0
- package/dist/esm/SqlRunnerStorage.js.map +1 -0
- package/dist/esm/index.js +4 -24
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/entityManager.js +40 -9
- package/dist/esm/internal/entityManager.js.map +1 -1
- package/package.json +20 -60
- package/src/ClusterError.ts +0 -24
- package/src/ClusterMetrics.ts +12 -16
- package/src/ClusterWorkflowEngine.ts +38 -78
- package/src/Entity.ts +2 -7
- package/src/EntityAddress.ts +10 -0
- package/src/EntityId.ts +6 -0
- package/src/EntityProxy.ts +10 -10
- package/src/HttpRunner.ts +132 -67
- package/src/MessageStorage.ts +89 -24
- package/src/Runner.ts +4 -4
- package/src/RunnerAddress.ts +8 -0
- package/src/RunnerHealth.ts +119 -56
- package/src/RunnerServer.ts +64 -47
- package/src/RunnerStorage.ts +218 -0
- package/src/Runners.ts +32 -45
- package/src/ShardId.ts +14 -3
- package/src/Sharding.ts +548 -413
- package/src/ShardingConfig.ts +39 -31
- package/src/Snowflake.ts +1 -1
- package/src/SocketRunner.ts +6 -4
- package/src/SqlMessageStorage.ts +28 -30
- package/src/SqlRunnerStorage.ts +541 -0
- package/src/index.ts +4 -29
- package/src/internal/entityManager.ts +44 -10
- package/HttpCommon/package.json +0 -6
- package/HttpShardManager/package.json +0 -6
- package/ShardManager/package.json +0 -6
- package/ShardStorage/package.json +0 -6
- package/SocketShardManager/package.json +0 -6
- package/SqlShardStorage/package.json +0 -6
- package/SynchronizedClock/package.json +0 -6
- package/dist/cjs/HttpCommon.js +0 -48
- package/dist/cjs/HttpCommon.js.map +0 -1
- package/dist/cjs/HttpShardManager.js +0 -139
- package/dist/cjs/HttpShardManager.js.map +0 -1
- package/dist/cjs/ShardManager.js +0 -549
- package/dist/cjs/ShardManager.js.map +0 -1
- package/dist/cjs/ShardStorage.js +0 -151
- package/dist/cjs/ShardStorage.js.map +0 -1
- package/dist/cjs/SocketShardManager.js +0 -32
- package/dist/cjs/SocketShardManager.js.map +0 -1
- package/dist/cjs/SqlShardStorage.js +0 -253
- package/dist/cjs/SqlShardStorage.js.map +0 -1
- package/dist/cjs/SynchronizedClock.js +0 -65
- package/dist/cjs/SynchronizedClock.js.map +0 -1
- package/dist/cjs/internal/shardManager.js +0 -353
- package/dist/cjs/internal/shardManager.js.map +0 -1
- package/dist/dts/HttpCommon.d.ts +0 -25
- package/dist/dts/HttpCommon.d.ts.map +0 -1
- package/dist/dts/HttpShardManager.d.ts +0 -119
- package/dist/dts/HttpShardManager.d.ts.map +0 -1
- package/dist/dts/ShardManager.d.ts +0 -459
- package/dist/dts/ShardManager.d.ts.map +0 -1
- package/dist/dts/ShardStorage.d.ts.map +0 -1
- package/dist/dts/SocketShardManager.d.ts +0 -17
- package/dist/dts/SocketShardManager.d.ts.map +0 -1
- package/dist/dts/SqlShardStorage.d.ts +0 -38
- package/dist/dts/SqlShardStorage.d.ts.map +0 -1
- package/dist/dts/SynchronizedClock.d.ts +0 -19
- package/dist/dts/SynchronizedClock.d.ts.map +0 -1
- package/dist/dts/internal/shardManager.d.ts +0 -2
- package/dist/dts/internal/shardManager.d.ts.map +0 -1
- package/dist/esm/HttpCommon.js +0 -38
- package/dist/esm/HttpCommon.js.map +0 -1
- package/dist/esm/HttpShardManager.js +0 -128
- package/dist/esm/HttpShardManager.js.map +0 -1
- package/dist/esm/ShardManager.js +0 -535
- package/dist/esm/ShardManager.js.map +0 -1
- package/dist/esm/ShardStorage.js +0 -141
- package/dist/esm/ShardStorage.js.map +0 -1
- package/dist/esm/SocketShardManager.js +0 -24
- package/dist/esm/SocketShardManager.js.map +0 -1
- package/dist/esm/SqlShardStorage.js +0 -244
- package/dist/esm/SqlShardStorage.js.map +0 -1
- package/dist/esm/SynchronizedClock.js +0 -57
- package/dist/esm/SynchronizedClock.js.map +0 -1
- package/dist/esm/internal/shardManager.js +0 -342
- package/dist/esm/internal/shardManager.js.map +0 -1
- package/src/HttpCommon.ts +0 -73
- package/src/HttpShardManager.ts +0 -273
- package/src/ShardManager.ts +0 -823
- package/src/ShardStorage.ts +0 -297
- package/src/SocketShardManager.ts +0 -48
- package/src/SqlShardStorage.ts +0 -329
- package/src/SynchronizedClock.ts +0 -82
- package/src/internal/shardManager.ts +0 -412
package/dist/cjs/ShardManager.js
DELETED
|
@@ -1,549 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.makeClientRpc = exports.makeClientLocal = exports.make = exports.layerServerHandlers = exports.layerServer = exports.layerConfigFromEnv = exports.layerConfig = exports.layerClientRpc = exports.layerClientLocal = exports.layer = exports.configFromEnv = exports.configConfig = exports.ShardingEventSchema = exports.ShardingEvent = exports.ShardManagerClient = exports.ShardManager = exports.Rpcs = exports.Config = void 0;
|
|
7
|
-
var Rpc = _interopRequireWildcard(require("@effect/rpc/Rpc"));
|
|
8
|
-
var RpcClient = _interopRequireWildcard(require("@effect/rpc/RpcClient"));
|
|
9
|
-
var RpcGroup = _interopRequireWildcard(require("@effect/rpc/RpcGroup"));
|
|
10
|
-
var RpcServer = _interopRequireWildcard(require("@effect/rpc/RpcServer"));
|
|
11
|
-
var Arr = _interopRequireWildcard(require("effect/Array"));
|
|
12
|
-
var Clock = _interopRequireWildcard(require("effect/Clock"));
|
|
13
|
-
var Config_ = _interopRequireWildcard(require("effect/Config"));
|
|
14
|
-
var ConfigProvider = _interopRequireWildcard(require("effect/ConfigProvider"));
|
|
15
|
-
var Context = _interopRequireWildcard(require("effect/Context"));
|
|
16
|
-
var Data = _interopRequireWildcard(require("effect/Data"));
|
|
17
|
-
var Deferred = _interopRequireWildcard(require("effect/Deferred"));
|
|
18
|
-
var Duration = _interopRequireWildcard(require("effect/Duration"));
|
|
19
|
-
var Effect = _interopRequireWildcard(require("effect/Effect"));
|
|
20
|
-
var Equal = _interopRequireWildcard(require("effect/Equal"));
|
|
21
|
-
var FiberSet = _interopRequireWildcard(require("effect/FiberSet"));
|
|
22
|
-
var _Function = require("effect/Function");
|
|
23
|
-
var Iterable = _interopRequireWildcard(require("effect/Iterable"));
|
|
24
|
-
var Layer = _interopRequireWildcard(require("effect/Layer"));
|
|
25
|
-
var Mailbox = _interopRequireWildcard(require("effect/Mailbox"));
|
|
26
|
-
var Metric = _interopRequireWildcard(require("effect/Metric"));
|
|
27
|
-
var MetricLabel = _interopRequireWildcard(require("effect/MetricLabel"));
|
|
28
|
-
var MutableHashMap = _interopRequireWildcard(require("effect/MutableHashMap"));
|
|
29
|
-
var MutableHashSet = _interopRequireWildcard(require("effect/MutableHashSet"));
|
|
30
|
-
var Option = _interopRequireWildcard(require("effect/Option"));
|
|
31
|
-
var PubSub = _interopRequireWildcard(require("effect/PubSub"));
|
|
32
|
-
var Queue = _interopRequireWildcard(require("effect/Queue"));
|
|
33
|
-
var Schedule = _interopRequireWildcard(require("effect/Schedule"));
|
|
34
|
-
var Schema = _interopRequireWildcard(require("effect/Schema"));
|
|
35
|
-
var _ClusterError = require("./ClusterError.js");
|
|
36
|
-
var ClusterMetrics = _interopRequireWildcard(require("./ClusterMetrics.js"));
|
|
37
|
-
var _shardManager = require("./internal/shardManager.js");
|
|
38
|
-
var MachineId = _interopRequireWildcard(require("./MachineId.js"));
|
|
39
|
-
var _Runner = require("./Runner.js");
|
|
40
|
-
var _RunnerAddress = require("./RunnerAddress.js");
|
|
41
|
-
var _RunnerHealth = require("./RunnerHealth.js");
|
|
42
|
-
var _Runners = require("./Runners.js");
|
|
43
|
-
var _ShardId = require("./ShardId.js");
|
|
44
|
-
var _ShardingConfig = require("./ShardingConfig.js");
|
|
45
|
-
var _ShardStorage = require("./ShardStorage.js");
|
|
46
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
47
|
-
/**
|
|
48
|
-
* @since 1.0.0
|
|
49
|
-
*/
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* @since 1.0.0
|
|
53
|
-
* @category models
|
|
54
|
-
*/
|
|
55
|
-
class ShardManager extends /*#__PURE__*/Context.Tag("@effect/cluster/ShardManager")() {}
|
|
56
|
-
/**
|
|
57
|
-
* @since 1.0.0
|
|
58
|
-
* @category Config
|
|
59
|
-
*/
|
|
60
|
-
exports.ShardManager = ShardManager;
|
|
61
|
-
class Config extends /*#__PURE__*/Context.Tag("@effect/cluster/ShardManager/Config")() {
|
|
62
|
-
/**
|
|
63
|
-
* @since 1.0.0
|
|
64
|
-
*/
|
|
65
|
-
static defaults = {
|
|
66
|
-
rebalanceDebounce: /*#__PURE__*/Duration.seconds(3),
|
|
67
|
-
rebalanceInterval: /*#__PURE__*/Duration.seconds(20),
|
|
68
|
-
rebalanceRetryInterval: /*#__PURE__*/Duration.seconds(10),
|
|
69
|
-
rebalanceRate: 2 / 100,
|
|
70
|
-
persistRetryCount: 100,
|
|
71
|
-
persistRetryInterval: /*#__PURE__*/Duration.seconds(3),
|
|
72
|
-
runnerHealthCheckInterval: /*#__PURE__*/Duration.minutes(1),
|
|
73
|
-
runnerPingTimeout: /*#__PURE__*/Duration.seconds(3)
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* @since 1.0.0
|
|
78
|
-
* @category Config
|
|
79
|
-
*/
|
|
80
|
-
exports.Config = Config;
|
|
81
|
-
const configConfig = exports.configConfig = /*#__PURE__*/Config_.all({
|
|
82
|
-
rebalanceDebounce: /*#__PURE__*/Config_.duration("rebalanceDebounce").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.rebalanceDebounce), /*#__PURE__*/Config_.withDescription("The duration to wait before rebalancing shards after a change.")),
|
|
83
|
-
rebalanceInterval: /*#__PURE__*/Config_.duration("rebalanceInterval").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.rebalanceInterval), /*#__PURE__*/Config_.withDescription("The interval on which regular rebalancing of shards will occur.")),
|
|
84
|
-
rebalanceRetryInterval: /*#__PURE__*/Config_.duration("rebalanceRetryInterval").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.rebalanceRetryInterval), /*#__PURE__*/Config_.withDescription("The interval on which rebalancing of shards which failed to be rebalanced will be retried.")),
|
|
85
|
-
rebalanceRate: /*#__PURE__*/Config_.number("rebalanceRate").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.rebalanceRate), /*#__PURE__*/Config_.withDescription("The maximum ratio of shards to rebalance at once.")),
|
|
86
|
-
persistRetryCount: /*#__PURE__*/Config_.integer("persistRetryCount").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.persistRetryCount), /*#__PURE__*/Config_.withDescription("The number of times persistence of runners will be retried if it fails.")),
|
|
87
|
-
persistRetryInterval: /*#__PURE__*/Config_.duration("persistRetryInterval").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.persistRetryInterval), /*#__PURE__*/Config_.withDescription("The interval on which persistence of runners will be retried if it fails.")),
|
|
88
|
-
runnerHealthCheckInterval: /*#__PURE__*/Config_.duration("runnerHealthCheckInterval").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.runnerHealthCheckInterval), /*#__PURE__*/Config_.withDescription("The interval on which runner health will be checked.")),
|
|
89
|
-
runnerPingTimeout: /*#__PURE__*/Config_.duration("runnerPingTimeout").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.runnerPingTimeout), /*#__PURE__*/Config_.withDescription("The length of time to wait for a runner to respond to a ping."))
|
|
90
|
-
});
|
|
91
|
-
/**
|
|
92
|
-
* @since 1.0.0
|
|
93
|
-
* @category Config
|
|
94
|
-
*/
|
|
95
|
-
const configFromEnv = exports.configFromEnv = /*#__PURE__*/configConfig.pipe(/*#__PURE__*/Effect.withConfigProvider(/*#__PURE__*/ConfigProvider.fromEnv().pipe(ConfigProvider.constantCase)));
|
|
96
|
-
/**
|
|
97
|
-
* @since 1.0.0
|
|
98
|
-
* @category Config
|
|
99
|
-
*/
|
|
100
|
-
const layerConfig = config => Layer.succeed(Config, {
|
|
101
|
-
...Config.defaults,
|
|
102
|
-
...config
|
|
103
|
-
});
|
|
104
|
-
/**
|
|
105
|
-
* @since 1.0.0
|
|
106
|
-
* @category Config
|
|
107
|
-
*/
|
|
108
|
-
exports.layerConfig = layerConfig;
|
|
109
|
-
const layerConfigFromEnv = config => Layer.effect(Config, config ? Effect.map(configFromEnv, env => ({
|
|
110
|
-
...env,
|
|
111
|
-
...config
|
|
112
|
-
})) : configFromEnv);
|
|
113
|
-
/**
|
|
114
|
-
* Represents a client which can be used to communicate with the
|
|
115
|
-
* `ShardManager`.
|
|
116
|
-
*
|
|
117
|
-
* @since 1.0.0
|
|
118
|
-
* @category Client
|
|
119
|
-
*/
|
|
120
|
-
exports.layerConfigFromEnv = layerConfigFromEnv;
|
|
121
|
-
class ShardManagerClient extends /*#__PURE__*/Context.Tag("@effect/cluster/ShardManager/ShardManagerClient")() {}
|
|
122
|
-
/**
|
|
123
|
-
* @since 1.0.0
|
|
124
|
-
* @category models
|
|
125
|
-
*/
|
|
126
|
-
exports.ShardManagerClient = ShardManagerClient;
|
|
127
|
-
const ShardingEventSchema = exports.ShardingEventSchema = /*#__PURE__*/Schema.Union(/*#__PURE__*/Schema.TaggedStruct("StreamStarted", {}), /*#__PURE__*/Schema.TaggedStruct("ShardsAssigned", {
|
|
128
|
-
address: _RunnerAddress.RunnerAddress,
|
|
129
|
-
shards: /*#__PURE__*/Schema.Array(_ShardId.ShardId)
|
|
130
|
-
}), /*#__PURE__*/Schema.TaggedStruct("ShardsUnassigned", {
|
|
131
|
-
address: _RunnerAddress.RunnerAddress,
|
|
132
|
-
shards: /*#__PURE__*/Schema.Array(_ShardId.ShardId)
|
|
133
|
-
}), /*#__PURE__*/Schema.TaggedStruct("RunnerRegistered", {
|
|
134
|
-
address: _RunnerAddress.RunnerAddress
|
|
135
|
-
}), /*#__PURE__*/Schema.TaggedStruct("RunnerUnregistered", {
|
|
136
|
-
address: _RunnerAddress.RunnerAddress
|
|
137
|
-
}));
|
|
138
|
-
/**
|
|
139
|
-
* The messaging protocol for the `ShardManager`.
|
|
140
|
-
*
|
|
141
|
-
* @since 1.0.0
|
|
142
|
-
* @category Rpcs
|
|
143
|
-
*/
|
|
144
|
-
class Rpcs extends /*#__PURE__*/RpcGroup.make(/*#__PURE__*/Rpc.make("Register", {
|
|
145
|
-
payload: {
|
|
146
|
-
runner: _Runner.Runner
|
|
147
|
-
},
|
|
148
|
-
success: MachineId.MachineId
|
|
149
|
-
}), /*#__PURE__*/Rpc.make("Unregister", {
|
|
150
|
-
payload: {
|
|
151
|
-
address: _RunnerAddress.RunnerAddress
|
|
152
|
-
}
|
|
153
|
-
}), /*#__PURE__*/Rpc.make("NotifyUnhealthyRunner", {
|
|
154
|
-
payload: {
|
|
155
|
-
address: _RunnerAddress.RunnerAddress
|
|
156
|
-
}
|
|
157
|
-
}), /*#__PURE__*/Rpc.make("GetAssignments", {
|
|
158
|
-
success: /*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Tuple(_ShardId.ShardId, /*#__PURE__*/Schema.Option(_RunnerAddress.RunnerAddress)))
|
|
159
|
-
}), /*#__PURE__*/Rpc.make("ShardingEvents", {
|
|
160
|
-
payload: {
|
|
161
|
-
address: /*#__PURE__*/Schema.Option(_RunnerAddress.RunnerAddress)
|
|
162
|
-
},
|
|
163
|
-
success: ShardingEventSchema,
|
|
164
|
-
error: _ClusterError.RunnerNotRegistered,
|
|
165
|
-
stream: true
|
|
166
|
-
}), /*#__PURE__*/Rpc.make("GetTime", {
|
|
167
|
-
success: Schema.Number
|
|
168
|
-
})) {}
|
|
169
|
-
/**
|
|
170
|
-
* @since 1.0.0
|
|
171
|
-
* @category models
|
|
172
|
-
*/
|
|
173
|
-
exports.Rpcs = Rpcs;
|
|
174
|
-
const ShardingEvent = exports.ShardingEvent = /*#__PURE__*/Data.taggedEnum();
|
|
175
|
-
/**
|
|
176
|
-
* @since 1.0.0
|
|
177
|
-
* @category Client
|
|
178
|
-
*/
|
|
179
|
-
const makeClientLocal = exports.makeClientLocal = /*#__PURE__*/Effect.gen(function* () {
|
|
180
|
-
const config = yield* _ShardingConfig.ShardingConfig;
|
|
181
|
-
const clock = yield* Effect.clock;
|
|
182
|
-
const groups = new Set();
|
|
183
|
-
const shards = MutableHashMap.empty();
|
|
184
|
-
let machineId = 0;
|
|
185
|
-
return ShardManagerClient.of({
|
|
186
|
-
register: (_, groupsToAdd) => Effect.sync(() => {
|
|
187
|
-
for (const group of groupsToAdd) {
|
|
188
|
-
if (groups.has(group)) continue;
|
|
189
|
-
groups.add(group);
|
|
190
|
-
for (let n = 1; n <= config.shardsPerGroup; n++) {
|
|
191
|
-
MutableHashMap.set(shards, (0, _ShardId.make)(group, n), config.runnerAddress);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
return MachineId.make(++machineId);
|
|
195
|
-
}),
|
|
196
|
-
unregister: () => Effect.void,
|
|
197
|
-
notifyUnhealthyRunner: () => Effect.void,
|
|
198
|
-
getAssignments: Effect.succeed(shards),
|
|
199
|
-
shardingEvents: Effect.fnUntraced(function* (_address) {
|
|
200
|
-
const mailbox = yield* Mailbox.make();
|
|
201
|
-
yield* mailbox.offer(ShardingEvent.StreamStarted());
|
|
202
|
-
return mailbox;
|
|
203
|
-
}),
|
|
204
|
-
getTime: clock.currentTimeMillis
|
|
205
|
-
});
|
|
206
|
-
});
|
|
207
|
-
/**
|
|
208
|
-
* @since 1.0.0
|
|
209
|
-
* @category Client
|
|
210
|
-
*/
|
|
211
|
-
const makeClientRpc = exports.makeClientRpc = /*#__PURE__*/Effect.gen(function* () {
|
|
212
|
-
const config = yield* _ShardingConfig.ShardingConfig;
|
|
213
|
-
const client = yield* RpcClient.make(Rpcs, {
|
|
214
|
-
spanPrefix: "ShardManagerClient",
|
|
215
|
-
disableTracing: true
|
|
216
|
-
});
|
|
217
|
-
return ShardManagerClient.of({
|
|
218
|
-
register: (address, groups) => client.Register({
|
|
219
|
-
runner: _Runner.Runner.make({
|
|
220
|
-
address,
|
|
221
|
-
version: config.serverVersion,
|
|
222
|
-
groups
|
|
223
|
-
})
|
|
224
|
-
}).pipe(Effect.orDie),
|
|
225
|
-
unregister: address => Effect.orDie(client.Unregister({
|
|
226
|
-
address
|
|
227
|
-
})),
|
|
228
|
-
notifyUnhealthyRunner: address => Effect.orDie(client.NotifyUnhealthyRunner({
|
|
229
|
-
address
|
|
230
|
-
})),
|
|
231
|
-
getAssignments: Effect.orDie(client.GetAssignments()),
|
|
232
|
-
shardingEvents: address => Mailbox.make().pipe(Effect.tap(Effect.fnUntraced(function* (mailbox) {
|
|
233
|
-
const events = yield* client.ShardingEvents({
|
|
234
|
-
address
|
|
235
|
-
}, {
|
|
236
|
-
asMailbox: true
|
|
237
|
-
});
|
|
238
|
-
const take = Effect.orDie(events.takeAll);
|
|
239
|
-
while (true) {
|
|
240
|
-
mailbox.unsafeOfferAll((yield* take)[0]);
|
|
241
|
-
}
|
|
242
|
-
}, (effect, mb) => Mailbox.into(effect, mb), Effect.forkScoped))),
|
|
243
|
-
getTime: Effect.orDie(client.GetTime())
|
|
244
|
-
});
|
|
245
|
-
});
|
|
246
|
-
/**
|
|
247
|
-
* @since 1.0.0
|
|
248
|
-
* @category Client
|
|
249
|
-
*/
|
|
250
|
-
const layerClientLocal = exports.layerClientLocal = /*#__PURE__*/Layer.effect(ShardManagerClient, makeClientLocal);
|
|
251
|
-
/**
|
|
252
|
-
* @since 1.0.0
|
|
253
|
-
* @category Client
|
|
254
|
-
*/
|
|
255
|
-
const layerClientRpc = exports.layerClientRpc = /*#__PURE__*/Layer.scoped(ShardManagerClient, makeClientRpc).pipe(/*#__PURE__*/Layer.provide(/*#__PURE__*/Layer.scoped(RpcClient.Protocol, /*#__PURE__*/Effect.gen(function* () {
|
|
256
|
-
const config = yield* _ShardingConfig.ShardingConfig;
|
|
257
|
-
const clientProtocol = yield* _Runners.RpcClientProtocol;
|
|
258
|
-
return yield* clientProtocol(config.shardManagerAddress);
|
|
259
|
-
}))));
|
|
260
|
-
/**
|
|
261
|
-
* @since 1.0.0
|
|
262
|
-
* @category Constructors
|
|
263
|
-
*/
|
|
264
|
-
const make = exports.make = /*#__PURE__*/Effect.gen(function* () {
|
|
265
|
-
const storage = yield* _ShardStorage.ShardStorage;
|
|
266
|
-
const runnersApi = yield* _Runners.Runners;
|
|
267
|
-
const runnerHealthApi = yield* _RunnerHealth.RunnerHealth;
|
|
268
|
-
const clock = yield* Effect.clock;
|
|
269
|
-
const config = yield* Config;
|
|
270
|
-
const shardingConfig = yield* _ShardingConfig.ShardingConfig;
|
|
271
|
-
const state = yield* Effect.orDie(_shardManager.State.fromStorage(shardingConfig.shardsPerGroup));
|
|
272
|
-
const scope = yield* Effect.scope;
|
|
273
|
-
const events = yield* PubSub.unbounded();
|
|
274
|
-
function updateRunnerMetrics() {
|
|
275
|
-
ClusterMetrics.runners.unsafeUpdate(MutableHashMap.size(state.allRunners), []);
|
|
276
|
-
}
|
|
277
|
-
function updateShardMetrics() {
|
|
278
|
-
const stats = state.shardStats;
|
|
279
|
-
for (const [address, shardCount] of stats.perRunner) {
|
|
280
|
-
ClusterMetrics.assignedShards.unsafeUpdate(shardCount, [MetricLabel.make("address", address)]);
|
|
281
|
-
}
|
|
282
|
-
ClusterMetrics.unassignedShards.unsafeUpdate(stats.unassigned, []);
|
|
283
|
-
}
|
|
284
|
-
updateShardMetrics();
|
|
285
|
-
function withRetry(effect) {
|
|
286
|
-
return effect.pipe(Effect.retry({
|
|
287
|
-
schedule: Schedule.spaced(config.persistRetryCount),
|
|
288
|
-
times: config.persistRetryCount
|
|
289
|
-
}), Effect.ignore);
|
|
290
|
-
}
|
|
291
|
-
const persistRunners = Effect.unsafeMakeSemaphore(1).withPermits(1)(withRetry(Effect.suspend(() => storage.saveRunners(Iterable.map(state.allRunners, ([address, runner]) => [address, runner.runner])))));
|
|
292
|
-
const persistAssignments = Effect.unsafeMakeSemaphore(1).withPermits(1)(withRetry(Effect.suspend(() => storage.saveAssignments(state.assignments))));
|
|
293
|
-
const notifyUnhealthyRunner = Effect.fnUntraced(function* (address) {
|
|
294
|
-
if (!MutableHashMap.has(state.allRunners, address)) return;
|
|
295
|
-
if (!(yield* runnerHealthApi.isAlive(address))) {
|
|
296
|
-
yield* Effect.logWarning(`Runner at address '${address.toString()}' is not alive`);
|
|
297
|
-
yield* unregister(address);
|
|
298
|
-
}
|
|
299
|
-
});
|
|
300
|
-
function updateShardsState(shards, address) {
|
|
301
|
-
return Effect.suspend(() => {
|
|
302
|
-
if (Option.isSome(address) && !MutableHashMap.has(state.allRunners, address.value)) {
|
|
303
|
-
return Effect.fail(new _ClusterError.RunnerNotRegistered({
|
|
304
|
-
address: address.value
|
|
305
|
-
}));
|
|
306
|
-
}
|
|
307
|
-
state.addAssignments(shards, address);
|
|
308
|
-
return Effect.void;
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
const getAssignments = Effect.sync(() => state.assignments);
|
|
312
|
-
let machineId = 0;
|
|
313
|
-
const register = Effect.fnUntraced(function* (runner) {
|
|
314
|
-
yield* Effect.logInfo(`Registering runner ${_Runner.Runner.pretty(runner)}`);
|
|
315
|
-
const current = MutableHashMap.get(state.allRunners, runner.address).pipe(Option.filter(r => r.runner.version === runner.version));
|
|
316
|
-
if (Option.isSome(current)) {
|
|
317
|
-
return MachineId.make(++machineId);
|
|
318
|
-
}
|
|
319
|
-
state.addRunner(runner, clock.unsafeCurrentTimeMillis());
|
|
320
|
-
updateRunnerMetrics();
|
|
321
|
-
yield* PubSub.publish(events, ShardingEvent.RunnerRegistered({
|
|
322
|
-
address: runner.address
|
|
323
|
-
}));
|
|
324
|
-
yield* Effect.forkIn(persistRunners, scope);
|
|
325
|
-
yield* Effect.forkIn(rebalance, scope);
|
|
326
|
-
return MachineId.make(++machineId);
|
|
327
|
-
});
|
|
328
|
-
const unregister = Effect.fnUntraced(function* (address) {
|
|
329
|
-
if (!MutableHashMap.has(state.allRunners, address)) return;
|
|
330
|
-
yield* Effect.logInfo("Unregistering runner at address:", address);
|
|
331
|
-
const unassignments = Arr.empty();
|
|
332
|
-
for (const [shard, runner] of state.assignments) {
|
|
333
|
-
if (Option.isSome(runner) && Equal.equals(runner.value, address)) {
|
|
334
|
-
unassignments.push(shard);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
state.addAssignments(unassignments, Option.none());
|
|
338
|
-
state.removeRunner(address);
|
|
339
|
-
updateRunnerMetrics();
|
|
340
|
-
if (unassignments.length > 0) {
|
|
341
|
-
yield* PubSub.publish(events, ShardingEvent.RunnerUnregistered({
|
|
342
|
-
address
|
|
343
|
-
}));
|
|
344
|
-
}
|
|
345
|
-
yield* Effect.forkIn(persistRunners, scope);
|
|
346
|
-
yield* Effect.forkIn(rebalance, scope);
|
|
347
|
-
});
|
|
348
|
-
let rebalancing = false;
|
|
349
|
-
let rebalanceDeferred;
|
|
350
|
-
const rebalanceFibers = yield* FiberSet.make();
|
|
351
|
-
const rebalance = Effect.withFiberRuntime(fiber => {
|
|
352
|
-
if (!rebalancing) {
|
|
353
|
-
rebalancing = true;
|
|
354
|
-
return rebalanceLoop;
|
|
355
|
-
}
|
|
356
|
-
if (!rebalanceDeferred) {
|
|
357
|
-
rebalanceDeferred = Deferred.unsafeMake(fiber.id());
|
|
358
|
-
}
|
|
359
|
-
return Deferred.await(rebalanceDeferred);
|
|
360
|
-
});
|
|
361
|
-
const rebalanceLoop = Effect.suspend(() => {
|
|
362
|
-
const deferred = rebalanceDeferred;
|
|
363
|
-
rebalanceDeferred = undefined;
|
|
364
|
-
return runRebalance.pipe(deferred ? Effect.intoDeferred(deferred) : _Function.identity, Effect.onExit(() => {
|
|
365
|
-
if (!rebalanceDeferred) {
|
|
366
|
-
rebalancing = false;
|
|
367
|
-
return Effect.void;
|
|
368
|
-
}
|
|
369
|
-
return Effect.forkIn(rebalanceLoop, scope);
|
|
370
|
-
}));
|
|
371
|
-
});
|
|
372
|
-
const runRebalance = Effect.gen(function* () {
|
|
373
|
-
yield* Effect.sleep(config.rebalanceDebounce);
|
|
374
|
-
if (state.shards.size === 0) {
|
|
375
|
-
yield* Effect.logDebug("No shards to rebalance");
|
|
376
|
-
return;
|
|
377
|
-
}
|
|
378
|
-
// Determine which shards to assign and unassign
|
|
379
|
-
const assignments = MutableHashMap.empty();
|
|
380
|
-
const unassignments = MutableHashMap.empty();
|
|
381
|
-
const changes = MutableHashSet.empty();
|
|
382
|
-
for (const group of state.shards.keys()) {
|
|
383
|
-
const [groupAssignments, groupUnassignments, groupChanges] = (0, _shardManager.decideAssignmentsForShards)(state, group);
|
|
384
|
-
for (const [address, shards] of groupAssignments) {
|
|
385
|
-
(0, _shardManager.addAllNested)(assignments, address, Array.from(shards, id => (0, _ShardId.make)(group, id)));
|
|
386
|
-
}
|
|
387
|
-
for (const [address, shards] of groupUnassignments) {
|
|
388
|
-
(0, _shardManager.addAllNested)(unassignments, address, Array.from(shards, id => (0, _ShardId.make)(group, id)));
|
|
389
|
-
}
|
|
390
|
-
for (const address of groupChanges) {
|
|
391
|
-
MutableHashSet.add(changes, address);
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
yield* Effect.logDebug(`Rebalancing shards`);
|
|
395
|
-
if (MutableHashSet.size(changes) === 0) return;
|
|
396
|
-
yield* Metric.increment(ClusterMetrics.rebalances);
|
|
397
|
-
// Ping runners first and remove unhealthy ones
|
|
398
|
-
const failedRunners = MutableHashSet.empty();
|
|
399
|
-
for (const address of changes) {
|
|
400
|
-
yield* FiberSet.run(rebalanceFibers, runnersApi.ping(address).pipe(Effect.timeout(config.runnerPingTimeout), Effect.catchAll(() => {
|
|
401
|
-
MutableHashSet.add(failedRunners, address);
|
|
402
|
-
MutableHashMap.remove(assignments, address);
|
|
403
|
-
MutableHashMap.remove(unassignments, address);
|
|
404
|
-
return Effect.void;
|
|
405
|
-
})));
|
|
406
|
-
}
|
|
407
|
-
yield* FiberSet.awaitEmpty(rebalanceFibers);
|
|
408
|
-
const failedUnassignments = new Set();
|
|
409
|
-
for (const [address, shards] of unassignments) {
|
|
410
|
-
yield* FiberSet.run(rebalanceFibers, updateShardsState(shards, Option.none()).pipe(Effect.matchEffect({
|
|
411
|
-
onFailure: () => {
|
|
412
|
-
MutableHashSet.add(failedRunners, address);
|
|
413
|
-
for (const shard of shards) {
|
|
414
|
-
failedUnassignments.add(shard);
|
|
415
|
-
}
|
|
416
|
-
// Remove failed runners from the assignments
|
|
417
|
-
MutableHashMap.remove(assignments, address);
|
|
418
|
-
return Effect.void;
|
|
419
|
-
},
|
|
420
|
-
onSuccess: () => PubSub.publish(events, ShardingEvent.ShardsUnassigned({
|
|
421
|
-
address,
|
|
422
|
-
shards: Array.from(shards)
|
|
423
|
-
}))
|
|
424
|
-
})));
|
|
425
|
-
}
|
|
426
|
-
yield* FiberSet.awaitEmpty(rebalanceFibers);
|
|
427
|
-
// Remove failed shard unassignments from the assignments
|
|
428
|
-
MutableHashMap.forEach(assignments, (shards, address) => {
|
|
429
|
-
for (const shard of failedUnassignments) {
|
|
430
|
-
MutableHashSet.remove(shards, shard);
|
|
431
|
-
}
|
|
432
|
-
if (MutableHashSet.size(shards) === 0) {
|
|
433
|
-
MutableHashMap.remove(assignments, address);
|
|
434
|
-
}
|
|
435
|
-
});
|
|
436
|
-
// Perform the assignments
|
|
437
|
-
for (const [address, shards] of assignments) {
|
|
438
|
-
yield* FiberSet.run(rebalanceFibers, updateShardsState(shards, Option.some(address)).pipe(Effect.matchEffect({
|
|
439
|
-
onFailure: () => {
|
|
440
|
-
MutableHashSet.add(failedRunners, address);
|
|
441
|
-
return Effect.void;
|
|
442
|
-
},
|
|
443
|
-
onSuccess: () => PubSub.publish(events, ShardingEvent.ShardsAssigned({
|
|
444
|
-
address,
|
|
445
|
-
shards: Array.from(shards)
|
|
446
|
-
}))
|
|
447
|
-
})));
|
|
448
|
-
}
|
|
449
|
-
yield* FiberSet.awaitEmpty(rebalanceFibers);
|
|
450
|
-
updateShardMetrics();
|
|
451
|
-
const wereFailures = MutableHashSet.size(failedRunners) > 0;
|
|
452
|
-
if (wereFailures) {
|
|
453
|
-
// Check if the failing runners are still reachable
|
|
454
|
-
yield* Effect.forEach(failedRunners, notifyUnhealthyRunner, {
|
|
455
|
-
discard: true
|
|
456
|
-
}).pipe(Effect.forkIn(scope));
|
|
457
|
-
yield* Effect.logWarning("Failed to rebalance runners: ", failedRunners);
|
|
458
|
-
}
|
|
459
|
-
if (wereFailures) {
|
|
460
|
-
// Try rebalancing again later if there were any failures
|
|
461
|
-
yield* Clock.sleep(config.rebalanceRetryInterval).pipe(Effect.zipRight(rebalance), Effect.forkIn(scope));
|
|
462
|
-
}
|
|
463
|
-
yield* persistAssignments;
|
|
464
|
-
}).pipe(Effect.withSpan("ShardManager.rebalance", {
|
|
465
|
-
captureStackTrace: false
|
|
466
|
-
}));
|
|
467
|
-
const checkRunnerHealth = Effect.suspend(() => Effect.forEach(MutableHashMap.keys(state.allRunners), notifyUnhealthyRunner, {
|
|
468
|
-
concurrency: 10,
|
|
469
|
-
discard: true
|
|
470
|
-
}));
|
|
471
|
-
yield* Effect.addFinalizer(() => persistAssignments.pipe(Effect.catchAllCause(cause => Effect.logWarning("Failed to persist assignments on shutdown", cause)), Effect.zipRight(persistRunners.pipe(Effect.catchAllCause(cause => Effect.logWarning("Failed to persist runners on shutdown", cause))))));
|
|
472
|
-
yield* Effect.forkIn(persistRunners, scope);
|
|
473
|
-
// Start a regular cluster rebalance at the configured interval
|
|
474
|
-
yield* rebalance.pipe(Effect.andThen(Effect.sleep(config.rebalanceInterval)), Effect.forever, Effect.forkIn(scope));
|
|
475
|
-
yield* checkRunnerHealth.pipe(Effect.andThen(Effect.sleep(config.runnerHealthCheckInterval)), Effect.forever, Effect.forkIn(scope));
|
|
476
|
-
yield* Effect.gen(function* () {
|
|
477
|
-
const queue = yield* PubSub.subscribe(events);
|
|
478
|
-
while (true) {
|
|
479
|
-
yield* Effect.logInfo("Shard manager event:", yield* Queue.take(queue));
|
|
480
|
-
}
|
|
481
|
-
}).pipe(Effect.forkIn(scope));
|
|
482
|
-
yield* Effect.logInfo("Shard manager initialized");
|
|
483
|
-
return ShardManager.of({
|
|
484
|
-
getAssignments,
|
|
485
|
-
shardingEvents: address => {
|
|
486
|
-
if (Option.isNone(address)) {
|
|
487
|
-
return PubSub.subscribe(events);
|
|
488
|
-
}
|
|
489
|
-
return Effect.tap(PubSub.subscribe(events), () => {
|
|
490
|
-
const isRegistered = MutableHashMap.has(state.allRunners, address.value);
|
|
491
|
-
if (isRegistered) {
|
|
492
|
-
return runnerHealthApi.onConnection(address.value);
|
|
493
|
-
}
|
|
494
|
-
return Effect.fail(new _ClusterError.RunnerNotRegistered({
|
|
495
|
-
address: address.value
|
|
496
|
-
}));
|
|
497
|
-
});
|
|
498
|
-
},
|
|
499
|
-
register,
|
|
500
|
-
unregister,
|
|
501
|
-
rebalance,
|
|
502
|
-
notifyUnhealthyRunner,
|
|
503
|
-
checkRunnerHealth
|
|
504
|
-
});
|
|
505
|
-
});
|
|
506
|
-
/**
|
|
507
|
-
* @since 1.0.0
|
|
508
|
-
* @category layer
|
|
509
|
-
*/
|
|
510
|
-
const layer = exports.layer = /*#__PURE__*/Layer.scoped(ShardManager, make);
|
|
511
|
-
/**
|
|
512
|
-
* @since 1.0.0
|
|
513
|
-
* @category Server
|
|
514
|
-
*/
|
|
515
|
-
const layerServerHandlers = exports.layerServerHandlers = /*#__PURE__*/Rpcs.toLayer(/*#__PURE__*/Effect.gen(function* () {
|
|
516
|
-
const shardManager = yield* ShardManager;
|
|
517
|
-
const clock = yield* Effect.clock;
|
|
518
|
-
return {
|
|
519
|
-
Register: ({
|
|
520
|
-
runner
|
|
521
|
-
}) => shardManager.register(runner),
|
|
522
|
-
Unregister: ({
|
|
523
|
-
address
|
|
524
|
-
}) => shardManager.unregister(address),
|
|
525
|
-
NotifyUnhealthyRunner: ({
|
|
526
|
-
address
|
|
527
|
-
}) => shardManager.notifyUnhealthyRunner(address),
|
|
528
|
-
GetAssignments: () => Effect.map(shardManager.getAssignments, assignments => Array.from(assignments)),
|
|
529
|
-
ShardingEvents: Effect.fnUntraced(function* ({
|
|
530
|
-
address
|
|
531
|
-
}) {
|
|
532
|
-
const queue = yield* shardManager.shardingEvents(address);
|
|
533
|
-
const mailbox = yield* Mailbox.make();
|
|
534
|
-
yield* mailbox.offer(ShardingEvent.StreamStarted());
|
|
535
|
-
yield* Queue.takeBetween(queue, 1, Number.MAX_SAFE_INTEGER).pipe(Effect.flatMap(events => mailbox.offerAll(events)), Effect.forever, Effect.forkScoped);
|
|
536
|
-
return mailbox;
|
|
537
|
-
}),
|
|
538
|
-
GetTime: () => clock.currentTimeMillis
|
|
539
|
-
};
|
|
540
|
-
}));
|
|
541
|
-
/**
|
|
542
|
-
* @since 1.0.0
|
|
543
|
-
* @category Server
|
|
544
|
-
*/
|
|
545
|
-
const layerServer = exports.layerServer = /*#__PURE__*/RpcServer.layer(Rpcs, {
|
|
546
|
-
spanPrefix: "ShardManager",
|
|
547
|
-
disableTracing: true
|
|
548
|
-
}).pipe(/*#__PURE__*/Layer.provide(layerServerHandlers));
|
|
549
|
-
//# sourceMappingURL=ShardManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ShardManager.js","names":["Rpc","_interopRequireWildcard","require","RpcClient","RpcGroup","RpcServer","Arr","Clock","Config_","ConfigProvider","Context","Data","Deferred","Duration","Effect","Equal","FiberSet","_Function","Iterable","Layer","Mailbox","Metric","MetricLabel","MutableHashMap","MutableHashSet","Option","PubSub","Queue","Schedule","Schema","_ClusterError","ClusterMetrics","_shardManager","MachineId","_Runner","_RunnerAddress","_RunnerHealth","_Runners","_ShardId","_ShardingConfig","_ShardStorage","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ShardManager","Tag","exports","Config","defaults","rebalanceDebounce","seconds","rebalanceInterval","rebalanceRetryInterval","rebalanceRate","persistRetryCount","persistRetryInterval","runnerHealthCheckInterval","minutes","runnerPingTimeout","configConfig","all","duration","pipe","withDefault","withDescription","number","integer","configFromEnv","withConfigProvider","fromEnv","constantCase","layerConfig","config","succeed","layerConfigFromEnv","effect","map","env","ShardManagerClient","ShardingEventSchema","Union","TaggedStruct","address","RunnerAddress","shards","Array","ShardId","Rpcs","make","payload","runner","Runner","success","Tuple","error","RunnerNotRegistered","stream","Number","ShardingEvent","taggedEnum","makeClientLocal","gen","ShardingConfig","clock","groups","Set","empty","machineId","of","register","_","groupsToAdd","sync","group","add","shardsPerGroup","makeShardId","runnerAddress","unregister","void","notifyUnhealthyRunner","getAssignments","shardingEvents","fnUntraced","_address","mailbox","offer","StreamStarted","getTime","currentTimeMillis","makeClientRpc","client","spanPrefix","disableTracing","Register","version","serverVersion","orDie","Unregister","NotifyUnhealthyRunner","GetAssignments","tap","events","ShardingEvents","asMailbox","take","takeAll","unsafeOfferAll","mb","into","forkScoped","GetTime","layerClientLocal","layerClientRpc","scoped","provide","Protocol","clientProtocol","RpcClientProtocol","shardManagerAddress","storage","ShardStorage","runnersApi","Runners","runnerHealthApi","RunnerHealth","shardingConfig","state","State","fromStorage","scope","unbounded","updateRunnerMetrics","runners","unsafeUpdate","size","allRunners","updateShardMetrics","stats","shardStats","shardCount","perRunner","assignedShards","unassignedShards","unassigned","withRetry","retry","schedule","spaced","times","ignore","persistRunners","unsafeMakeSemaphore","withPermits","suspend","saveRunners","persistAssignments","saveAssignments","assignments","isAlive","logWarning","toString","updateShardsState","isSome","value","fail","addAssignments","logInfo","pretty","current","filter","addRunner","unsafeCurrentTimeMillis","publish","RunnerRegistered","forkIn","rebalance","unassignments","shard","equals","push","none","removeRunner","length","RunnerUnregistered","rebalancing","rebalanceDeferred","rebalanceFibers","withFiberRuntime","fiber","rebalanceLoop","unsafeMake","id","await","deferred","undefined","runRebalance","intoDeferred","identity","onExit","sleep","logDebug","changes","keys","groupAssignments","groupUnassignments","groupChanges","decideAssignmentsForShards","addAllNested","from","increment","rebalances","failedRunners","run","ping","timeout","catchAll","remove","awaitEmpty","failedUnassignments","matchEffect","onFailure","onSuccess","ShardsUnassigned","forEach","some","ShardsAssigned","wereFailures","discard","zipRight","withSpan","captureStackTrace","checkRunnerHealth","concurrency","addFinalizer","catchAllCause","cause","andThen","forever","queue","subscribe","isNone","isRegistered","onConnection","layer","layerServerHandlers","toLayer","shardManager","takeBetween","MAX_SAFE_INTEGER","flatMap","offerAll","layerServer"],"sources":["../../src/ShardManager.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|