@effect/cluster 0.50.6 → 0.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/ClusterSchema.js +17 -2
- package/dist/cjs/ClusterSchema.js.map +1 -1
- package/dist/cjs/ClusterWorkflowEngine.js +50 -83
- package/dist/cjs/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cjs/Entity.js +1 -13
- 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 +444 -320
- 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 +375 -0
- package/dist/cjs/SqlRunnerStorage.js.map +1 -0
- package/dist/cjs/index.js +5 -15
- package/dist/cjs/internal/entityManager.js +42 -23
- 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/ClusterSchema.d.ts +9 -1
- package/dist/dts/ClusterSchema.d.ts.map +1 -1
- package/dist/dts/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/dts/Entity.d.ts +3 -14
- 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/ClusterSchema.js +17 -2
- package/dist/esm/ClusterSchema.js.map +1 -1
- package/dist/esm/ClusterWorkflowEngine.js +50 -83
- package/dist/esm/ClusterWorkflowEngine.js.map +1 -1
- package/dist/esm/Entity.js +0 -12
- 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 +447 -323
- 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 +366 -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 +41 -22
- 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/ClusterSchema.ts +17 -2
- package/src/ClusterWorkflowEngine.ts +48 -80
- package/src/Entity.ts +3 -21
- 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 +561 -417
- 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 +537 -0
- package/src/index.ts +4 -29
- package/src/internal/entityManager.ts +45 -29
- 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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ShardManager.js","names":["Rpc","RpcClient","RpcGroup","RpcServer","Arr","Clock","Config_","ConfigProvider","Context","Data","Deferred","Duration","Effect","Equal","FiberSet","identity","Iterable","Layer","Mailbox","Metric","MetricLabel","MutableHashMap","MutableHashSet","Option","PubSub","Queue","Schedule","Schema","RunnerNotRegistered","ClusterMetrics","addAllNested","decideAssignmentsForShards","State","MachineId","Runner","RunnerAddress","RunnerHealth","RpcClientProtocol","Runners","make","makeShardId","ShardId","ShardingConfig","ShardStorage","ShardManager","Tag","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","shards","Array","Rpcs","payload","runner","success","Tuple","error","stream","Number","ShardingEvent","taggedEnum","makeClientLocal","gen","clock","groups","Set","empty","machineId","of","register","_","groupsToAdd","sync","group","has","add","n","shardsPerGroup","set","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","shardManagerAddress","storage","runnersApi","runnerHealthApi","shardingConfig","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","get","filter","r","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","onExit","sleep","logDebug","changes","keys","groupAssignments","groupUnassignments","groupChanges","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":[]}
|
package/dist/esm/ShardStorage.js
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @since 1.0.0
|
|
3
|
-
*/
|
|
4
|
-
import * as Arr from "effect/Array";
|
|
5
|
-
import * as Context from "effect/Context";
|
|
6
|
-
import * as Effect from "effect/Effect";
|
|
7
|
-
import * as Layer from "effect/Layer";
|
|
8
|
-
import * as MutableHashMap from "effect/MutableHashMap";
|
|
9
|
-
import * as Option from "effect/Option";
|
|
10
|
-
import { Runner } from "./Runner.js";
|
|
11
|
-
import { RunnerAddress } from "./RunnerAddress.js";
|
|
12
|
-
import { ShardId } from "./ShardId.js";
|
|
13
|
-
/**
|
|
14
|
-
* Represents a generic interface to the persistent storage required by the
|
|
15
|
-
* cluster.
|
|
16
|
-
*
|
|
17
|
-
* @since 1.0.0
|
|
18
|
-
* @category models
|
|
19
|
-
*/
|
|
20
|
-
export class ShardStorage extends /*#__PURE__*/Context.Tag("@effect/cluster/ShardStorage")() {}
|
|
21
|
-
/**
|
|
22
|
-
* @since 1.0.0
|
|
23
|
-
* @category layers
|
|
24
|
-
*/
|
|
25
|
-
export const makeEncoded = encoded => ShardStorage.of({
|
|
26
|
-
getAssignments: Effect.map(encoded.getAssignments, assignments => {
|
|
27
|
-
const arr = Arr.empty();
|
|
28
|
-
for (const [shardId, runnerAddress] of assignments) {
|
|
29
|
-
arr.push([ShardId.fromString(shardId), runnerAddress === null ? Option.none() : Option.some(decodeRunnerAddress(runnerAddress))]);
|
|
30
|
-
}
|
|
31
|
-
return arr;
|
|
32
|
-
}),
|
|
33
|
-
saveAssignments: assignments => {
|
|
34
|
-
const arr = Arr.empty();
|
|
35
|
-
for (const [shardId, runnerAddress] of assignments) {
|
|
36
|
-
arr.push([shardId.toString(), Option.isNone(runnerAddress) ? null : encodeRunnerAddress(runnerAddress.value)]);
|
|
37
|
-
}
|
|
38
|
-
return encoded.saveAssignments(arr);
|
|
39
|
-
},
|
|
40
|
-
getRunners: Effect.gen(function* () {
|
|
41
|
-
const runners = yield* encoded.getRunners;
|
|
42
|
-
const results = [];
|
|
43
|
-
for (let i = 0; i < runners.length; i++) {
|
|
44
|
-
const [address, runner] = runners[i];
|
|
45
|
-
try {
|
|
46
|
-
results.push([decodeRunnerAddress(address), Runner.decodeSync(runner)]);
|
|
47
|
-
} catch {
|
|
48
|
-
//
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return results;
|
|
52
|
-
}),
|
|
53
|
-
saveRunners: runners => Effect.suspend(() => encoded.saveRunners(Array.from(runners, ([address, runner]) => [encodeRunnerAddress(address), Runner.encodeSync(runner)]))),
|
|
54
|
-
acquire: (address, shardIds) => {
|
|
55
|
-
const arr = Array.from(shardIds, id => id.toString());
|
|
56
|
-
return encoded.acquire(encodeRunnerAddress(address), arr).pipe(Effect.map(shards => shards.map(ShardId.fromString)));
|
|
57
|
-
},
|
|
58
|
-
refresh: (address, shardIds) => {
|
|
59
|
-
const arr = Array.from(shardIds, id => id.toString());
|
|
60
|
-
return encoded.refresh(encodeRunnerAddress(address), arr).pipe(Effect.map(shards => shards.map(ShardId.fromString)));
|
|
61
|
-
},
|
|
62
|
-
release(address, shardId) {
|
|
63
|
-
return encoded.release(encodeRunnerAddress(address), shardId.toString());
|
|
64
|
-
},
|
|
65
|
-
releaseAll(address) {
|
|
66
|
-
return encoded.releaseAll(encodeRunnerAddress(address));
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
/**
|
|
70
|
-
* @since 1.0.0
|
|
71
|
-
* @category layers
|
|
72
|
-
*/
|
|
73
|
-
export const layerNoop = /*#__PURE__*/Layer.sync(ShardStorage, () => {
|
|
74
|
-
let acquired = [];
|
|
75
|
-
return ShardStorage.of({
|
|
76
|
-
getAssignments: Effect.sync(() => []),
|
|
77
|
-
saveAssignments: () => Effect.void,
|
|
78
|
-
getRunners: Effect.sync(() => []),
|
|
79
|
-
saveRunners: () => Effect.void,
|
|
80
|
-
acquire: (_address, shards) => {
|
|
81
|
-
acquired = Array.from(shards);
|
|
82
|
-
return Effect.succeed(Array.from(shards));
|
|
83
|
-
},
|
|
84
|
-
refresh: () => Effect.sync(() => acquired),
|
|
85
|
-
release: () => Effect.void,
|
|
86
|
-
releaseAll: () => Effect.void
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
/**
|
|
90
|
-
* @since 1.0.0
|
|
91
|
-
* @category constructors
|
|
92
|
-
*/
|
|
93
|
-
export const makeMemory = /*#__PURE__*/Effect.gen(function* () {
|
|
94
|
-
const assignments = MutableHashMap.empty();
|
|
95
|
-
const runners = MutableHashMap.empty();
|
|
96
|
-
function saveAssignments(value) {
|
|
97
|
-
return Effect.sync(() => {
|
|
98
|
-
for (const [shardId, runnerAddress] of value) {
|
|
99
|
-
MutableHashMap.set(assignments, shardId, runnerAddress);
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
function saveRunners(value) {
|
|
104
|
-
return Effect.sync(() => {
|
|
105
|
-
for (const [address, runner] of value) {
|
|
106
|
-
MutableHashMap.set(runners, address, runner);
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
let acquired = [];
|
|
111
|
-
return ShardStorage.of({
|
|
112
|
-
getAssignments: Effect.sync(() => Array.from(assignments)),
|
|
113
|
-
saveAssignments,
|
|
114
|
-
getRunners: Effect.sync(() => Array.from(runners)),
|
|
115
|
-
saveRunners,
|
|
116
|
-
acquire: (_address, shardIds) => {
|
|
117
|
-
acquired = Array.from(shardIds);
|
|
118
|
-
return Effect.succeed(Array.from(shardIds));
|
|
119
|
-
},
|
|
120
|
-
refresh: () => Effect.sync(() => acquired),
|
|
121
|
-
release: () => Effect.void,
|
|
122
|
-
releaseAll: () => Effect.void
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
/**
|
|
126
|
-
* @since 1.0.0
|
|
127
|
-
* @category layers
|
|
128
|
-
*/
|
|
129
|
-
export const layerMemory = /*#__PURE__*/Layer.effect(ShardStorage, makeMemory);
|
|
130
|
-
// -------------------------------------------------------------------------------------
|
|
131
|
-
// internal
|
|
132
|
-
// -------------------------------------------------------------------------------------
|
|
133
|
-
const encodeRunnerAddress = runnerAddress => `${runnerAddress.host}:${runnerAddress.port}`;
|
|
134
|
-
const decodeRunnerAddress = runnerAddress => {
|
|
135
|
-
const [host, port] = runnerAddress.split(":");
|
|
136
|
-
return new RunnerAddress({
|
|
137
|
-
host,
|
|
138
|
-
port: Number(port)
|
|
139
|
-
});
|
|
140
|
-
};
|
|
141
|
-
//# sourceMappingURL=ShardStorage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ShardStorage.js","names":["Arr","Context","Effect","Layer","MutableHashMap","Option","Runner","RunnerAddress","ShardId","ShardStorage","Tag","makeEncoded","encoded","of","getAssignments","map","assignments","arr","empty","shardId","runnerAddress","push","fromString","none","some","decodeRunnerAddress","saveAssignments","toString","isNone","encodeRunnerAddress","value","getRunners","gen","runners","results","i","length","address","runner","decodeSync","saveRunners","suspend","Array","from","encodeSync","acquire","shardIds","id","pipe","shards","refresh","release","releaseAll","layerNoop","sync","acquired","void","_address","succeed","makeMemory","set","layerMemory","effect","host","port","split","Number"],"sources":["../../src/ShardStorage.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @since 1.0.0
|
|
3
|
-
*/
|
|
4
|
-
import { SocketServer } from "@effect/platform/SocketServer";
|
|
5
|
-
import * as RpcServer from "@effect/rpc/RpcServer";
|
|
6
|
-
import * as Effect from "effect/Effect";
|
|
7
|
-
import * as Layer from "effect/Layer";
|
|
8
|
-
import * as MessageStorage from "./MessageStorage.js";
|
|
9
|
-
import * as Runners from "./Runners.js";
|
|
10
|
-
import * as ShardManager from "./ShardManager.js";
|
|
11
|
-
const withLogAddress = layer => Layer.effectDiscard(Effect.gen(function* () {
|
|
12
|
-
const server = yield* SocketServer;
|
|
13
|
-
const address = server.address._tag === "UnixAddress" ? server.address.path : `${server.address.hostname}:${server.address.port}`;
|
|
14
|
-
yield* Effect.annotateLogs(Effect.logInfo(`Listening on: ${address}`), {
|
|
15
|
-
package: "@effect/cluster",
|
|
16
|
-
service: "ShardManager"
|
|
17
|
-
});
|
|
18
|
-
})).pipe(Layer.provideMerge(layer));
|
|
19
|
-
/**
|
|
20
|
-
* @since 1.0.0
|
|
21
|
-
* @category Layers
|
|
22
|
-
*/
|
|
23
|
-
export const layer = /*#__PURE__*/ShardManager.layerServer.pipe(withLogAddress, /*#__PURE__*/Layer.provide(/*#__PURE__*/Layer.fresh(RpcServer.layerProtocolSocketServer)), /*#__PURE__*/Layer.provideMerge(ShardManager.layer), /*#__PURE__*/Layer.provide(Runners.layerRpc), /*#__PURE__*/Layer.provide(MessageStorage.layerNoop));
|
|
24
|
-
//# sourceMappingURL=SocketShardManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SocketShardManager.js","names":["SocketServer","RpcServer","Effect","Layer","MessageStorage","Runners","ShardManager","withLogAddress","layer","effectDiscard","gen","server","address","_tag","path","hostname","port","annotateLogs","logInfo","package","service","pipe","provideMerge","layerServer","provide","fresh","layerProtocolSocketServer","layerRpc","layerNoop"],"sources":["../../src/SocketShardManager.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,SAASA,YAAY,QAAQ,+BAA+B;AAE5D,OAAO,KAAKC,SAAS,MAAM,uBAAuB;AAClD,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD,OAAO,KAAKC,OAAO,MAAM,cAAc;AAEvC,OAAO,KAAKC,YAAY,MAAM,mBAAmB;AAGjD,MAAMC,cAAc,GAAaC,KAA2B,IAC1DL,KAAK,CAACM,aAAa,CAACP,MAAM,CAACQ,GAAG,CAAC,aAAS;EACtC,MAAMC,MAAM,GAAG,OAAOX,YAAY;EAClC,MAAMY,OAAO,GAAGD,MAAM,CAACC,OAAO,CAACC,IAAI,KAAK,aAAa,GACjDF,MAAM,CAACC,OAAO,CAACE,IAAI,GACnB,GAAGH,MAAM,CAACC,OAAO,CAACG,QAAQ,IAAIJ,MAAM,CAACC,OAAO,CAACI,IAAI,EAAE;EACvD,OAAOd,MAAM,CAACe,YAAY,CAACf,MAAM,CAACgB,OAAO,CAAC,iBAAiBN,OAAO,EAAE,CAAC,EAAE;IACrEO,OAAO,EAAE,iBAAiB;IAC1BC,OAAO,EAAE;GACV,CAAC;AACJ,CAAC,CAAC,CAAC,CAACC,IAAI,CAAClB,KAAK,CAACmB,YAAY,CAACd,KAAK,CAAC,CAAC;AAErC;;;;AAIA,OAAO,MAAMA,KAAK,gBAUdF,YAAY,CAACiB,WAAW,CAACF,IAAI,CAC/Bd,cAAc,eACdJ,KAAK,CAACqB,OAAO,cAACrB,KAAK,CAACsB,KAAK,CAACxB,SAAS,CAACyB,yBAAyB,CAAC,CAAC,eAC/DvB,KAAK,CAACmB,YAAY,CAAChB,YAAY,CAACE,KAAK,CAAC,eACtCL,KAAK,CAACqB,OAAO,CAACnB,OAAO,CAACsB,QAAQ,CAAC,eAC/BxB,KAAK,CAACqB,OAAO,CAACpB,cAAc,CAACwB,SAAS,CAAC,CACxC","ignoreList":[]}
|
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @since 1.0.0
|
|
3
|
-
*/
|
|
4
|
-
import * as SqlClient from "@effect/sql/SqlClient";
|
|
5
|
-
import * as Arr from "effect/Array";
|
|
6
|
-
import * as Effect from "effect/Effect";
|
|
7
|
-
import * as Layer from "effect/Layer";
|
|
8
|
-
import { PersistenceError } from "./ClusterError.js";
|
|
9
|
-
import * as ShardStorage from "./ShardStorage.js";
|
|
10
|
-
const withTracerDisabled = /*#__PURE__*/Effect.withTracerEnabled(false);
|
|
11
|
-
/**
|
|
12
|
-
* @since 1.0.0
|
|
13
|
-
* @category Constructors
|
|
14
|
-
*/
|
|
15
|
-
export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
16
|
-
const sql = (yield* SqlClient.SqlClient).withoutTransforms();
|
|
17
|
-
const prefix = options?.prefix ?? "cluster";
|
|
18
|
-
const table = name => `${prefix}_${name}`;
|
|
19
|
-
const runnersTable = table("runners");
|
|
20
|
-
const runnersTableSql = sql(runnersTable);
|
|
21
|
-
yield* sql.onDialectOrElse({
|
|
22
|
-
mssql: () => sql`
|
|
23
|
-
IF OBJECT_ID(N'${runnersTableSql}', N'U') IS NULL
|
|
24
|
-
CREATE TABLE ${runnersTableSql} (
|
|
25
|
-
address VARCHAR(255) PRIMARY KEY,
|
|
26
|
-
runner TEXT NOT NULL
|
|
27
|
-
)
|
|
28
|
-
`,
|
|
29
|
-
mysql: () => sql`
|
|
30
|
-
CREATE TABLE IF NOT EXISTS ${runnersTableSql} (
|
|
31
|
-
address VARCHAR(255) PRIMARY KEY,
|
|
32
|
-
runner TEXT NOT NULL
|
|
33
|
-
)
|
|
34
|
-
`,
|
|
35
|
-
pg: () => sql`
|
|
36
|
-
CREATE TABLE IF NOT EXISTS ${runnersTableSql} (
|
|
37
|
-
address VARCHAR(255) PRIMARY KEY,
|
|
38
|
-
runner TEXT NOT NULL
|
|
39
|
-
)
|
|
40
|
-
`,
|
|
41
|
-
orElse: () =>
|
|
42
|
-
// sqlite
|
|
43
|
-
sql`
|
|
44
|
-
CREATE TABLE IF NOT EXISTS ${runnersTableSql} (
|
|
45
|
-
address TEXT PRIMARY KEY,
|
|
46
|
-
runner TEXT NOT NULL
|
|
47
|
-
)
|
|
48
|
-
`
|
|
49
|
-
});
|
|
50
|
-
const shardsTable = table("shards");
|
|
51
|
-
const shardsTableSql = sql(shardsTable);
|
|
52
|
-
yield* sql.onDialectOrElse({
|
|
53
|
-
mssql: () => sql`
|
|
54
|
-
IF OBJECT_ID(N'${shardsTableSql}', N'U') IS NULL
|
|
55
|
-
CREATE TABLE ${shardsTableSql} (
|
|
56
|
-
shard_id VARCHAR(50) PRIMARY KEY,
|
|
57
|
-
address VARCHAR(255)
|
|
58
|
-
)
|
|
59
|
-
`,
|
|
60
|
-
mysql: () => sql`
|
|
61
|
-
CREATE TABLE IF NOT EXISTS ${shardsTableSql} (
|
|
62
|
-
shard_id VARCHAR(50) PRIMARY KEY,
|
|
63
|
-
address VARCHAR(255)
|
|
64
|
-
)
|
|
65
|
-
`,
|
|
66
|
-
pg: () => sql`
|
|
67
|
-
CREATE TABLE IF NOT EXISTS ${shardsTableSql} (
|
|
68
|
-
shard_id VARCHAR(50) PRIMARY KEY,
|
|
69
|
-
address VARCHAR(255)
|
|
70
|
-
)
|
|
71
|
-
`,
|
|
72
|
-
orElse: () =>
|
|
73
|
-
// sqlite
|
|
74
|
-
sql`
|
|
75
|
-
CREATE TABLE IF NOT EXISTS ${shardsTableSql} (
|
|
76
|
-
shard_id TEXT PRIMARY KEY,
|
|
77
|
-
address TEXT
|
|
78
|
-
)
|
|
79
|
-
`
|
|
80
|
-
});
|
|
81
|
-
const locksTable = table("locks");
|
|
82
|
-
const locksTableSql = sql(locksTable);
|
|
83
|
-
yield* sql.onDialectOrElse({
|
|
84
|
-
mssql: () => sql`
|
|
85
|
-
IF OBJECT_ID(N'${locksTableSql}', N'U') IS NULL
|
|
86
|
-
CREATE TABLE ${locksTableSql} (
|
|
87
|
-
shard_id VARCHAR(50) PRIMARY KEY,
|
|
88
|
-
address VARCHAR(255) NOT NULL,
|
|
89
|
-
acquired_at DATETIME NOT NULL
|
|
90
|
-
)
|
|
91
|
-
`,
|
|
92
|
-
mysql: () => sql`
|
|
93
|
-
CREATE TABLE IF NOT EXISTS ${locksTableSql} (
|
|
94
|
-
shard_id VARCHAR(50) PRIMARY KEY,
|
|
95
|
-
address VARCHAR(255) NOT NULL,
|
|
96
|
-
acquired_at DATETIME NOT NULL
|
|
97
|
-
)
|
|
98
|
-
`,
|
|
99
|
-
pg: () => sql`
|
|
100
|
-
CREATE TABLE IF NOT EXISTS ${locksTableSql} (
|
|
101
|
-
shard_id VARCHAR(50) PRIMARY KEY,
|
|
102
|
-
address VARCHAR(255) NOT NULL,
|
|
103
|
-
acquired_at TIMESTAMP NOT NULL
|
|
104
|
-
)
|
|
105
|
-
`,
|
|
106
|
-
orElse: () =>
|
|
107
|
-
// sqlite
|
|
108
|
-
sql`
|
|
109
|
-
CREATE TABLE IF NOT EXISTS ${locksTableSql} (
|
|
110
|
-
shard_id TEXT PRIMARY KEY,
|
|
111
|
-
address TEXT NOT NULL,
|
|
112
|
-
acquired_at DATETIME NOT NULL
|
|
113
|
-
)
|
|
114
|
-
`
|
|
115
|
-
});
|
|
116
|
-
const sqlNowString = sql.onDialectOrElse({
|
|
117
|
-
pg: () => "NOW()",
|
|
118
|
-
mysql: () => "NOW()",
|
|
119
|
-
mssql: () => "GETDATE()",
|
|
120
|
-
orElse: () => "CURRENT_TIMESTAMP"
|
|
121
|
-
});
|
|
122
|
-
const sqlNow = sql.literal(sqlNowString);
|
|
123
|
-
const lockExpiresAt = sql.onDialectOrElse({
|
|
124
|
-
pg: () => sql`${sqlNow} - INTERVAL '5 seconds'`,
|
|
125
|
-
mysql: () => sql`DATE_SUB(${sqlNow}, INTERVAL 5 SECOND)`,
|
|
126
|
-
mssql: () => sql`DATEADD(SECOND, -5, ${sqlNow})`,
|
|
127
|
-
orElse: () => sql`datetime(${sqlNow}, '-5 seconds')`
|
|
128
|
-
});
|
|
129
|
-
const acquireLock = sql.onDialectOrElse({
|
|
130
|
-
pg: () => (address, values) => sql`
|
|
131
|
-
INSERT INTO ${locksTableSql} (shard_id, address, acquired_at) VALUES ${sql.csv(values)}
|
|
132
|
-
ON CONFLICT (shard_id) DO UPDATE
|
|
133
|
-
SET address = ${address}, acquired_at = ${sqlNow}
|
|
134
|
-
WHERE ${locksTableSql}.address = ${address}
|
|
135
|
-
OR ${locksTableSql}.acquired_at < ${lockExpiresAt}
|
|
136
|
-
`,
|
|
137
|
-
mysql: () => (_address, values) => sql`
|
|
138
|
-
INSERT INTO ${locksTableSql} (shard_id, address, acquired_at) VALUES ${sql.csv(values)}
|
|
139
|
-
ON DUPLICATE KEY UPDATE
|
|
140
|
-
address = IF(address = VALUES(address) OR acquired_at < ${lockExpiresAt}, VALUES(address), address),
|
|
141
|
-
acquired_at = IF(address = VALUES(address) OR acquired_at < ${lockExpiresAt}, VALUES(acquired_at), acquired_at)
|
|
142
|
-
`.unprepared,
|
|
143
|
-
mssql: () => (_address, values) => sql`
|
|
144
|
-
MERGE ${locksTableSql} WITH (HOLDLOCK) AS target
|
|
145
|
-
USING (SELECT * FROM (VALUES ${sql.csv(values)})) AS source (shard_id, address, acquired_at)
|
|
146
|
-
ON target.shard_id = source.shard_id
|
|
147
|
-
WHEN MATCHED AND (target.address = source.address OR DATEDIFF(SECOND, target.acquired_at, ${sqlNow}) > 5) THEN
|
|
148
|
-
UPDATE SET address = source.address, acquired_at = source.acquired_at
|
|
149
|
-
WHEN NOT MATCHED THEN
|
|
150
|
-
INSERT (shard_id, address, acquired_at)
|
|
151
|
-
VALUES (source.shard_id, source.address, source.acquired_at);
|
|
152
|
-
`,
|
|
153
|
-
orElse: () => (address, values) =>
|
|
154
|
-
// sqlite
|
|
155
|
-
sql`
|
|
156
|
-
WITH source(shard_id, address, acquired_at) AS (VALUES ${sql.csv(values)})
|
|
157
|
-
INSERT INTO ${locksTableSql} (shard_id, address, acquired_at)
|
|
158
|
-
SELECT source.shard_id, source.address, source.acquired_at
|
|
159
|
-
FROM source
|
|
160
|
-
WHERE NOT EXISTS (
|
|
161
|
-
SELECT 1 FROM ${locksTableSql}
|
|
162
|
-
WHERE shard_id = source.shard_id
|
|
163
|
-
AND address != ${address}
|
|
164
|
-
AND (strftime('%s', ${sqlNow}) - strftime('%s', acquired_at)) <= 5
|
|
165
|
-
)
|
|
166
|
-
ON CONFLICT(shard_id) DO UPDATE
|
|
167
|
-
SET address = ${address}, acquired_at = ${sqlNow}
|
|
168
|
-
`
|
|
169
|
-
});
|
|
170
|
-
const wrapString = sql.onDialectOrElse({
|
|
171
|
-
mssql: () => s => `N'${s}'`,
|
|
172
|
-
orElse: () => s => `'${s}'`
|
|
173
|
-
});
|
|
174
|
-
const wrapStringArr = arr => sql.literal(arr.map(wrapString).join(", "));
|
|
175
|
-
const refreshShards = sql.onDialectOrElse({
|
|
176
|
-
mysql: () => (address, shardIds) => {
|
|
177
|
-
const shardIdsStr = wrapStringArr(shardIds);
|
|
178
|
-
return sql`
|
|
179
|
-
UPDATE ${locksTableSql}
|
|
180
|
-
SET acquired_at = ${sqlNow}
|
|
181
|
-
WHERE address = ${address} AND shard_id IN (${shardIdsStr});
|
|
182
|
-
SELECT shard_id FROM ${locksTableSql} WHERE address = ${address} AND shard_id IN (${shardIdsStr})
|
|
183
|
-
`.unprepared.pipe(Effect.map(rows => rows[1].map(row => [row.shard_id])));
|
|
184
|
-
},
|
|
185
|
-
mssql: () => (address, shardIds) => sql`
|
|
186
|
-
UPDATE ${locksTableSql}
|
|
187
|
-
SET acquired_at = ${sqlNow}
|
|
188
|
-
OUTPUT inserted.shard_id
|
|
189
|
-
WHERE address = ${address} AND shard_id IN (${wrapStringArr(shardIds)})
|
|
190
|
-
`.values,
|
|
191
|
-
orElse: () => (address, shardIds) => sql`
|
|
192
|
-
UPDATE ${locksTableSql}
|
|
193
|
-
SET acquired_at = ${sqlNow}
|
|
194
|
-
WHERE address = ${address} AND shard_id IN (${wrapStringArr(shardIds)})
|
|
195
|
-
RETURNING shard_id
|
|
196
|
-
`.values
|
|
197
|
-
});
|
|
198
|
-
return ShardStorage.makeEncoded({
|
|
199
|
-
getAssignments: sql`SELECT shard_id, address FROM ${shardsTableSql} ORDER BY shard_id`.values.pipe(PersistenceError.refail, withTracerDisabled),
|
|
200
|
-
saveAssignments: assignments => {
|
|
201
|
-
const remove = sql`DELETE FROM ${shardsTableSql}`;
|
|
202
|
-
if (assignments.length === 0) {
|
|
203
|
-
return PersistenceError.refail(remove);
|
|
204
|
-
}
|
|
205
|
-
const values = assignments.map(([shardId, address]) => sql`(${shardId}, ${address})`);
|
|
206
|
-
return remove.pipe(Effect.andThen(sql`INSERT INTO ${shardsTableSql} (shard_id, address) VALUES ${sql.csv(values)}`.unprepared), sql.withTransaction, PersistenceError.refail, withTracerDisabled);
|
|
207
|
-
},
|
|
208
|
-
getRunners: sql`SELECT address, runner FROM ${runnersTableSql}`.values.pipe(PersistenceError.refail, Effect.map(Arr.map(([address, runner]) => [String(address), String(runner)])), withTracerDisabled),
|
|
209
|
-
saveRunners: runners => {
|
|
210
|
-
const remove = sql`DELETE FROM ${runnersTableSql}`;
|
|
211
|
-
if (runners.length === 0) {
|
|
212
|
-
return PersistenceError.refail(remove);
|
|
213
|
-
}
|
|
214
|
-
const values = runners.map(([address, runner]) => sql`(${address}, ${runner})`);
|
|
215
|
-
const insert = sql`INSERT INTO ${runnersTableSql} (address, runner) VALUES ${sql.csv(values)}`.unprepared;
|
|
216
|
-
return remove.pipe(Effect.andThen(insert), sql.withTransaction, PersistenceError.refail, withTracerDisabled);
|
|
217
|
-
},
|
|
218
|
-
acquire: Effect.fnUntraced(function* (address, shardIds) {
|
|
219
|
-
if (shardIds.length > 0) {
|
|
220
|
-
const values = shardIds.map(shardId => sql`(${shardId}, ${address}, ${sqlNow})`);
|
|
221
|
-
yield* acquireLock(address, values);
|
|
222
|
-
}
|
|
223
|
-
const currentLocks = yield* sql`
|
|
224
|
-
SELECT shard_id FROM ${sql(locksTable)}
|
|
225
|
-
WHERE address = ${address} AND acquired_at >= ${lockExpiresAt}
|
|
226
|
-
`.values;
|
|
227
|
-
return currentLocks.map(row => row[0]);
|
|
228
|
-
}, sql.withTransaction, PersistenceError.refail, withTracerDisabled),
|
|
229
|
-
refresh: (address, shardIds) => shardIds.length === 0 ? Effect.succeed([]) : refreshShards(address, shardIds).pipe(Effect.map(rows => rows.map(row => row[0])), PersistenceError.refail, withTracerDisabled),
|
|
230
|
-
release: (address, shardId) => sql`DELETE FROM ${locksTableSql} WHERE address = ${address} AND shard_id = ${shardId}`.pipe(PersistenceError.refail, withTracerDisabled),
|
|
231
|
-
releaseAll: address => sql`DELETE FROM ${locksTableSql} WHERE address = ${address}`.pipe(PersistenceError.refail, withTracerDisabled)
|
|
232
|
-
});
|
|
233
|
-
}, withTracerDisabled);
|
|
234
|
-
/**
|
|
235
|
-
* @since 1.0.0
|
|
236
|
-
* @category Layers
|
|
237
|
-
*/
|
|
238
|
-
export const layer = /*#__PURE__*/Layer.effect(ShardStorage.ShardStorage, /*#__PURE__*/make());
|
|
239
|
-
/**
|
|
240
|
-
* @since 1.0.0
|
|
241
|
-
* @category Layers
|
|
242
|
-
*/
|
|
243
|
-
export const layerWith = options => Layer.scoped(ShardStorage.ShardStorage, make(options));
|
|
244
|
-
//# sourceMappingURL=SqlShardStorage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SqlShardStorage.js","names":["SqlClient","Arr","Effect","Layer","PersistenceError","ShardStorage","withTracerDisabled","withTracerEnabled","make","fnUntraced","options","sql","withoutTransforms","prefix","table","name","runnersTable","runnersTableSql","onDialectOrElse","mssql","mysql","pg","orElse","shardsTable","shardsTableSql","locksTable","locksTableSql","sqlNowString","sqlNow","literal","lockExpiresAt","acquireLock","address","values","csv","_address","unprepared","wrapString","s","wrapStringArr","arr","map","join","refreshShards","shardIds","shardIdsStr","pipe","rows","row","shard_id","makeEncoded","getAssignments","refail","saveAssignments","assignments","remove","length","shardId","andThen","withTransaction","getRunners","runner","String","saveRunners","runners","insert","acquire","currentLocks","refresh","succeed","release","releaseAll","layer","effect","layerWith","scoped"],"sources":["../../src/SqlShardStorage.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @since 1.0.0
|
|
3
|
-
*/
|
|
4
|
-
import * as Clock from "effect/Clock";
|
|
5
|
-
import * as Duration from "effect/Duration";
|
|
6
|
-
import * as Effect from "effect/Effect";
|
|
7
|
-
import * as Layer from "effect/Layer";
|
|
8
|
-
import * as Schedule from "effect/Schedule";
|
|
9
|
-
import { ShardManagerClient } from "./ShardManager.js";
|
|
10
|
-
/**
|
|
11
|
-
* @since 1.0.0
|
|
12
|
-
* @category Constructors
|
|
13
|
-
*/
|
|
14
|
-
export const make = /*#__PURE__*/Effect.fnUntraced(function* (getRemoteTime) {
|
|
15
|
-
const clock = yield* Effect.clock;
|
|
16
|
-
let driftMillis = 0;
|
|
17
|
-
let driftNanos = BigInt(0);
|
|
18
|
-
yield* getRemoteTime.pipe(Effect.timed, Effect.map(([duration, shardManagerTime]) => {
|
|
19
|
-
const halfTrip = Duration.unsafeDivide(duration, 2);
|
|
20
|
-
shardManagerTime = shardManagerTime + Duration.toMillis(halfTrip) + 1;
|
|
21
|
-
const selfTime = clock.unsafeCurrentTimeMillis();
|
|
22
|
-
return shardManagerTime - selfTime;
|
|
23
|
-
}), Effect.replicateEffect(5), Effect.flatMap(drifts => {
|
|
24
|
-
drifts.sort();
|
|
25
|
-
const drift = (driftMillis + drifts[2]) / 2;
|
|
26
|
-
driftMillis = Math.round(drift);
|
|
27
|
-
driftNanos = BigInt(Math.round(drift * 1_000_000));
|
|
28
|
-
return Effect.logDebug("Current drift", driftMillis);
|
|
29
|
-
}), Effect.andThen(Effect.sleep(Duration.minutes(5))), Effect.forever, Effect.sandbox, Effect.retry(Schedule.spaced(Duration.minutes(1))), Effect.annotateLogs({
|
|
30
|
-
package: "@effect/cluster",
|
|
31
|
-
service: "SynchronizedClock"
|
|
32
|
-
}), Effect.forkScoped);
|
|
33
|
-
function unsafeCurrentTimeMillis() {
|
|
34
|
-
return clock.unsafeCurrentTimeMillis() + driftMillis;
|
|
35
|
-
}
|
|
36
|
-
function unsafeCurrentTimeNanos() {
|
|
37
|
-
return clock.unsafeCurrentTimeNanos() + driftNanos;
|
|
38
|
-
}
|
|
39
|
-
return Clock.Clock.of({
|
|
40
|
-
[Clock.ClockTypeId]: Clock.ClockTypeId,
|
|
41
|
-
sleep: clock.sleep,
|
|
42
|
-
unsafeCurrentTimeMillis,
|
|
43
|
-
unsafeCurrentTimeNanos,
|
|
44
|
-
currentTimeMillis: Effect.sync(unsafeCurrentTimeMillis),
|
|
45
|
-
currentTimeNanos: Effect.sync(unsafeCurrentTimeNanos)
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
/**
|
|
49
|
-
* @since 1.0.0
|
|
50
|
-
* @category Layers
|
|
51
|
-
*/
|
|
52
|
-
export const layer = /*#__PURE__*/Layer.unwrapScoped(/*#__PURE__*/Effect.gen(function* () {
|
|
53
|
-
const shardManager = yield* ShardManagerClient;
|
|
54
|
-
const clock = yield* make(shardManager.getTime);
|
|
55
|
-
return Layer.setClock(clock);
|
|
56
|
-
}));
|
|
57
|
-
//# sourceMappingURL=SynchronizedClock.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SynchronizedClock.js","names":["Clock","Duration","Effect","Layer","Schedule","ShardManagerClient","make","fnUntraced","getRemoteTime","clock","driftMillis","driftNanos","BigInt","pipe","timed","map","duration","shardManagerTime","halfTrip","unsafeDivide","toMillis","selfTime","unsafeCurrentTimeMillis","replicateEffect","flatMap","drifts","sort","drift","Math","round","logDebug","andThen","sleep","minutes","forever","sandbox","retry","spaced","annotateLogs","package","service","forkScoped","unsafeCurrentTimeNanos","of","ClockTypeId","currentTimeMillis","sync","currentTimeNanos","layer","unwrapScoped","gen","shardManager","getTime","setClock"],"sources":["../../src/SynchronizedClock.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|