@effect/cluster 0.28.3 → 0.29.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/ClusterError/package.json +6 -0
- package/ClusterMetrics/package.json +6 -0
- package/ClusterSchema/package.json +6 -0
- package/DeliverAt/package.json +6 -0
- package/Entity/package.json +6 -0
- package/EntityAddress/package.json +6 -0
- package/EntityId/package.json +6 -0
- package/EntityType/package.json +6 -0
- package/Envelope/package.json +6 -0
- package/HttpCommon/package.json +6 -0
- package/HttpRunner/package.json +6 -0
- package/HttpShardManager/package.json +6 -0
- package/MachineId/package.json +6 -0
- package/MessageStorage/package.json +6 -0
- package/README.md +2 -2
- package/Reply/package.json +6 -0
- package/Runner/package.json +6 -0
- package/RunnerAddress/package.json +6 -0
- package/RunnerHealth/package.json +6 -0
- package/RunnerServer/package.json +6 -0
- package/Runners/package.json +6 -0
- package/ShardStorage/package.json +6 -0
- package/Singleton/package.json +6 -0
- package/SingletonAddress/package.json +6 -0
- package/Snowflake/package.json +6 -0
- package/SocketRunner/package.json +6 -0
- package/SocketShardManager/package.json +6 -0
- package/SqlMessageStorage/package.json +6 -0
- package/SqlShardStorage/package.json +6 -0
- package/SynchronizedClock/package.json +6 -0
- package/dist/cjs/ClusterError.js +180 -0
- package/dist/cjs/ClusterError.js.map +1 -0
- package/dist/cjs/ClusterMetrics.js +63 -0
- package/dist/cjs/ClusterMetrics.js.map +1 -0
- package/dist/cjs/{Pods.js → ClusterSchema.js} +10 -22
- package/dist/cjs/ClusterSchema.js.map +1 -0
- package/dist/cjs/DeliverAt.js +30 -0
- package/dist/cjs/DeliverAt.js.map +1 -0
- package/dist/cjs/Entity.js +187 -0
- package/dist/cjs/Entity.js.map +1 -0
- package/dist/cjs/EntityAddress.js +54 -0
- package/dist/cjs/EntityAddress.js.map +1 -0
- package/dist/cjs/{AtLeastOnce.js → EntityId.js} +6 -7
- package/dist/cjs/EntityId.js.map +1 -0
- package/dist/cjs/{ShardManagerClient.js → EntityType.js} +5 -16
- package/dist/cjs/EntityType.js.map +1 -0
- package/dist/cjs/Envelope.js +168 -0
- package/dist/cjs/Envelope.js.map +1 -0
- package/dist/cjs/HttpCommon.js +49 -0
- package/dist/cjs/HttpCommon.js.map +1 -0
- package/dist/cjs/HttpRunner.js +108 -0
- package/dist/cjs/HttpRunner.js.map +1 -0
- package/dist/cjs/HttpShardManager.js +140 -0
- package/dist/cjs/HttpShardManager.js.map +1 -0
- package/dist/cjs/{AtLeastOnceStorage.js → MachineId.js} +11 -9
- package/dist/cjs/MachineId.js.map +1 -0
- package/dist/cjs/Message.js +99 -18
- package/dist/cjs/Message.js.map +1 -1
- package/dist/cjs/MessageStorage.js +356 -0
- package/dist/cjs/MessageStorage.js.map +1 -0
- package/dist/cjs/Reply.js +200 -0
- package/dist/cjs/Reply.js.map +1 -0
- package/dist/cjs/Runner.js +79 -0
- package/dist/cjs/Runner.js.map +1 -0
- package/dist/cjs/RunnerAddress.js +63 -0
- package/dist/cjs/RunnerAddress.js.map +1 -0
- package/dist/cjs/RunnerHealth.js +68 -0
- package/dist/cjs/RunnerHealth.js.map +1 -0
- package/dist/cjs/RunnerServer.js +125 -0
- package/dist/cjs/RunnerServer.js.map +1 -0
- package/dist/cjs/Runners.js +344 -0
- package/dist/cjs/Runners.js.map +1 -0
- package/dist/cjs/ShardId.js +7 -46
- package/dist/cjs/ShardId.js.map +1 -1
- package/dist/cjs/ShardManager.js +493 -8
- package/dist/cjs/ShardManager.js.map +1 -1
- package/dist/cjs/ShardStorage.js +139 -0
- package/dist/cjs/ShardStorage.js.map +1 -0
- package/dist/cjs/Sharding.js +732 -88
- package/dist/cjs/Sharding.js.map +1 -1
- package/dist/cjs/ShardingConfig.js +85 -18
- package/dist/cjs/ShardingConfig.js.map +1 -1
- package/dist/cjs/ShardingRegistrationEvent.js +26 -32
- package/dist/cjs/ShardingRegistrationEvent.js.map +1 -1
- package/dist/cjs/{ManagerConfig.js → Singleton.js} +11 -20
- package/dist/cjs/Singleton.js.map +1 -0
- package/dist/cjs/SingletonAddress.js +50 -0
- package/dist/cjs/SingletonAddress.js.map +1 -0
- package/dist/cjs/Snowflake.js +133 -0
- package/dist/cjs/Snowflake.js.map +1 -0
- package/dist/cjs/SocketRunner.js +40 -0
- package/dist/cjs/SocketRunner.js.map +1 -0
- package/dist/cjs/SocketShardManager.js +33 -0
- package/dist/cjs/SocketShardManager.js.map +1 -0
- package/dist/cjs/SqlMessageStorage.js +668 -0
- package/dist/cjs/SqlMessageStorage.js.map +1 -0
- package/dist/cjs/SqlShardStorage.js +228 -0
- package/dist/cjs/SqlShardStorage.js.map +1 -0
- package/dist/cjs/SynchronizedClock.js +66 -0
- package/dist/cjs/SynchronizedClock.js.map +1 -0
- package/dist/cjs/index.js +57 -45
- package/dist/cjs/internal/entityManager.js +311 -143
- package/dist/cjs/internal/entityManager.js.map +1 -1
- package/dist/cjs/internal/entityReaper.js +47 -0
- package/dist/cjs/internal/entityReaper.js.map +1 -0
- package/dist/cjs/internal/hash.js +20 -0
- package/dist/cjs/internal/hash.js.map +1 -0
- package/dist/cjs/internal/interruptors.js +9 -0
- package/dist/cjs/internal/interruptors.js.map +1 -0
- package/dist/cjs/internal/resourceMap.js +88 -0
- package/dist/cjs/internal/resourceMap.js.map +1 -0
- package/dist/cjs/internal/resourceRef.js +92 -0
- package/dist/cjs/internal/resourceRef.js.map +1 -0
- package/dist/cjs/internal/shardManager.js +219 -235
- package/dist/cjs/internal/shardManager.js.map +1 -1
- package/dist/dts/ClusterError.d.ts +169 -0
- package/dist/dts/ClusterError.d.ts.map +1 -0
- package/dist/dts/ClusterMetrics.d.ts +50 -0
- package/dist/dts/ClusterMetrics.d.ts.map +1 -0
- package/dist/dts/ClusterSchema.d.ts +13 -0
- package/dist/dts/ClusterSchema.d.ts.map +1 -0
- package/dist/dts/DeliverAt.d.ts +27 -0
- package/dist/dts/DeliverAt.d.ts.map +1 -0
- package/dist/dts/Entity.d.ts +180 -0
- package/dist/dts/Entity.d.ts.map +1 -0
- package/dist/dts/EntityAddress.d.ts +55 -0
- package/dist/dts/EntityAddress.d.ts.map +1 -0
- package/dist/dts/EntityId.d.ts +15 -0
- package/dist/dts/EntityId.d.ts.map +1 -0
- package/dist/dts/EntityType.d.ts +15 -0
- package/dist/dts/EntityType.d.ts.map +1 -0
- package/dist/dts/Envelope.d.ts +252 -0
- package/dist/dts/Envelope.d.ts.map +1 -0
- package/dist/dts/HttpCommon.d.ts +25 -0
- package/dist/dts/HttpCommon.d.ts.map +1 -0
- package/dist/dts/HttpRunner.d.ts +76 -0
- package/dist/dts/HttpRunner.d.ts.map +1 -0
- package/dist/dts/HttpShardManager.d.ts +119 -0
- package/dist/dts/HttpShardManager.d.ts.map +1 -0
- package/dist/dts/MachineId.d.ts +20 -0
- package/dist/dts/MachineId.d.ts.map +1 -0
- package/dist/dts/Message.d.ts +91 -74
- package/dist/dts/Message.d.ts.map +1 -1
- package/dist/dts/MessageStorage.d.ts +336 -0
- package/dist/dts/MessageStorage.d.ts.map +1 -0
- package/dist/dts/Reply.d.ts +171 -0
- package/dist/dts/Reply.d.ts.map +1 -0
- package/dist/dts/Runner.d.ts +81 -0
- package/dist/dts/Runner.d.ts.map +1 -0
- package/dist/dts/RunnerAddress.d.ts +56 -0
- package/dist/dts/RunnerAddress.d.ts.map +1 -0
- package/dist/dts/RunnerHealth.d.ts +54 -0
- package/dist/dts/RunnerHealth.d.ts.map +1 -0
- package/dist/dts/RunnerServer.d.ts +44 -0
- package/dist/dts/RunnerServer.d.ts.map +1 -0
- package/dist/dts/Runners.d.ts +161 -0
- package/dist/dts/Runners.d.ts.map +1 -0
- package/dist/dts/ShardId.d.ts +5 -55
- package/dist/dts/ShardId.d.ts.map +1 -1
- package/dist/dts/ShardManager.d.ts +435 -23
- package/dist/dts/ShardManager.d.ts.map +1 -1
- package/dist/dts/ShardStorage.d.ts +200 -0
- package/dist/dts/ShardStorage.d.ts.map +1 -0
- package/dist/dts/Sharding.d.ts +109 -131
- package/dist/dts/Sharding.d.ts.map +1 -1
- package/dist/dts/ShardingConfig.d.ts +147 -44
- package/dist/dts/ShardingConfig.d.ts.map +1 -1
- package/dist/dts/ShardingRegistrationEvent.d.ts +38 -23
- package/dist/dts/ShardingRegistrationEvent.d.ts.map +1 -1
- package/dist/dts/Singleton.d.ts +13 -0
- package/dist/dts/Singleton.d.ts.map +1 -0
- package/dist/dts/SingletonAddress.d.ts +49 -0
- package/dist/dts/SingletonAddress.d.ts.map +1 -0
- package/dist/dts/Snowflake.d.ts +121 -0
- package/dist/dts/Snowflake.d.ts.map +1 -0
- package/dist/dts/SocketRunner.d.ts +22 -0
- package/dist/dts/SocketRunner.d.ts.map +1 -0
- package/dist/dts/SocketShardManager.d.ts +17 -0
- package/dist/dts/SocketShardManager.d.ts.map +1 -0
- package/dist/dts/SqlMessageStorage.d.ts +43 -0
- package/dist/dts/SqlMessageStorage.d.ts.map +1 -0
- package/dist/dts/SqlShardStorage.d.ts +38 -0
- package/dist/dts/SqlShardStorage.d.ts.map +1 -0
- package/dist/dts/SynchronizedClock.d.ts +19 -0
- package/dist/dts/SynchronizedClock.d.ts.map +1 -0
- package/dist/dts/index.d.ts +48 -24
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/entityReaper.d.ts +2 -0
- package/dist/dts/internal/entityReaper.d.ts.map +1 -0
- package/dist/dts/internal/hash.d.ts +2 -0
- package/dist/dts/internal/hash.d.ts.map +1 -0
- package/dist/dts/internal/interruptors.d.ts +2 -0
- package/dist/dts/internal/interruptors.d.ts.map +1 -0
- package/dist/dts/internal/resourceMap.d.ts +22 -0
- package/dist/dts/internal/resourceMap.d.ts.map +1 -0
- package/dist/dts/internal/resourceRef.d.ts +25 -0
- package/dist/dts/internal/resourceRef.d.ts.map +1 -0
- package/dist/dts/internal/shardManager.d.ts +1 -11
- package/dist/dts/internal/shardManager.d.ts.map +1 -1
- package/dist/esm/ClusterError.js +164 -0
- package/dist/esm/ClusterError.js.map +1 -0
- package/dist/esm/ClusterMetrics.js +54 -0
- package/dist/esm/ClusterMetrics.js.map +1 -0
- package/dist/esm/ClusterSchema.js +13 -0
- package/dist/esm/ClusterSchema.js.map +1 -0
- package/dist/esm/DeliverAt.js +22 -0
- package/dist/esm/DeliverAt.js.map +1 -0
- package/dist/esm/Entity.js +173 -0
- package/dist/esm/Entity.js.map +1 -0
- package/dist/esm/EntityAddress.js +44 -0
- package/dist/esm/EntityAddress.js.map +1 -0
- package/dist/esm/EntityId.js +10 -0
- package/dist/esm/EntityId.js.map +1 -0
- package/dist/esm/EntityType.js +10 -0
- package/dist/esm/EntityType.js.map +1 -0
- package/dist/esm/Envelope.js +154 -0
- package/dist/esm/Envelope.js.map +1 -0
- package/dist/esm/HttpCommon.js +38 -0
- package/dist/esm/HttpCommon.js.map +1 -0
- package/dist/esm/HttpRunner.js +98 -0
- package/dist/esm/HttpRunner.js.map +1 -0
- package/dist/esm/HttpShardManager.js +128 -0
- package/dist/esm/HttpShardManager.js.map +1 -0
- package/dist/esm/MachineId.js +17 -0
- package/dist/esm/MachineId.js.map +1 -0
- package/dist/esm/Message.js +88 -17
- package/dist/esm/Message.js.map +1 -1
- package/dist/esm/MessageStorage.js +345 -0
- package/dist/esm/MessageStorage.js.map +1 -0
- package/dist/esm/Reply.js +184 -0
- package/dist/esm/Reply.js.map +1 -0
- package/dist/esm/Runner.js +68 -0
- package/dist/esm/Runner.js.map +1 -0
- package/dist/esm/RunnerAddress.js +52 -0
- package/dist/esm/RunnerAddress.js.map +1 -0
- package/dist/esm/RunnerHealth.js +58 -0
- package/dist/esm/RunnerHealth.js.map +1 -0
- package/dist/esm/RunnerServer.js +116 -0
- package/dist/esm/RunnerServer.js.map +1 -0
- package/dist/esm/Runners.js +332 -0
- package/dist/esm/Runners.js.map +1 -0
- package/dist/esm/ShardId.js +5 -42
- package/dist/esm/ShardId.js.map +1 -1
- package/dist/esm/ShardManager.js +486 -7
- package/dist/esm/ShardManager.js.map +1 -1
- package/dist/esm/ShardStorage.js +129 -0
- package/dist/esm/ShardStorage.js.map +1 -0
- package/dist/esm/Sharding.js +730 -87
- package/dist/esm/Sharding.js.map +1 -1
- package/dist/esm/ShardingConfig.js +80 -17
- package/dist/esm/ShardingConfig.js.map +1 -1
- package/dist/esm/ShardingRegistrationEvent.js +19 -29
- package/dist/esm/ShardingRegistrationEvent.js.map +1 -1
- package/dist/esm/Singleton.js +15 -0
- package/dist/esm/Singleton.js.map +1 -0
- package/dist/esm/SingletonAddress.js +40 -0
- package/dist/esm/SingletonAddress.js.map +1 -0
- package/dist/esm/Snowflake.js +117 -0
- package/dist/esm/Snowflake.js.map +1 -0
- package/dist/esm/SocketRunner.js +31 -0
- package/dist/esm/SocketRunner.js.map +1 -0
- package/dist/esm/SocketShardManager.js +24 -0
- package/dist/esm/SocketShardManager.js.map +1 -0
- package/dist/esm/SqlMessageStorage.js +658 -0
- package/dist/esm/SqlMessageStorage.js.map +1 -0
- package/dist/esm/SqlShardStorage.js +218 -0
- package/dist/esm/SqlShardStorage.js.map +1 -0
- package/dist/esm/SynchronizedClock.js +57 -0
- package/dist/esm/SynchronizedClock.js.map +1 -0
- package/dist/esm/index.js +48 -24
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/entityManager.js +311 -142
- package/dist/esm/internal/entityManager.js.map +1 -1
- package/dist/esm/internal/entityReaper.js +38 -0
- package/dist/esm/internal/entityReaper.js.map +1 -0
- package/dist/esm/internal/hash.js +12 -0
- package/dist/esm/internal/hash.js.map +1 -0
- package/dist/esm/internal/interruptors.js +3 -0
- package/dist/esm/internal/interruptors.js.map +1 -0
- package/dist/esm/internal/resourceMap.js +79 -0
- package/dist/esm/internal/resourceMap.js.map +1 -0
- package/dist/esm/internal/resourceRef.js +83 -0
- package/dist/esm/internal/resourceRef.js.map +1 -0
- package/dist/esm/internal/shardManager.js +217 -233
- package/dist/esm/internal/shardManager.js.map +1 -1
- package/package.json +212 -154
- package/src/ClusterError.ts +193 -0
- package/src/ClusterMetrics.ts +62 -0
- package/src/ClusterSchema.ts +13 -0
- package/src/DeliverAt.ts +36 -0
- package/src/Entity.ts +438 -0
- package/src/EntityAddress.ts +55 -0
- package/src/EntityId.ts +16 -0
- package/src/EntityType.ts +16 -0
- package/src/Envelope.ts +352 -0
- package/src/HttpCommon.ts +73 -0
- package/src/HttpRunner.ts +196 -0
- package/src/HttpShardManager.ts +273 -0
- package/src/MachineId.ts +27 -0
- package/src/Message.ts +143 -92
- package/src/MessageStorage.ts +697 -0
- package/src/Reply.ts +295 -0
- package/src/Runner.ts +84 -0
- package/src/RunnerAddress.ts +61 -0
- package/src/RunnerHealth.ts +87 -0
- package/src/RunnerServer.ts +156 -0
- package/src/Runners.ts +533 -0
- package/src/ShardId.ts +10 -62
- package/src/ShardManager.ts +780 -29
- package/src/ShardStorage.ts +289 -0
- package/src/Sharding.ts +1060 -183
- package/src/ShardingConfig.ts +186 -45
- package/src/ShardingRegistrationEvent.ts +38 -39
- package/src/Singleton.ts +20 -0
- package/src/SingletonAddress.ts +47 -0
- package/src/Snowflake.ts +194 -0
- package/src/SocketRunner.ts +59 -0
- package/src/SocketShardManager.ts +48 -0
- package/src/SqlMessageStorage.ts +833 -0
- package/src/SqlShardStorage.ts +292 -0
- package/src/SynchronizedClock.ts +82 -0
- package/src/index.ts +54 -24
- package/src/internal/entityManager.ts +464 -361
- package/src/internal/entityReaper.ts +53 -0
- package/src/internal/hash.ts +11 -0
- package/src/internal/interruptors.ts +4 -0
- package/src/internal/resourceMap.ts +89 -0
- package/src/internal/resourceRef.ts +88 -0
- package/src/internal/shardManager.ts +273 -546
- package/AtLeastOnce/package.json +0 -6
- package/AtLeastOnceStorage/package.json +0 -6
- package/Broadcaster/package.json +0 -6
- package/ManagerConfig/package.json +0 -6
- package/MessageState/package.json +0 -6
- package/Messenger/package.json +0 -6
- package/Pod/package.json +0 -6
- package/PodAddress/package.json +0 -6
- package/Pods/package.json +0 -6
- package/PodsHealth/package.json +0 -6
- package/PoisonPill/package.json +0 -6
- package/RecipientAddress/package.json +0 -6
- package/RecipientBehaviour/package.json +0 -6
- package/RecipientBehaviourContext/package.json +0 -6
- package/RecipientType/package.json +0 -6
- package/Serialization/package.json +0 -6
- package/SerializedEnvelope/package.json +0 -6
- package/SerializedMessage/package.json +0 -6
- package/ShardManagerClient/package.json +0 -6
- package/ShardingEvent/package.json +0 -6
- package/ShardingException/package.json +0 -6
- package/Storage/package.json +0 -6
- package/dist/cjs/AtLeastOnce.js.map +0 -1
- package/dist/cjs/AtLeastOnceStorage.js.map +0 -1
- package/dist/cjs/Broadcaster.js +0 -6
- package/dist/cjs/Broadcaster.js.map +0 -1
- package/dist/cjs/ManagerConfig.js.map +0 -1
- package/dist/cjs/MessageState.js +0 -55
- package/dist/cjs/MessageState.js.map +0 -1
- package/dist/cjs/Messenger.js +0 -6
- package/dist/cjs/Messenger.js.map +0 -1
- package/dist/cjs/Pod.js +0 -78
- package/dist/cjs/Pod.js.map +0 -1
- package/dist/cjs/PodAddress.js +0 -77
- package/dist/cjs/PodAddress.js.map +0 -1
- package/dist/cjs/Pods.js.map +0 -1
- package/dist/cjs/PodsHealth.js +0 -41
- package/dist/cjs/PodsHealth.js.map +0 -1
- package/dist/cjs/PoisonPill.js +0 -78
- package/dist/cjs/PoisonPill.js.map +0 -1
- package/dist/cjs/RecipientAddress.js +0 -79
- package/dist/cjs/RecipientAddress.js.map +0 -1
- package/dist/cjs/RecipientBehaviour.js +0 -38
- package/dist/cjs/RecipientBehaviour.js.map +0 -1
- package/dist/cjs/RecipientBehaviourContext.js +0 -64
- package/dist/cjs/RecipientBehaviourContext.js.map +0 -1
- package/dist/cjs/RecipientType.js +0 -123
- package/dist/cjs/RecipientType.js.map +0 -1
- package/dist/cjs/Serialization.js +0 -32
- package/dist/cjs/Serialization.js.map +0 -1
- package/dist/cjs/SerializedEnvelope.js +0 -87
- package/dist/cjs/SerializedEnvelope.js.map +0 -1
- package/dist/cjs/SerializedMessage.js +0 -64
- package/dist/cjs/SerializedMessage.js.map +0 -1
- package/dist/cjs/ShardManagerClient.js.map +0 -1
- package/dist/cjs/ShardingEvent.js +0 -72
- package/dist/cjs/ShardingEvent.js.map +0 -1
- package/dist/cjs/ShardingException.js +0 -107
- package/dist/cjs/ShardingException.js.map +0 -1
- package/dist/cjs/Storage.js +0 -40
- package/dist/cjs/Storage.js.map +0 -1
- package/dist/cjs/internal/atLeastOnce.js +0 -35
- package/dist/cjs/internal/atLeastOnce.js.map +0 -1
- package/dist/cjs/internal/atLeastOnceStorage.js +0 -163
- package/dist/cjs/internal/atLeastOnceStorage.js.map +0 -1
- package/dist/cjs/internal/entityState.js +0 -47
- package/dist/cjs/internal/entityState.js.map +0 -1
- package/dist/cjs/internal/managerConfig.js +0 -46
- package/dist/cjs/internal/managerConfig.js.map +0 -1
- package/dist/cjs/internal/message.js +0 -48
- package/dist/cjs/internal/message.js.map +0 -1
- package/dist/cjs/internal/messageState.js +0 -79
- package/dist/cjs/internal/messageState.js.map +0 -1
- package/dist/cjs/internal/podWithMetadata.js +0 -54
- package/dist/cjs/internal/podWithMetadata.js.map +0 -1
- package/dist/cjs/internal/pods.js +0 -35
- package/dist/cjs/internal/pods.js.map +0 -1
- package/dist/cjs/internal/podsHealth.js +0 -40
- package/dist/cjs/internal/podsHealth.js.map +0 -1
- package/dist/cjs/internal/recipientBehaviour.js +0 -52
- package/dist/cjs/internal/recipientBehaviour.js.map +0 -1
- package/dist/cjs/internal/recipientBehaviourContext.js +0 -36
- package/dist/cjs/internal/recipientBehaviourContext.js.map +0 -1
- package/dist/cjs/internal/serialization.js +0 -48
- package/dist/cjs/internal/serialization.js.map +0 -1
- package/dist/cjs/internal/shardManagerClient.js +0 -48
- package/dist/cjs/internal/shardManagerClient.js.map +0 -1
- package/dist/cjs/internal/shardManagerState.js +0 -44
- package/dist/cjs/internal/shardManagerState.js.map +0 -1
- package/dist/cjs/internal/sharding.js +0 -306
- package/dist/cjs/internal/sharding.js.map +0 -1
- package/dist/cjs/internal/shardingConfig.js +0 -56
- package/dist/cjs/internal/shardingConfig.js.map +0 -1
- package/dist/cjs/internal/storage.js +0 -52
- package/dist/cjs/internal/storage.js.map +0 -1
- package/dist/cjs/internal/utils.js +0 -69
- package/dist/cjs/internal/utils.js.map +0 -1
- package/dist/dts/AtLeastOnce.d.ts +0 -20
- package/dist/dts/AtLeastOnce.d.ts.map +0 -1
- package/dist/dts/AtLeastOnceStorage.d.ts +0 -75
- package/dist/dts/AtLeastOnceStorage.d.ts.map +0 -1
- package/dist/dts/Broadcaster.d.ts +0 -32
- package/dist/dts/Broadcaster.d.ts.map +0 -1
- package/dist/dts/ManagerConfig.d.ts +0 -61
- package/dist/dts/ManagerConfig.d.ts.map +0 -1
- package/dist/dts/MessageState.d.ts +0 -107
- package/dist/dts/MessageState.d.ts.map +0 -1
- package/dist/dts/Messenger.d.ts +0 -32
- package/dist/dts/Messenger.d.ts.map +0 -1
- package/dist/dts/Pod.d.ts +0 -81
- package/dist/dts/Pod.d.ts.map +0 -1
- package/dist/dts/PodAddress.d.ts +0 -80
- package/dist/dts/PodAddress.d.ts.map +0 -1
- package/dist/dts/Pods.d.ts +0 -78
- package/dist/dts/Pods.d.ts.map +0 -1
- package/dist/dts/PodsHealth.d.ts +0 -66
- package/dist/dts/PodsHealth.d.ts.map +0 -1
- package/dist/dts/PoisonPill.d.ts +0 -78
- package/dist/dts/PoisonPill.d.ts.map +0 -1
- package/dist/dts/RecipientAddress.d.ts +0 -57
- package/dist/dts/RecipientAddress.d.ts.map +0 -1
- package/dist/dts/RecipientBehaviour.d.ts +0 -72
- package/dist/dts/RecipientBehaviour.d.ts.map +0 -1
- package/dist/dts/RecipientBehaviourContext.d.ts +0 -83
- package/dist/dts/RecipientBehaviourContext.d.ts.map +0 -1
- package/dist/dts/RecipientType.d.ts +0 -93
- package/dist/dts/RecipientType.d.ts.map +0 -1
- package/dist/dts/Serialization.d.ts +0 -58
- package/dist/dts/Serialization.d.ts.map +0 -1
- package/dist/dts/SerializedEnvelope.d.ts +0 -86
- package/dist/dts/SerializedEnvelope.d.ts.map +0 -1
- package/dist/dts/SerializedMessage.d.ts +0 -66
- package/dist/dts/SerializedMessage.d.ts.map +0 -1
- package/dist/dts/ShardManagerClient.d.ts +0 -50
- package/dist/dts/ShardManagerClient.d.ts.map +0 -1
- package/dist/dts/ShardingEvent.d.ts +0 -90
- package/dist/dts/ShardingEvent.d.ts.map +0 -1
- package/dist/dts/ShardingException.d.ts +0 -125
- package/dist/dts/ShardingException.d.ts.map +0 -1
- package/dist/dts/Storage.d.ts +0 -78
- package/dist/dts/Storage.d.ts.map +0 -1
- package/dist/dts/internal/atLeastOnce.d.ts +0 -2
- package/dist/dts/internal/atLeastOnce.d.ts.map +0 -1
- package/dist/dts/internal/atLeastOnceStorage.d.ts +0 -2
- package/dist/dts/internal/atLeastOnceStorage.d.ts.map +0 -1
- package/dist/dts/internal/entityState.d.ts +0 -21
- package/dist/dts/internal/entityState.d.ts.map +0 -1
- package/dist/dts/internal/managerConfig.d.ts +0 -2
- package/dist/dts/internal/managerConfig.d.ts.map +0 -1
- package/dist/dts/internal/message.d.ts +0 -9
- package/dist/dts/internal/message.d.ts.map +0 -1
- package/dist/dts/internal/messageState.d.ts +0 -2
- package/dist/dts/internal/messageState.d.ts.map +0 -1
- package/dist/dts/internal/podWithMetadata.d.ts +0 -2
- package/dist/dts/internal/podWithMetadata.d.ts.map +0 -1
- package/dist/dts/internal/pods.d.ts +0 -2
- package/dist/dts/internal/pods.d.ts.map +0 -1
- package/dist/dts/internal/podsHealth.d.ts +0 -2
- package/dist/dts/internal/podsHealth.d.ts.map +0 -1
- package/dist/dts/internal/recipientBehaviour.d.ts +0 -2
- package/dist/dts/internal/recipientBehaviour.d.ts.map +0 -1
- package/dist/dts/internal/recipientBehaviourContext.d.ts +0 -2
- package/dist/dts/internal/recipientBehaviourContext.d.ts.map +0 -1
- package/dist/dts/internal/serialization.d.ts +0 -2
- package/dist/dts/internal/serialization.d.ts.map +0 -1
- package/dist/dts/internal/shardManagerClient.d.ts +0 -2
- package/dist/dts/internal/shardManagerClient.d.ts.map +0 -1
- package/dist/dts/internal/shardManagerState.d.ts +0 -26
- package/dist/dts/internal/shardManagerState.d.ts.map +0 -1
- package/dist/dts/internal/sharding.d.ts +0 -2
- package/dist/dts/internal/sharding.d.ts.map +0 -1
- package/dist/dts/internal/shardingConfig.d.ts +0 -2
- package/dist/dts/internal/shardingConfig.d.ts.map +0 -1
- package/dist/dts/internal/storage.d.ts +0 -2
- package/dist/dts/internal/storage.d.ts.map +0 -1
- package/dist/dts/internal/utils.d.ts +0 -2
- package/dist/dts/internal/utils.d.ts.map +0 -1
- package/dist/esm/AtLeastOnce.js +0 -12
- package/dist/esm/AtLeastOnce.js.map +0 -1
- package/dist/esm/AtLeastOnceStorage.js +0 -17
- package/dist/esm/AtLeastOnceStorage.js.map +0 -1
- package/dist/esm/Broadcaster.js +0 -2
- package/dist/esm/Broadcaster.js.map +0 -1
- package/dist/esm/ManagerConfig.js +0 -26
- package/dist/esm/ManagerConfig.js.map +0 -1
- package/dist/esm/MessageState.js +0 -47
- package/dist/esm/MessageState.js.map +0 -1
- package/dist/esm/Messenger.js +0 -2
- package/dist/esm/Messenger.js.map +0 -1
- package/dist/esm/Pod.js +0 -65
- package/dist/esm/Pod.js.map +0 -1
- package/dist/esm/PodAddress.js +0 -64
- package/dist/esm/PodAddress.js.map +0 -1
- package/dist/esm/Pods.js +0 -27
- package/dist/esm/Pods.js.map +0 -1
- package/dist/esm/PodsHealth.js +0 -33
- package/dist/esm/PodsHealth.js.map +0 -1
- package/dist/esm/PoisonPill.js +0 -65
- package/dist/esm/PoisonPill.js.map +0 -1
- package/dist/esm/RecipientAddress.js +0 -67
- package/dist/esm/RecipientAddress.js.map +0 -1
- package/dist/esm/RecipientBehaviour.js +0 -30
- package/dist/esm/RecipientBehaviour.js.map +0 -1
- package/dist/esm/RecipientBehaviourContext.js +0 -56
- package/dist/esm/RecipientBehaviourContext.js.map +0 -1
- package/dist/esm/RecipientType.js +0 -108
- package/dist/esm/RecipientType.js.map +0 -1
- package/dist/esm/Serialization.js +0 -24
- package/dist/esm/Serialization.js.map +0 -1
- package/dist/esm/SerializedEnvelope.js +0 -74
- package/dist/esm/SerializedEnvelope.js.map +0 -1
- package/dist/esm/SerializedMessage.js +0 -51
- package/dist/esm/SerializedMessage.js.map +0 -1
- package/dist/esm/ShardManagerClient.js +0 -22
- package/dist/esm/ShardManagerClient.js.map +0 -1
- package/dist/esm/ShardingEvent.js +0 -62
- package/dist/esm/ShardingEvent.js.map +0 -1
- package/dist/esm/ShardingException.js +0 -91
- package/dist/esm/ShardingException.js.map +0 -1
- package/dist/esm/Storage.js +0 -32
- package/dist/esm/Storage.js.map +0 -1
- package/dist/esm/internal/atLeastOnce.js +0 -26
- package/dist/esm/internal/atLeastOnce.js.map +0 -1
- package/dist/esm/internal/atLeastOnceStorage.js +0 -154
- package/dist/esm/internal/atLeastOnceStorage.js.map +0 -1
- package/dist/esm/internal/entityState.js +0 -35
- package/dist/esm/internal/entityState.js.map +0 -1
- package/dist/esm/internal/managerConfig.js +0 -38
- package/dist/esm/internal/managerConfig.js.map +0 -1
- package/dist/esm/internal/message.js +0 -35
- package/dist/esm/internal/message.js.map +0 -1
- package/dist/esm/internal/messageState.js +0 -66
- package/dist/esm/internal/messageState.js.map +0 -1
- package/dist/esm/internal/podWithMetadata.js +0 -41
- package/dist/esm/internal/podWithMetadata.js.map +0 -1
- package/dist/esm/internal/pods.js +0 -25
- package/dist/esm/internal/pods.js.map +0 -1
- package/dist/esm/internal/podsHealth.js +0 -30
- package/dist/esm/internal/podsHealth.js.map +0 -1
- package/dist/esm/internal/recipientBehaviour.js +0 -42
- package/dist/esm/internal/recipientBehaviour.js.map +0 -1
- package/dist/esm/internal/recipientBehaviourContext.js +0 -26
- package/dist/esm/internal/recipientBehaviourContext.js.map +0 -1
- package/dist/esm/internal/serialization.js +0 -38
- package/dist/esm/internal/serialization.js.map +0 -1
- package/dist/esm/internal/shardManagerClient.js +0 -38
- package/dist/esm/internal/shardManagerClient.js.map +0 -1
- package/dist/esm/internal/shardManagerState.js +0 -36
- package/dist/esm/internal/shardManagerState.js.map +0 -1
- package/dist/esm/internal/sharding.js +0 -288
- package/dist/esm/internal/sharding.js.map +0 -1
- package/dist/esm/internal/shardingConfig.js +0 -47
- package/dist/esm/internal/shardingConfig.js.map +0 -1
- package/dist/esm/internal/storage.js +0 -42
- package/dist/esm/internal/storage.js.map +0 -1
- package/dist/esm/internal/utils.js +0 -56
- package/dist/esm/internal/utils.js.map +0 -1
- package/src/AtLeastOnce.ts +0 -28
- package/src/AtLeastOnceStorage.ts +0 -96
- package/src/Broadcaster.ts +0 -48
- package/src/ManagerConfig.ts +0 -67
- package/src/MessageState.ts +0 -126
- package/src/Messenger.ts +0 -40
- package/src/Pod.ts +0 -95
- package/src/PodAddress.ts +0 -94
- package/src/Pods.ts +0 -100
- package/src/PodsHealth.ts +0 -74
- package/src/PoisonPill.ts +0 -105
- package/src/RecipientAddress.ts +0 -72
- package/src/RecipientBehaviour.ts +0 -108
- package/src/RecipientBehaviourContext.ts +0 -101
- package/src/RecipientType.ts +0 -134
- package/src/Serialization.ts +0 -72
- package/src/SerializedEnvelope.ts +0 -108
- package/src/SerializedMessage.ts +0 -82
- package/src/ShardManagerClient.ts +0 -57
- package/src/ShardingEvent.ts +0 -121
- package/src/ShardingException.ts +0 -151
- package/src/Storage.ts +0 -92
- package/src/internal/atLeastOnce.ts +0 -59
- package/src/internal/atLeastOnceStorage.ts +0 -218
- package/src/internal/entityState.ts +0 -64
- package/src/internal/managerConfig.ts +0 -84
- package/src/internal/message.ts +0 -63
- package/src/internal/messageState.ts +0 -98
- package/src/internal/podWithMetadata.ts +0 -72
- package/src/internal/pods.ts +0 -29
- package/src/internal/podsHealth.ts +0 -39
- package/src/internal/recipientBehaviour.ts +0 -133
- package/src/internal/recipientBehaviourContext.ts +0 -70
- package/src/internal/serialization.ts +0 -63
- package/src/internal/shardManagerClient.ts +0 -49
- package/src/internal/shardManagerState.ts +0 -80
- package/src/internal/sharding.ts +0 -789
- package/src/internal/shardingConfig.ts +0 -97
- package/src/internal/storage.ts +0 -60
- package/src/internal/utils.ts +0 -54
package/dist/esm/ShardManager.js
CHANGED
@@ -1,17 +1,496 @@
|
|
1
|
-
import * as internal from "./internal/shardManager.js";
|
2
1
|
/**
|
3
2
|
* @since 1.0.0
|
4
|
-
* @category symbols
|
5
3
|
*/
|
6
|
-
|
4
|
+
import * as Rpc from "@effect/rpc/Rpc";
|
5
|
+
import * as RpcClient from "@effect/rpc/RpcClient";
|
6
|
+
import * as RpcGroup from "@effect/rpc/RpcGroup";
|
7
|
+
import * as RpcServer from "@effect/rpc/RpcServer";
|
8
|
+
import * as Arr from "effect/Array";
|
9
|
+
import * as Clock from "effect/Clock";
|
10
|
+
import * as Config_ from "effect/Config";
|
11
|
+
import * as ConfigProvider from "effect/ConfigProvider";
|
12
|
+
import * as Context from "effect/Context";
|
13
|
+
import * as Data from "effect/Data";
|
14
|
+
import * as Deferred from "effect/Deferred";
|
15
|
+
import * as Duration from "effect/Duration";
|
16
|
+
import * as Effect from "effect/Effect";
|
17
|
+
import * as Equal from "effect/Equal";
|
18
|
+
import * as FiberSet from "effect/FiberSet";
|
19
|
+
import { identity } from "effect/Function";
|
20
|
+
import * as Iterable from "effect/Iterable";
|
21
|
+
import * as Layer from "effect/Layer";
|
22
|
+
import * as Mailbox from "effect/Mailbox";
|
23
|
+
import * as Metric from "effect/Metric";
|
24
|
+
import * as MutableHashMap from "effect/MutableHashMap";
|
25
|
+
import * as MutableHashSet from "effect/MutableHashSet";
|
26
|
+
import * as Option from "effect/Option";
|
27
|
+
import * as PubSub from "effect/PubSub";
|
28
|
+
import * as Queue from "effect/Queue";
|
29
|
+
import * as Schedule from "effect/Schedule";
|
30
|
+
import * as Schema from "effect/Schema";
|
31
|
+
import { RunnerNotRegistered } from "./ClusterError.js";
|
32
|
+
import * as ClusterMetrics from "./ClusterMetrics.js";
|
33
|
+
import { decideAssignmentsForUnassignedShards, decideAssignmentsForUnbalancedShards, RunnerWithMetadata, State } from "./internal/shardManager.js";
|
34
|
+
import * as MachineId from "./MachineId.js";
|
35
|
+
import { Runner } from "./Runner.js";
|
36
|
+
import { RunnerAddress } from "./RunnerAddress.js";
|
37
|
+
import { RunnerHealth } from "./RunnerHealth.js";
|
38
|
+
import { RpcClientProtocol, Runners } from "./Runners.js";
|
39
|
+
import { ShardId } from "./ShardId.js";
|
40
|
+
import { ShardingConfig } from "./ShardingConfig.js";
|
41
|
+
import { ShardStorage } from "./ShardStorage.js";
|
7
42
|
/**
|
8
43
|
* @since 1.0.0
|
9
|
-
* @category
|
44
|
+
* @category models
|
10
45
|
*/
|
11
|
-
export
|
46
|
+
export class ShardManager extends /*#__PURE__*/Context.Tag("@effect/cluster/ShardManager")() {}
|
12
47
|
/**
|
13
48
|
* @since 1.0.0
|
14
|
-
* @category
|
49
|
+
* @category Config
|
15
50
|
*/
|
16
|
-
export
|
51
|
+
export class Config extends /*#__PURE__*/Context.Tag("@effect/cluster/ShardManager/Config")() {
|
52
|
+
/**
|
53
|
+
* @since 1.0.0
|
54
|
+
*/
|
55
|
+
static defaults = {
|
56
|
+
rebalanceDebounce: /*#__PURE__*/Duration.millis(500),
|
57
|
+
rebalanceInterval: /*#__PURE__*/Duration.seconds(20),
|
58
|
+
rebalanceRetryInterval: /*#__PURE__*/Duration.seconds(10),
|
59
|
+
rebalanceRate: 2 / 100,
|
60
|
+
persistRetryCount: 100,
|
61
|
+
persistRetryInterval: /*#__PURE__*/Duration.seconds(3),
|
62
|
+
runnerHealthCheckInterval: /*#__PURE__*/Duration.minutes(1),
|
63
|
+
runnerPingTimeout: /*#__PURE__*/Duration.seconds(3)
|
64
|
+
};
|
65
|
+
}
|
66
|
+
/**
|
67
|
+
* @since 1.0.0
|
68
|
+
* @category Config
|
69
|
+
*/
|
70
|
+
export const configConfig = /*#__PURE__*/Config_.all({
|
71
|
+
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.")),
|
72
|
+
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.")),
|
73
|
+
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.")),
|
74
|
+
rebalanceRate: /*#__PURE__*/Config_.number("rebalanceRate").pipe( /*#__PURE__*/Config_.withDefault(Config.defaults.rebalanceRate), /*#__PURE__*/Config_.withDescription("The maximum ratio of shards to rebalance at once.")),
|
75
|
+
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.")),
|
76
|
+
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.")),
|
77
|
+
runnerHealthCheckInterval: /*#__PURE__*/Config_.duration("runnerHealthCheckInterval").pipe( /*#__PURE__*/Config_.withDefault(Config.defaults.runnerHealthCheckInterval), /*#__PURE__*/Config_.withDescription("The interval on which runner health will be checked.")),
|
78
|
+
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."))
|
79
|
+
});
|
80
|
+
/**
|
81
|
+
* @since 1.0.0
|
82
|
+
* @category Config
|
83
|
+
*/
|
84
|
+
export const configFromEnv = /*#__PURE__*/configConfig.pipe( /*#__PURE__*/Effect.withConfigProvider( /*#__PURE__*/ConfigProvider.fromEnv().pipe(ConfigProvider.constantCase)));
|
85
|
+
/**
|
86
|
+
* @since 1.0.0
|
87
|
+
* @category Config
|
88
|
+
*/
|
89
|
+
export const layerConfig = config => Layer.succeed(Config, {
|
90
|
+
...Config.defaults,
|
91
|
+
...config
|
92
|
+
});
|
93
|
+
/**
|
94
|
+
* @since 1.0.0
|
95
|
+
* @category Config
|
96
|
+
*/
|
97
|
+
export const layerConfigFromEnv = /*#__PURE__*/Layer.effect(Config, configFromEnv);
|
98
|
+
/**
|
99
|
+
* Represents a client which can be used to communicate with the
|
100
|
+
* `ShardManager`.
|
101
|
+
*
|
102
|
+
* @since 1.0.0
|
103
|
+
* @category Client
|
104
|
+
*/
|
105
|
+
export class ShardManagerClient extends /*#__PURE__*/Context.Tag("@effect/cluster/ShardManager/ShardManagerClient")() {}
|
106
|
+
/**
|
107
|
+
* @since 1.0.0
|
108
|
+
* @category models
|
109
|
+
*/
|
110
|
+
export const ShardingEventSchema = /*#__PURE__*/Schema.Union( /*#__PURE__*/Schema.TaggedStruct("StreamStarted", {}), /*#__PURE__*/Schema.TaggedStruct("ShardsAssigned", {
|
111
|
+
address: RunnerAddress,
|
112
|
+
shards: /*#__PURE__*/Schema.Array(ShardId)
|
113
|
+
}), /*#__PURE__*/Schema.TaggedStruct("ShardsUnassigned", {
|
114
|
+
address: RunnerAddress,
|
115
|
+
shards: /*#__PURE__*/Schema.Array(ShardId)
|
116
|
+
}), /*#__PURE__*/Schema.TaggedStruct("RunnerRegistered", {
|
117
|
+
address: RunnerAddress
|
118
|
+
}), /*#__PURE__*/Schema.TaggedStruct("RunnerUnregistered", {
|
119
|
+
address: RunnerAddress
|
120
|
+
}));
|
121
|
+
/**
|
122
|
+
* The messaging protocol for the `ShardManager`.
|
123
|
+
*
|
124
|
+
* @since 1.0.0
|
125
|
+
* @category Rpcs
|
126
|
+
*/
|
127
|
+
export class Rpcs extends /*#__PURE__*/RpcGroup.make( /*#__PURE__*/Rpc.make("Register", {
|
128
|
+
payload: {
|
129
|
+
runner: Runner
|
130
|
+
},
|
131
|
+
success: MachineId.MachineId
|
132
|
+
}), /*#__PURE__*/Rpc.make("Unregister", {
|
133
|
+
payload: {
|
134
|
+
address: RunnerAddress
|
135
|
+
}
|
136
|
+
}), /*#__PURE__*/Rpc.make("NotifyUnhealthyRunner", {
|
137
|
+
payload: {
|
138
|
+
address: RunnerAddress
|
139
|
+
}
|
140
|
+
}), /*#__PURE__*/Rpc.make("GetAssignments", {
|
141
|
+
success: /*#__PURE__*/Schema.ReadonlyMap({
|
142
|
+
key: ShardId,
|
143
|
+
value: /*#__PURE__*/Schema.Option(RunnerAddress)
|
144
|
+
})
|
145
|
+
}), /*#__PURE__*/Rpc.make("ShardingEvents", {
|
146
|
+
success: ShardingEventSchema,
|
147
|
+
stream: true
|
148
|
+
}), /*#__PURE__*/Rpc.make("GetTime", {
|
149
|
+
success: Schema.Number
|
150
|
+
})) {}
|
151
|
+
/**
|
152
|
+
* @since 1.0.0
|
153
|
+
* @category models
|
154
|
+
*/
|
155
|
+
export const ShardingEvent = /*#__PURE__*/Data.taggedEnum();
|
156
|
+
/**
|
157
|
+
* @since 1.0.0
|
158
|
+
* @category Client
|
159
|
+
*/
|
160
|
+
export const makeClientLocal = /*#__PURE__*/Effect.gen(function* () {
|
161
|
+
const runnerAddress = yield* ShardingConfig;
|
162
|
+
const clock = yield* Effect.clock;
|
163
|
+
const shards = new Map();
|
164
|
+
for (let n = 1; n <= runnerAddress.numberOfShards; n++) {
|
165
|
+
shards.set(ShardId.make(n), runnerAddress.runnerAddress);
|
166
|
+
}
|
167
|
+
let machineId = 0;
|
168
|
+
return ShardManagerClient.of({
|
169
|
+
register: () => Effect.sync(() => MachineId.make(++machineId)),
|
170
|
+
unregister: () => Effect.void,
|
171
|
+
notifyUnhealthyRunner: () => Effect.void,
|
172
|
+
getAssignments: Effect.succeed(shards),
|
173
|
+
shardingEvents: Effect.gen(function* () {
|
174
|
+
const mailbox = yield* Mailbox.make();
|
175
|
+
yield* mailbox.offer(ShardingEvent.StreamStarted());
|
176
|
+
return mailbox;
|
177
|
+
}),
|
178
|
+
getTime: clock.currentTimeMillis
|
179
|
+
});
|
180
|
+
});
|
181
|
+
/**
|
182
|
+
* @since 1.0.0
|
183
|
+
* @category Client
|
184
|
+
*/
|
185
|
+
export const makeClientRpc = /*#__PURE__*/Effect.gen(function* () {
|
186
|
+
const config = yield* ShardingConfig;
|
187
|
+
const client = yield* RpcClient.make(Rpcs, {
|
188
|
+
spanPrefix: "ShardManagerClient",
|
189
|
+
disableTracing: true
|
190
|
+
});
|
191
|
+
return ShardManagerClient.of({
|
192
|
+
register: address => client.Register({
|
193
|
+
runner: Runner.make({
|
194
|
+
address,
|
195
|
+
version: config.serverVersion
|
196
|
+
})
|
197
|
+
}),
|
198
|
+
unregister: address => client.Unregister({
|
199
|
+
address
|
200
|
+
}),
|
201
|
+
notifyUnhealthyRunner: address => client.NotifyUnhealthyRunner({
|
202
|
+
address
|
203
|
+
}),
|
204
|
+
getAssignments: client.GetAssignments(),
|
205
|
+
shardingEvents: client.ShardingEvents({}, {
|
206
|
+
asMailbox: true
|
207
|
+
}),
|
208
|
+
getTime: client.GetTime()
|
209
|
+
});
|
210
|
+
});
|
211
|
+
/**
|
212
|
+
* @since 1.0.0
|
213
|
+
* @category Client
|
214
|
+
*/
|
215
|
+
export const layerClientLocal = /*#__PURE__*/Layer.effect(ShardManagerClient, makeClientLocal);
|
216
|
+
/**
|
217
|
+
* @since 1.0.0
|
218
|
+
* @category Client
|
219
|
+
*/
|
220
|
+
export const layerClientRpc = /*#__PURE__*/Layer.scoped(ShardManagerClient, makeClientRpc).pipe( /*#__PURE__*/Layer.provide( /*#__PURE__*/Layer.scoped(RpcClient.Protocol, /*#__PURE__*/Effect.gen(function* () {
|
221
|
+
const config = yield* ShardingConfig;
|
222
|
+
const clientProtocol = yield* RpcClientProtocol;
|
223
|
+
return yield* clientProtocol(config.shardManagerAddress);
|
224
|
+
}))));
|
225
|
+
/**
|
226
|
+
* @since 1.0.0
|
227
|
+
* @category Constructors
|
228
|
+
*/
|
229
|
+
export const make = /*#__PURE__*/Effect.gen(function* () {
|
230
|
+
const storage = yield* ShardStorage;
|
231
|
+
const runnersApi = yield* Runners;
|
232
|
+
const runnerHealthApi = yield* RunnerHealth;
|
233
|
+
const clock = yield* Effect.clock;
|
234
|
+
const config = yield* Config;
|
235
|
+
const shardingConfig = yield* ShardingConfig;
|
236
|
+
const state = yield* Effect.orDie(State.fromStorage(shardingConfig.numberOfShards));
|
237
|
+
const scope = yield* Effect.scope;
|
238
|
+
const events = yield* PubSub.unbounded();
|
239
|
+
yield* Metric.incrementBy(ClusterMetrics.runners, MutableHashMap.size(state.runners));
|
240
|
+
for (const address of state.shards.values()) {
|
241
|
+
const metric = Option.isSome(address) ? Metric.tagged(ClusterMetrics.assignedShards, "address", address.toString()) : ClusterMetrics.unassignedShards;
|
242
|
+
yield* Metric.increment(metric);
|
243
|
+
}
|
244
|
+
function withRetry(effect) {
|
245
|
+
return effect.pipe(Effect.retry({
|
246
|
+
schedule: Schedule.spaced(config.persistRetryCount),
|
247
|
+
times: config.persistRetryCount
|
248
|
+
}), Effect.ignore);
|
249
|
+
}
|
250
|
+
const persistRunners = Effect.unsafeMakeSemaphore(1).withPermits(1)(withRetry(Effect.suspend(() => storage.saveRunners(Iterable.map(state.runners, ([address, runner]) => [address, runner.runner])))));
|
251
|
+
const persistAssignments = Effect.unsafeMakeSemaphore(1).withPermits(1)(withRetry(Effect.suspend(() => storage.saveAssignments(state.shards))));
|
252
|
+
const notifyUnhealthyRunner = Effect.fnUntraced(function* (address) {
|
253
|
+
if (!MutableHashMap.has(state.runners, address)) return;
|
254
|
+
yield* Metric.increment(Metric.tagged(ClusterMetrics.runnerHealthChecked, "runner_address", address.toString()));
|
255
|
+
if (!(yield* runnerHealthApi.isAlive(address))) {
|
256
|
+
yield* Effect.logWarning(`Runner at address '${address.toString()}' is not alive`);
|
257
|
+
yield* unregister(address);
|
258
|
+
}
|
259
|
+
});
|
260
|
+
function updateShardsState(shards, address) {
|
261
|
+
return Effect.suspend(() => {
|
262
|
+
if (Option.isSome(address) && !MutableHashMap.has(state.runners, address.value)) {
|
263
|
+
return Effect.fail(new RunnerNotRegistered({
|
264
|
+
address: address.value
|
265
|
+
}));
|
266
|
+
}
|
267
|
+
for (const shardId of shards) {
|
268
|
+
if (!state.shards.has(shardId)) continue;
|
269
|
+
state.shards.set(shardId, address);
|
270
|
+
}
|
271
|
+
return Effect.void;
|
272
|
+
});
|
273
|
+
}
|
274
|
+
const getAssignments = Effect.sync(() => state.shards);
|
275
|
+
let machineId = 0;
|
276
|
+
const register = Effect.fnUntraced(function* (runner) {
|
277
|
+
yield* Effect.logInfo(`Registering runner ${Runner.pretty(runner)}`);
|
278
|
+
const now = clock.unsafeCurrentTimeMillis();
|
279
|
+
MutableHashMap.set(state.runners, runner.address, RunnerWithMetadata({
|
280
|
+
runner,
|
281
|
+
registeredAt: now
|
282
|
+
}));
|
283
|
+
yield* Metric.increment(ClusterMetrics.runners);
|
284
|
+
yield* PubSub.publish(events, ShardingEvent.RunnerRegistered({
|
285
|
+
address: runner.address
|
286
|
+
}));
|
287
|
+
if (state.unassignedShards.length > 0) {
|
288
|
+
yield* rebalance(false);
|
289
|
+
}
|
290
|
+
yield* Effect.forkIn(persistRunners, scope);
|
291
|
+
return MachineId.make(++machineId);
|
292
|
+
});
|
293
|
+
const unregister = Effect.fnUntraced(function* (address) {
|
294
|
+
if (!MutableHashMap.has(state.runners, address)) return;
|
295
|
+
yield* Effect.logInfo("Unregistering runner at address:", address);
|
296
|
+
const unassignments = Arr.empty();
|
297
|
+
for (const [shard, runner] of state.shards) {
|
298
|
+
if (Option.isSome(runner) && Equal.equals(runner.value, address)) {
|
299
|
+
unassignments.push(shard);
|
300
|
+
state.shards.set(shard, Option.none());
|
301
|
+
}
|
302
|
+
}
|
303
|
+
MutableHashMap.remove(state.runners, address);
|
304
|
+
yield* Metric.incrementBy(ClusterMetrics.runners, -1);
|
305
|
+
if (unassignments.length > 0) {
|
306
|
+
yield* Metric.incrementBy(Metric.tagged(ClusterMetrics.unassignedShards, "runner_address", address.toString()), unassignments.length);
|
307
|
+
yield* PubSub.publish(events, ShardingEvent.RunnerUnregistered({
|
308
|
+
address
|
309
|
+
}));
|
310
|
+
}
|
311
|
+
yield* Effect.forkIn(persistRunners, scope);
|
312
|
+
yield* Effect.forkIn(rebalance(true), scope);
|
313
|
+
});
|
314
|
+
let rebalancing = false;
|
315
|
+
let nextRebalanceImmediate = false;
|
316
|
+
let rebalanceDeferred;
|
317
|
+
const rebalanceFibers = yield* FiberSet.make();
|
318
|
+
const rebalance = immmediate => Effect.withFiberRuntime(fiber => {
|
319
|
+
if (!rebalancing) {
|
320
|
+
rebalancing = true;
|
321
|
+
return rebalanceLoop(immmediate);
|
322
|
+
}
|
323
|
+
if (immmediate) {
|
324
|
+
nextRebalanceImmediate = true;
|
325
|
+
}
|
326
|
+
if (!rebalanceDeferred) {
|
327
|
+
rebalanceDeferred = Deferred.unsafeMake(fiber.id());
|
328
|
+
}
|
329
|
+
return Deferred.await(rebalanceDeferred);
|
330
|
+
});
|
331
|
+
const rebalanceLoop = immediate => Effect.suspend(() => {
|
332
|
+
const deferred = rebalanceDeferred;
|
333
|
+
rebalanceDeferred = undefined;
|
334
|
+
if (!immediate) {
|
335
|
+
immediate = nextRebalanceImmediate;
|
336
|
+
nextRebalanceImmediate = false;
|
337
|
+
}
|
338
|
+
return runRebalance(immediate).pipe(deferred ? Effect.intoDeferred(deferred) : identity, Effect.onExit(() => {
|
339
|
+
if (!rebalanceDeferred) {
|
340
|
+
rebalancing = false;
|
341
|
+
return Effect.void;
|
342
|
+
}
|
343
|
+
return Effect.forkIn(rebalanceLoop(), scope);
|
344
|
+
}));
|
345
|
+
});
|
346
|
+
const runRebalance = Effect.fn("ShardManager.rebalance")(function* (immediate) {
|
347
|
+
yield* Effect.annotateCurrentSpan("immmediate", immediate);
|
348
|
+
yield* Effect.sleep(config.rebalanceDebounce);
|
349
|
+
// Determine which shards to assign and unassign
|
350
|
+
const [assignments, unassignments, changes] = immediate || state.unassignedShards.length > 0 ? decideAssignmentsForUnassignedShards(state) : decideAssignmentsForUnbalancedShards(state, config.rebalanceRate);
|
351
|
+
yield* Effect.logDebug(`Rebalancing shards (immediate = ${immediate})`);
|
352
|
+
if (MutableHashSet.size(changes) === 0) return;
|
353
|
+
yield* Metric.increment(ClusterMetrics.rebalances);
|
354
|
+
// Ping runners first and remove unhealthy ones
|
355
|
+
const failedRunners = MutableHashSet.empty();
|
356
|
+
for (const address of changes) {
|
357
|
+
yield* FiberSet.run(rebalanceFibers, runnersApi.ping(address).pipe(Effect.timeout(config.runnerPingTimeout), Effect.catchAll(() => {
|
358
|
+
MutableHashSet.add(failedRunners, address);
|
359
|
+
MutableHashMap.remove(assignments, address);
|
360
|
+
MutableHashMap.remove(unassignments, address);
|
361
|
+
return Effect.void;
|
362
|
+
})));
|
363
|
+
}
|
364
|
+
yield* FiberSet.awaitEmpty(rebalanceFibers);
|
365
|
+
const failedUnassignments = new Set();
|
366
|
+
for (const [address, shards] of unassignments) {
|
367
|
+
yield* FiberSet.run(rebalanceFibers, updateShardsState(shards, Option.none()).pipe(Effect.matchEffect({
|
368
|
+
onFailure: () => {
|
369
|
+
MutableHashSet.add(failedRunners, address);
|
370
|
+
for (const shard of shards) {
|
371
|
+
failedUnassignments.add(shard);
|
372
|
+
}
|
373
|
+
// Remove failed runners from the assignments
|
374
|
+
MutableHashMap.remove(assignments, address);
|
375
|
+
return Effect.void;
|
376
|
+
},
|
377
|
+
onSuccess: () => {
|
378
|
+
const shardCount = shards.size;
|
379
|
+
return Metric.incrementBy(Metric.tagged(ClusterMetrics.assignedShards, "runner_address", address.toString()), -shardCount).pipe(Effect.zipRight(Metric.incrementBy(ClusterMetrics.unassignedShards, shardCount)), Effect.zipRight(PubSub.publish(events, ShardingEvent.ShardsUnassigned({
|
380
|
+
address,
|
381
|
+
shards: Array.from(shards)
|
382
|
+
}))));
|
383
|
+
}
|
384
|
+
})));
|
385
|
+
}
|
386
|
+
yield* FiberSet.awaitEmpty(rebalanceFibers);
|
387
|
+
// Remove failed shard unassignments from the assignments
|
388
|
+
MutableHashMap.forEach(assignments, (shards, address) => {
|
389
|
+
for (const shard of failedUnassignments) {
|
390
|
+
shards.delete(shard);
|
391
|
+
}
|
392
|
+
if (shards.size === 0) {
|
393
|
+
MutableHashMap.remove(assignments, address);
|
394
|
+
}
|
395
|
+
});
|
396
|
+
// Perform the assignments
|
397
|
+
for (const [address, shards] of assignments) {
|
398
|
+
yield* FiberSet.run(rebalanceFibers, updateShardsState(shards, Option.some(address)).pipe(Effect.matchEffect({
|
399
|
+
onFailure: () => {
|
400
|
+
MutableHashSet.add(failedRunners, address);
|
401
|
+
return Effect.void;
|
402
|
+
},
|
403
|
+
onSuccess: () => {
|
404
|
+
const shardCount = shards.size;
|
405
|
+
return Metric.incrementBy(Metric.tagged(ClusterMetrics.assignedShards, "runner_address", address.toString()), -shardCount).pipe(Effect.zipRight(Metric.incrementBy(ClusterMetrics.unassignedShards, -shardCount)), Effect.zipRight(PubSub.publish(events, ShardingEvent.ShardsAssigned({
|
406
|
+
address,
|
407
|
+
shards: Array.from(shards)
|
408
|
+
}))));
|
409
|
+
}
|
410
|
+
})));
|
411
|
+
}
|
412
|
+
yield* FiberSet.awaitEmpty(rebalanceFibers);
|
413
|
+
const wereFailures = MutableHashSet.size(failedRunners) > 0;
|
414
|
+
if (wereFailures) {
|
415
|
+
// Check if the failing runners are still reachable
|
416
|
+
yield* Effect.forEach(failedRunners, notifyUnhealthyRunner, {
|
417
|
+
discard: true
|
418
|
+
}).pipe(Effect.forkIn(scope));
|
419
|
+
yield* Effect.logWarning("Failed to rebalance runners: ", failedRunners);
|
420
|
+
}
|
421
|
+
if (wereFailures && immediate) {
|
422
|
+
// Try rebalancing again later if there were any failures
|
423
|
+
yield* Clock.sleep(config.rebalanceRetryInterval).pipe(Effect.zipRight(rebalance(immediate)), Effect.forkIn(scope));
|
424
|
+
}
|
425
|
+
yield* persistAssignments;
|
426
|
+
});
|
427
|
+
const checkRunnerHealth = Effect.suspend(() => Effect.forEach(MutableHashMap.keys(state.runners), notifyUnhealthyRunner, {
|
428
|
+
concurrency: "inherit",
|
429
|
+
discard: true
|
430
|
+
})).pipe(Effect.withConcurrency(4), Effect.asVoid);
|
431
|
+
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))))));
|
432
|
+
yield* Effect.forkIn(persistRunners, scope);
|
433
|
+
// Rebalance immediately if there are unassigned shards
|
434
|
+
yield* Effect.forkIn(rebalance(state.unassignedShards.length > 0), scope);
|
435
|
+
// Start a regular cluster rebalance at the configured interval
|
436
|
+
yield* rebalance(false).pipe(Effect.andThen(Effect.sleep(config.rebalanceInterval)), Effect.forever, Effect.forkIn(scope));
|
437
|
+
yield* checkRunnerHealth.pipe(Effect.andThen(Effect.sleep(config.runnerHealthCheckInterval)), Effect.forever, Effect.forkIn(scope));
|
438
|
+
yield* Effect.gen(function* () {
|
439
|
+
const queue = yield* PubSub.subscribe(events);
|
440
|
+
while (true) {
|
441
|
+
yield* Effect.logInfo("Shard manager event:", yield* Queue.take(queue));
|
442
|
+
}
|
443
|
+
}).pipe(Effect.forkIn(scope));
|
444
|
+
yield* Effect.logInfo("Shard manager initialized");
|
445
|
+
return ShardManager.of({
|
446
|
+
getAssignments,
|
447
|
+
shardingEvents: PubSub.subscribe(events),
|
448
|
+
register,
|
449
|
+
unregister,
|
450
|
+
rebalance,
|
451
|
+
notifyUnhealthyRunner,
|
452
|
+
checkRunnerHealth
|
453
|
+
});
|
454
|
+
});
|
455
|
+
/**
|
456
|
+
* @since 1.0.0
|
457
|
+
* @category layer
|
458
|
+
*/
|
459
|
+
export const layer = /*#__PURE__*/Layer.scoped(ShardManager, make);
|
460
|
+
/**
|
461
|
+
* @since 1.0.0
|
462
|
+
* @category Server
|
463
|
+
*/
|
464
|
+
export const layerServerHandlers = /*#__PURE__*/Rpcs.toLayer( /*#__PURE__*/Effect.gen(function* () {
|
465
|
+
const shardManager = yield* ShardManager;
|
466
|
+
const clock = yield* Effect.clock;
|
467
|
+
return {
|
468
|
+
Register: ({
|
469
|
+
runner
|
470
|
+
}) => shardManager.register(runner),
|
471
|
+
Unregister: ({
|
472
|
+
address
|
473
|
+
}) => shardManager.unregister(address),
|
474
|
+
NotifyUnhealthyRunner: ({
|
475
|
+
address
|
476
|
+
}) => shardManager.notifyUnhealthyRunner(address),
|
477
|
+
GetAssignments: () => shardManager.getAssignments,
|
478
|
+
ShardingEvents: Effect.fnUntraced(function* () {
|
479
|
+
const queue = yield* shardManager.shardingEvents;
|
480
|
+
const mailbox = yield* Mailbox.make();
|
481
|
+
yield* mailbox.offer(ShardingEvent.StreamStarted());
|
482
|
+
yield* Queue.takeBetween(queue, 1, Number.MAX_SAFE_INTEGER).pipe(Effect.flatMap(events => mailbox.offerAll(events)), Effect.forever, Effect.forkScoped);
|
483
|
+
return mailbox;
|
484
|
+
}),
|
485
|
+
GetTime: () => clock.currentTimeMillis
|
486
|
+
};
|
487
|
+
}));
|
488
|
+
/**
|
489
|
+
* @since 1.0.0
|
490
|
+
* @category Server
|
491
|
+
*/
|
492
|
+
export const layerServer = /*#__PURE__*/RpcServer.layer(Rpcs, {
|
493
|
+
spanPrefix: "ShardManager",
|
494
|
+
disableTracing: true
|
495
|
+
}).pipe( /*#__PURE__*/Layer.provide(layerServerHandlers));
|
17
496
|
//# sourceMappingURL=ShardManager.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ShardManager.js","names":["internal","ShardManagerTypeId","ShardManager","shardManagerTag","live"],"sources":["../../src/ShardManager.ts"],"sourcesContent":[null],"mappings":"AAOA,OAAO,KAAKA,QAAQ,MAAM,4BAA4B;AAMtD;;;;AAIA,OAAO,MAAMC,kBAAkB,GAAkBD,QAAQ,CAACC,kBAAkB;AAQ5E;;;;AAIA,OAAO,MAAMC,YAAY,GAAGF,QAAQ,CAACG,eAAe;AAmBpD;;;;AAIA,OAAO,MAAMC,IAAI,GAAGJ,QAAQ,CAACI,IAAI","ignoreList":[]}
|
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","MutableHashMap","MutableHashSet","Option","PubSub","Queue","Schedule","Schema","RunnerNotRegistered","ClusterMetrics","decideAssignmentsForUnassignedShards","decideAssignmentsForUnbalancedShards","RunnerWithMetadata","State","MachineId","Runner","RunnerAddress","RunnerHealth","RpcClientProtocol","Runners","ShardId","ShardingConfig","ShardStorage","ShardManager","Tag","Config","defaults","rebalanceDebounce","millis","rebalanceInterval","seconds","rebalanceRetryInterval","rebalanceRate","persistRetryCount","persistRetryInterval","runnerHealthCheckInterval","minutes","runnerPingTimeout","configConfig","all","duration","pipe","withDefault","withDescription","number","integer","configFromEnv","withConfigProvider","fromEnv","constantCase","layerConfig","config","succeed","layerConfigFromEnv","effect","ShardManagerClient","ShardingEventSchema","Union","TaggedStruct","address","shards","Array","Rpcs","make","payload","runner","success","ReadonlyMap","key","value","stream","Number","ShardingEvent","taggedEnum","makeClientLocal","gen","runnerAddress","clock","Map","n","numberOfShards","set","machineId","of","register","sync","unregister","void","notifyUnhealthyRunner","getAssignments","shardingEvents","mailbox","offer","StreamStarted","getTime","currentTimeMillis","makeClientRpc","client","spanPrefix","disableTracing","Register","version","serverVersion","Unregister","NotifyUnhealthyRunner","GetAssignments","ShardingEvents","asMailbox","GetTime","layerClientLocal","layerClientRpc","scoped","provide","Protocol","clientProtocol","shardManagerAddress","storage","runnersApi","runnerHealthApi","shardingConfig","state","orDie","fromStorage","scope","events","unbounded","incrementBy","runners","size","values","metric","isSome","tagged","assignedShards","toString","unassignedShards","increment","withRetry","retry","schedule","spaced","times","ignore","persistRunners","unsafeMakeSemaphore","withPermits","suspend","saveRunners","map","persistAssignments","saveAssignments","fnUntraced","has","runnerHealthChecked","isAlive","logWarning","updateShardsState","fail","shardId","logInfo","pretty","now","unsafeCurrentTimeMillis","registeredAt","publish","RunnerRegistered","length","rebalance","forkIn","unassignments","empty","shard","equals","push","none","remove","RunnerUnregistered","rebalancing","nextRebalanceImmediate","rebalanceDeferred","rebalanceFibers","immmediate","withFiberRuntime","fiber","rebalanceLoop","unsafeMake","id","await","immediate","deferred","undefined","runRebalance","intoDeferred","onExit","fn","annotateCurrentSpan","sleep","assignments","changes","logDebug","rebalances","failedRunners","run","ping","timeout","catchAll","add","awaitEmpty","failedUnassignments","Set","matchEffect","onFailure","onSuccess","shardCount","zipRight","ShardsUnassigned","from","forEach","delete","some","ShardsAssigned","wereFailures","discard","checkRunnerHealth","keys","concurrency","withConcurrency","asVoid","addFinalizer","catchAllCause","cause","andThen","forever","queue","subscribe","take","layer","layerServerHandlers","toLayer","shardManager","takeBetween","MAX_SAFE_INTEGER","flatMap","offerAll","forkScoped","layerServer"],"sources":["../../src/ShardManager.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|