@effect/cluster 0.28.4 → 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
@@ -1,256 +1,240 @@
|
|
1
|
-
|
2
|
-
* @since 1.0.0
|
3
|
-
*/
|
4
|
-
import * as Chunk from "effect/Chunk";
|
1
|
+
import * as Arr from "effect/Array";
|
5
2
|
import * as Clock from "effect/Clock";
|
6
|
-
import { GenericTag } from "effect/Context";
|
7
3
|
import * as Effect from "effect/Effect";
|
8
|
-
import {
|
9
|
-
import
|
10
|
-
import * as
|
11
|
-
import * as HashSet from "effect/HashSet";
|
12
|
-
import * as Layer from "effect/Layer";
|
13
|
-
import * as List from "effect/List";
|
4
|
+
import { constFalse } from "effect/Function";
|
5
|
+
import * as MutableHashMap from "effect/MutableHashMap";
|
6
|
+
import * as MutableHashSet from "effect/MutableHashSet";
|
14
7
|
import * as Option from "effect/Option";
|
15
|
-
import * as
|
16
|
-
import
|
17
|
-
import
|
18
|
-
import
|
19
|
-
import * as ManagerConfig from "../ManagerConfig.js";
|
20
|
-
import * as Pods from "../Pods.js";
|
21
|
-
import * as PodsHealth from "../PodsHealth.js";
|
22
|
-
import * as ShardId from "../ShardId.js";
|
23
|
-
import * as ShardingEvent from "../ShardingEvent.js";
|
24
|
-
import * as ShardingException from "../ShardingException.js";
|
25
|
-
import * as Storage from "../Storage.js";
|
26
|
-
import * as PodWithMetadata from "./podWithMetadata.js";
|
27
|
-
import * as ShardManagerState from "./shardManagerState.js";
|
28
|
-
import { groupBy, minByOption } from "./utils.js";
|
8
|
+
import * as Order from "effect/Order";
|
9
|
+
import { RunnerHealth } from "../RunnerHealth.js";
|
10
|
+
import { ShardId } from "../ShardId.js";
|
11
|
+
import { ShardStorage } from "../ShardStorage.js";
|
29
12
|
/** @internal */
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
13
|
+
export class State {
|
14
|
+
runners;
|
15
|
+
shards;
|
16
|
+
static fromStorage = /*#__PURE__*/Effect.fnUntraced(function* (numberOfShards) {
|
17
|
+
const storage = yield* ShardStorage;
|
18
|
+
const runnerHealth = yield* RunnerHealth;
|
19
|
+
// Fetch registered runners and shard assignments from cluster storage
|
20
|
+
const storedRunners = yield* storage.getRunners;
|
21
|
+
const storedAssignments = yield* storage.getAssignments;
|
22
|
+
// Determine which runners are still alive
|
23
|
+
const deadRunners = Arr.empty();
|
24
|
+
const aliveRunners = MutableHashMap.empty();
|
25
|
+
yield* Effect.forEach(storedRunners, ([address, runner]) => Effect.map(runnerHealth.isAlive(address), isAlive => {
|
26
|
+
if (isAlive) {
|
27
|
+
MutableHashMap.set(aliveRunners, address, runner);
|
28
|
+
} else {
|
29
|
+
deadRunners.push(runner);
|
30
|
+
}
|
31
|
+
}), {
|
32
|
+
concurrency: "unbounded",
|
33
|
+
discard: true
|
34
|
+
});
|
35
|
+
if (deadRunners.length > 0) {
|
36
|
+
yield* Effect.logWarning("Ignoring runners that are no longer considered alive:", deadRunners);
|
37
|
+
}
|
38
|
+
// Determine which shards remain unassigned to a runner
|
39
|
+
const assignedShards = new Map();
|
40
|
+
const invalidAssignments = Arr.empty();
|
41
|
+
for (const [shard, address] of storedAssignments) {
|
42
|
+
if (Option.isSome(address) && MutableHashMap.has(aliveRunners, address.value)) {
|
43
|
+
assignedShards.set(shard, address.value);
|
44
|
+
} else if (Option.isSome(address)) {
|
45
|
+
invalidAssignments.push([shard, address.value]);
|
46
|
+
}
|
47
|
+
}
|
48
|
+
if (invalidAssignments.length > 0) {
|
49
|
+
yield* Effect.logWarning("Ignoring shard assignments for runners that are no longer considered alive: ", invalidAssignments);
|
50
|
+
}
|
51
|
+
// Construct the initial state
|
52
|
+
const now = yield* Clock.currentTimeMillis;
|
53
|
+
const runnerState = MutableHashMap.empty();
|
54
|
+
for (const [address, runner] of aliveRunners) {
|
55
|
+
MutableHashMap.set(runnerState, address, RunnerWithMetadata({
|
56
|
+
runner,
|
57
|
+
registeredAt: now
|
58
|
+
}));
|
59
|
+
}
|
60
|
+
const shardState = new Map();
|
61
|
+
for (let n = 1; n <= numberOfShards; n++) {
|
62
|
+
const shardId = ShardId.make(n);
|
63
|
+
shardState.set(shardId, Option.fromNullable(assignedShards.get(shardId)));
|
64
|
+
}
|
65
|
+
return new State(runnerState, shardState);
|
66
|
+
});
|
67
|
+
constructor(runners, shards) {
|
68
|
+
this.runners = runners;
|
69
|
+
this.shards = shards;
|
41
70
|
}
|
42
|
-
|
43
|
-
|
71
|
+
get maxVersion() {
|
72
|
+
if (MutableHashMap.size(this.runners) === 0) return Option.none();
|
73
|
+
let version = undefined;
|
74
|
+
for (const [, meta] of this.runners) {
|
75
|
+
if (version === undefined || meta.runner.version > version) {
|
76
|
+
version = meta.runner.version;
|
77
|
+
}
|
78
|
+
}
|
79
|
+
return Option.some(version);
|
44
80
|
}
|
45
|
-
|
46
|
-
return
|
81
|
+
allRunnersHaveVersion(version) {
|
82
|
+
return version.pipe(Option.map(max => Arr.every(this.runnerVersions, version => version === max)), Option.getOrElse(constFalse));
|
47
83
|
}
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
84
|
+
get shardsPerRunner() {
|
85
|
+
const shards = MutableHashMap.empty();
|
86
|
+
if (MutableHashMap.isEmpty(this.runners)) return shards;
|
87
|
+
MutableHashMap.forEach(this.runners, (_, address) => {
|
88
|
+
MutableHashMap.set(shards, address, new Set());
|
89
|
+
});
|
90
|
+
for (const [shard, address] of this.shards) {
|
91
|
+
if (Option.isNone(address)) continue;
|
92
|
+
const shardIds = Option.getOrUndefined(MutableHashMap.get(shards, address.value));
|
93
|
+
shardIds.add(shard);
|
94
|
+
}
|
95
|
+
return shards;
|
59
96
|
}
|
60
|
-
|
61
|
-
|
97
|
+
get averageShardsPerRunner() {
|
98
|
+
const runnerCount = MutableHashMap.size(this.runners);
|
99
|
+
return runnerCount > 0 ? this.shards.size / runnerCount : 0;
|
62
100
|
}
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
return Effect.fail(new ShardingException.PodNoLongerRegisteredException({
|
69
|
-
podAddress: pod.value
|
70
|
-
}));
|
101
|
+
get unassignedShards() {
|
102
|
+
const shardIds = [];
|
103
|
+
for (const [shard, address] of this.shards) {
|
104
|
+
if (Option.isNone(address)) {
|
105
|
+
shardIds.push(shard);
|
71
106
|
}
|
72
|
-
|
73
|
-
|
74
|
-
shards: pipe(state.shards, HashMap.map((assignment, shard) => HashSet.has(shards, shard) ? pod : assignment))
|
75
|
-
});
|
76
|
-
});
|
107
|
+
}
|
108
|
+
return shardIds;
|
77
109
|
}
|
78
|
-
|
79
|
-
const
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
yield* Effect.logDebug("Rebalance (rebalanceImmidiately=" + JSON.stringify(rebalanceImmediately) + ")");
|
85
|
-
}
|
86
|
-
const failedPingedPods = yield* pipe(HashSet.union(HashMap.keySet(assignments), HashMap.keySet(unassignments)), Effect.forEach(pod => pipe(podApi.ping(pod), Effect.timeout(config.pingTimeout), Effect.match({
|
87
|
-
onFailure: () => Chunk.fromIterable([pod]),
|
88
|
-
onSuccess: () => Chunk.empty()
|
89
|
-
})), {
|
90
|
-
concurrency: "inherit"
|
91
|
-
}), Effect.map(Chunk.fromIterable), Effect.map(_ => Chunk.flatten(_)), Effect.map(HashSet.fromIterable));
|
92
|
-
const shardsToRemove = pipe(List.fromIterable(assignments), List.appendAll(List.fromIterable(unassignments)), List.filter(([pod, __]) => HashSet.has(failedPingedPods, pod)), List.map(([_, shards]) => List.fromIterable(shards)), List.flatMap(_ => _),
|
93
|
-
// TODO: List is missing flatMap
|
94
|
-
HashSet.fromIterable);
|
95
|
-
const readyAssignments = pipe(assignments, HashMap.map(HashSet.difference(shardsToRemove)), HashMap.filter(__ => HashSet.size(__) > 0));
|
96
|
-
const readyUnassignments = pipe(unassignments, HashMap.map(HashSet.difference(shardsToRemove)), HashMap.filter(__ => HashSet.size(__) > 0));
|
97
|
-
const [failedUnassignedPods, failedUnassignedShards] = yield* pipe(Effect.forEach(readyUnassignments, ([pod, shards]) => pipe(podApi.unassignShards(pod, shards), Effect.zipRight(updateShardsState(shards, Option.none())), Effect.matchEffect({
|
98
|
-
onFailure: () => Effect.succeed([HashSet.fromIterable([pod]), shards]),
|
99
|
-
onSuccess: () => pipe(PubSub.publish(eventsHub, ShardingEvent.ShardsUnassigned(pod, shards)), Effect.as([HashSet.empty(), HashSet.empty()]))
|
100
|
-
})), {
|
101
|
-
concurrency: "inherit"
|
102
|
-
}), Effect.map(Chunk.fromIterable), Effect.map(_ => Chunk.unzip(_)), Effect.map(([pods, shards]) => [Chunk.map(pods, Chunk.fromIterable), Chunk.map(shards, Chunk.fromIterable)]), Effect.map(([pods, shards]) => [HashSet.fromIterable(Chunk.flatten(pods)), HashSet.fromIterable(Chunk.flatten(shards))]));
|
103
|
-
// remove assignments of shards that couldn't be unassigned, as well as faulty pods.
|
104
|
-
const filteredAssignments = pipe(HashMap.removeMany(readyAssignments, failedUnassignedPods), HashMap.map((shards, __) => HashSet.difference(shards, failedUnassignedShards)));
|
105
|
-
// then do the assignments
|
106
|
-
const failedAssignedPods = yield* pipe(Effect.forEach(filteredAssignments, ([pod, shards]) => pipe(podApi.assignShards(pod, shards), Effect.zipRight(updateShardsState(shards, Option.some(pod))), Effect.matchEffect({
|
107
|
-
onFailure: () => Effect.succeed(Chunk.fromIterable([pod])),
|
108
|
-
onSuccess: () => pipe(PubSub.publish(eventsHub, ShardingEvent.ShardsAssigned(pod, shards)), Effect.as(Chunk.empty()))
|
109
|
-
})), {
|
110
|
-
concurrency: "inherit"
|
111
|
-
}), Effect.map(Chunk.fromIterable), Effect.map(_ => Chunk.flatten(_)), Effect.map(HashSet.fromIterable));
|
112
|
-
const failedPods = HashSet.union(HashSet.union(failedPingedPods, failedUnassignedPods), failedAssignedPods);
|
113
|
-
// check if failing pods are still up
|
114
|
-
yield* Effect.forkIn(layerScope)(Effect.forEach(failedPods, _ => notifyUnhealthyPod(_), {
|
115
|
-
discard: true
|
116
|
-
}));
|
117
|
-
if (HashSet.size(failedPods) > 0) {
|
118
|
-
yield* Effect.logDebug("Failed to rebalance pods: " + failedPods + " failed pinged: " + failedPingedPods + " failed assigned: " + failedAssignedPods + " failed unassigned: " + failedUnassignedPods);
|
119
|
-
}
|
120
|
-
// retry rebalancing later if there was any failure
|
121
|
-
if (HashSet.size(failedPods) > 0 && rebalanceImmediately) {
|
122
|
-
yield* pipe(Effect.sleep(config.rebalanceRetryInterval), Effect.zipRight(rebalance(rebalanceImmediately)), Effect.forkIn(layerScope));
|
123
|
-
}
|
124
|
-
// persist state changes to Redis
|
125
|
-
if (areChanges) {
|
126
|
-
yield* Effect.forkIn(layerScope)(persistAssignments);
|
127
|
-
}
|
128
|
-
});
|
129
|
-
return rebalanceSemaphore.withPermits(1)(algo);
|
110
|
+
get runnerVersions() {
|
111
|
+
const runnerVersions = [];
|
112
|
+
for (const [, meta] of this.runners) {
|
113
|
+
runnerVersions.push(meta.runner.version);
|
114
|
+
}
|
115
|
+
return runnerVersions;
|
130
116
|
}
|
131
|
-
return {
|
132
|
-
getAssignments,
|
133
|
-
getShardingEvents,
|
134
|
-
register,
|
135
|
-
unregister,
|
136
|
-
persistPods,
|
137
|
-
rebalance,
|
138
|
-
notifyUnhealthyPod,
|
139
|
-
checkAllPodsHealth
|
140
|
-
};
|
141
117
|
}
|
142
118
|
/** @internal */
|
119
|
+
export const RunnerWithMetadata = runner => runner;
|
120
|
+
/** @internal */
|
143
121
|
export function decideAssignmentsForUnassignedShards(state) {
|
144
|
-
return
|
122
|
+
return pickNewRunners(state.unassignedShards, state, true, 1);
|
145
123
|
}
|
124
|
+
const allocationOrder = /*#__PURE__*/Order.combine( /*#__PURE__*/Order.mapInput(Order.number, ([, shards]) => shards), /*#__PURE__*/Order.mapInput(Order.number, ([,, registeredAt]) => registeredAt));
|
146
125
|
/** @internal */
|
147
|
-
export function decideAssignmentsForUnbalancedShards(state,
|
148
|
-
|
149
|
-
const
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
126
|
+
export function decideAssignmentsForUnbalancedShards(state, rate) {
|
127
|
+
const shardsPerRunner = state.shardsPerRunner;
|
128
|
+
const maxVersion = state.maxVersion;
|
129
|
+
const extraShardsToAllocate = Arr.empty();
|
130
|
+
if (state.allRunnersHaveVersion(maxVersion)) {
|
131
|
+
const averageShardsPerRunner = state.averageShardsPerRunner;
|
132
|
+
MutableHashMap.forEach(shardsPerRunner, shards => {
|
133
|
+
// Count how many extra shards there are compared to the average
|
134
|
+
const extraShards = Math.max(0, shards.size - averageShardsPerRunner);
|
135
|
+
for (const shard of takeRandom(shards, extraShards)) {
|
136
|
+
const maybeAddress = state.shards.get(shard) ?? Option.none();
|
137
|
+
if (Option.isNone(maybeAddress)) {
|
138
|
+
extraShardsToAllocate.push([shard, Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER]);
|
139
|
+
continue;
|
140
|
+
}
|
141
|
+
const address = maybeAddress.value;
|
142
|
+
extraShardsToAllocate.push([shard, Option.match(MutableHashMap.get(shardsPerRunner, address), {
|
143
|
+
onNone: () => Number.MIN_SAFE_INTEGER,
|
144
|
+
onSome: shards => -shards.size
|
145
|
+
}), Option.match(MutableHashMap.get(state.runners, address), {
|
146
|
+
onNone: () => Number.MIN_SAFE_INTEGER,
|
147
|
+
onSome: meta => meta.registeredAt
|
148
|
+
})]);
|
163
149
|
}
|
164
|
-
}
|
165
|
-
|
166
|
-
const sortedShardsToRebalance =
|
167
|
-
return
|
150
|
+
});
|
151
|
+
}
|
152
|
+
const sortedShardsToRebalance = extraShardsToAllocate.sort(allocationOrder).map(([shard]) => shard);
|
153
|
+
return pickNewRunners(sortedShardsToRebalance, state, false, rate, shardsPerRunner, maxVersion);
|
168
154
|
}
|
169
|
-
function
|
170
|
-
const
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
155
|
+
function pickNewRunners(shardsToRebalance, state, immediate, rate, shardsPerRunner = state.shardsPerRunner, maybeMaxVersion = state.maxVersion) {
|
156
|
+
const addressAssignments = MutableHashMap.empty();
|
157
|
+
const unassignments = MutableHashMap.empty();
|
158
|
+
const changes = MutableHashSet.empty();
|
159
|
+
if (Option.isNone(maybeMaxVersion)) {
|
160
|
+
return [addressAssignments, unassignments, changes];
|
161
|
+
}
|
162
|
+
const maxVersion = maybeMaxVersion.value;
|
163
|
+
for (const shardId of shardsToRebalance) {
|
164
|
+
// Find the runner with the fewest assigned shards
|
165
|
+
let candidate;
|
166
|
+
let candidateShards;
|
167
|
+
for (const [address, shards] of shardsPerRunner) {
|
168
|
+
// Keep only runners with the maximum version
|
169
|
+
const maybeRunnerMeta = MutableHashMap.get(state.runners, address);
|
170
|
+
if (Option.isNone(maybeRunnerMeta)) continue;
|
171
|
+
const runnerMeta = maybeRunnerMeta.value;
|
172
|
+
if (runnerMeta.runner.version !== maxVersion) continue;
|
173
|
+
// Do not assign to a runner that has unassignments in the same rebalance
|
174
|
+
if (MutableHashMap.has(unassignments, address)) continue;
|
175
|
+
// Do not assign too many shards to each runner unless rebalancing must
|
176
|
+
// occur immediately
|
177
|
+
if (!immediate) {
|
178
|
+
const assignmentCount = Option.getOrUndefined(MutableHashMap.get(addressAssignments, address))?.size ?? 0;
|
179
|
+
if (assignmentCount >= state.shards.size * rate) continue;
|
180
|
+
}
|
181
|
+
if (candidate === undefined || shards.size < candidateShards.size) {
|
182
|
+
candidate = address;
|
183
|
+
candidateShards = shards;
|
184
|
+
}
|
185
|
+
}
|
186
|
+
if (!candidate || !candidateShards) break;
|
187
|
+
// If the old runner is the same as the new runner, do nothing
|
188
|
+
const oldRunner = Option.getOrUndefined(state.shards.get(shardId) ?? Option.none());
|
189
|
+
if (oldRunner && oldRunner.toString() === candidate.toString()) {
|
190
|
+
continue;
|
191
|
+
}
|
192
|
+
const oldShards = oldRunner && Option.getOrUndefined(MutableHashMap.get(shardsPerRunner, oldRunner));
|
193
|
+
// If the new runner has one less, as many, or more shards than the
|
194
|
+
// old runner, do not change anything
|
195
|
+
if (oldShards && candidateShards.size + 1 >= oldShards.size) continue;
|
196
|
+
// Otherwise create a new assignment
|
197
|
+
MutableHashMap.modifyAt(addressAssignments, candidate, Option.match({
|
198
|
+
onNone: () => Option.some(new Set([shardId])),
|
199
|
+
onSome: shards => {
|
200
|
+
shards.add(shardId);
|
201
|
+
return Option.some(shards);
|
213
202
|
}
|
214
203
|
}));
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
204
|
+
if (oldRunner) {
|
205
|
+
MutableHashMap.modifyAt(unassignments, oldRunner, Option.match({
|
206
|
+
onNone: () => Option.some(new Set([shardId])),
|
207
|
+
onSome: shards => {
|
208
|
+
shards.add(shardId);
|
209
|
+
return Option.some(shards);
|
210
|
+
}
|
211
|
+
}));
|
212
|
+
}
|
213
|
+
// Move the shard to the new runner
|
214
|
+
candidateShards.add(shardId);
|
215
|
+
if (oldShards) {
|
216
|
+
oldShards.delete(shardId);
|
217
|
+
}
|
218
|
+
// Track changes
|
219
|
+
MutableHashSet.add(changes, candidate);
|
220
|
+
if (oldRunner) MutableHashSet.add(changes, oldRunner);
|
221
|
+
}
|
222
|
+
return [addressAssignments, unassignments, changes];
|
223
|
+
}
|
224
|
+
function takeRandom(self, n) {
|
225
|
+
const array = Array.from(self);
|
226
|
+
let currentIndex = array.length;
|
227
|
+
while (currentIndex != 0) {
|
228
|
+
const randomIndex = Math.floor(Math.random() * currentIndex);
|
229
|
+
currentIndex = currentIndex - 1;
|
230
|
+
swap(array, currentIndex, randomIndex);
|
231
|
+
}
|
232
|
+
return n < array.length ? array.slice(0, n) : array;
|
233
|
+
}
|
234
|
+
function swap(array, i, j) {
|
235
|
+
const tmp = array[i];
|
236
|
+
array[i] = array[j];
|
237
|
+
array[j] = tmp;
|
238
|
+
return array;
|
223
239
|
}
|
224
|
-
/**
|
225
|
-
* @since 1.0.0
|
226
|
-
* @category layers
|
227
|
-
*/
|
228
|
-
export const live = /*#__PURE__*/Effect.gen(function* () {
|
229
|
-
const config = yield* ManagerConfig.ManagerConfig;
|
230
|
-
const stateRepository = yield* Storage.Storage;
|
231
|
-
const healthApi = yield* PodsHealth.PodsHealth;
|
232
|
-
const podsApi = yield* Pods.Pods;
|
233
|
-
const layerScope = yield* Effect.scope;
|
234
|
-
const pods = yield* stateRepository.getPods;
|
235
|
-
const assignments = yield* stateRepository.getAssignments;
|
236
|
-
const filteredPods = yield* pipe(Effect.filter(pods, ([podAddress]) => healthApi.isAlive(podAddress), {
|
237
|
-
concurrency: "inherit"
|
238
|
-
}), Effect.map(HashMap.fromIterable));
|
239
|
-
const filteredAssignments = HashMap.filter(assignments, pod => Option.isSome(pod) && HashMap.has(filteredPods, pod.value));
|
240
|
-
const cdt = yield* Clock.currentTimeMillis;
|
241
|
-
const initialState = ShardManagerState.make(HashMap.map(filteredPods, pod => PodWithMetadata.make(pod, cdt)), HashMap.union(filteredAssignments, pipe(Chunk.range(1, config.numberOfShards), Chunk.map(n => [ShardId.make(n), Option.none()]), HashMap.fromIterable)));
|
242
|
-
const state = yield* RefSynchronized.make(initialState);
|
243
|
-
const rebalanceSemaphore = yield* Effect.makeSemaphore(1);
|
244
|
-
const eventsHub = yield* PubSub.unbounded();
|
245
|
-
const shardManager = make(layerScope, state, rebalanceSemaphore, eventsHub, healthApi, podsApi, stateRepository, config);
|
246
|
-
yield* Effect.forkIn(layerScope)(shardManager.persistPods);
|
247
|
-
// rebalance immediately if there are unassigned shards
|
248
|
-
yield* shardManager.rebalance(HashSet.size(initialState.unassignedShards) > 0);
|
249
|
-
// start a regular rebalance at the given interval
|
250
|
-
yield* pipe(shardManager.rebalance(false), Effect.repeat(Schedule.spaced(config.rebalanceInterval)), Effect.forkIn(layerScope));
|
251
|
-
// log info events
|
252
|
-
yield* pipe(shardManager.getShardingEvents, Stream.mapEffect(_ => Effect.logDebug(JSON.stringify(_))), Stream.runDrain, Effect.forkIn(layerScope));
|
253
|
-
yield* Effect.logDebug("Shard Manager loaded");
|
254
|
-
return shardManager;
|
255
|
-
}).pipe( /*#__PURE__*/Layer.scoped(shardManagerTag));
|
256
240
|
//# sourceMappingURL=shardManager.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"shardManager.js","names":["Chunk","Clock","GenericTag","Effect","equals","pipe","HashMap","HashSet","Layer","List","Option","PubSub","Schedule","Stream","RefSynchronized","ManagerConfig","Pods","PodsHealth","ShardId","ShardingEvent","ShardingException","Storage","PodWithMetadata","ShardManagerState","groupBy","minByOption","ShardManagerSymbolKey","ShardManagerTypeId","Symbol","for","shardManagerTag","make","layerScope","stateRef","rebalanceSemaphore","eventsHub","healthApi","podApi","stateRepository","config","getAssignments","get","map","_","shards","getShardingEvents","fromPubSub","register","pod","logDebug","address","version","zipRight","updateAndGetEffect","state","flatMap","clock","currentTimeMillis","cdt","set","pods","zipLeft","publish","PodRegistered","when","rebalance","size","unassignedShards","forkIn","persistPods","asVoid","stateHasPod","podAddress","has","notifyUnhealthyPod","whenEffect","PodHealthChecked","unlessEffect","logWarning","unregister","isAlive","checkAllPodsHealth","keySet","forEach","concurrency","discard","eff","Do","bind","modify","filter","some","remove","none","tap","PodUnregistered","ShardsUnassigned","unassignments","withRetry","zio","retry","spaced","persistRetryInterval","andThen","recurs","persistRetryCount","ignore","persistAssignments","saveAssignments","savePods","v","updateShardsState","updateEffect","isSome","value","fail","PodNoLongerRegisteredException","succeed","assignment","shard","rebalanceImmediately","algo","gen","assignments","decideAssignmentsForUnassignedShards","decideAssignmentsForUnbalancedShards","rebalanceRate","areChanges","JSON","stringify","failedPingedPods","union","ping","timeout","pingTimeout","match","onFailure","fromIterable","onSuccess","empty","flatten","shardsToRemove","appendAll","__","readyAssignments","difference","readyUnassignments","failedUnassignedPods","failedUnassignedShards","unassignShards","matchEffect","as","unzip","filteredAssignments","removeMany","failedAssignedPods","assignShards","ShardsAssigned","failedPods","sleep","rebalanceRetryInterval","withPermits","pickNewPods","extraShardsToAllocate","allPodsHaveMaxVersion","shardsPerPod","extraShards","Math","max","averageShardsPerPod","take","sortedShardsToRebalance","shardsToRebalance","reduce","unassignedPods","toArray","maxVersion","isNone","extractVersion","compareVersion","getOrElse","p","findFirst","onNone","onSome","oldPod","Number","MAX_SAFE_INTEGER","unassigned","add","prepend","of","assignmentsPerPod","shardId","unassignmentsPerPod","live","podsApi","scope","getPods","filteredPods","initialState","range","numberOfShards","n","makeSemaphore","unbounded","shardManager","repeat","rebalanceInterval","mapEffect","runDrain","scoped"],"sources":["../../../src/internal/shardManager.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"shardManager.js","names":["Arr","Clock","Effect","constFalse","MutableHashMap","MutableHashSet","Option","Order","RunnerHealth","ShardId","ShardStorage","State","runners","shards","fromStorage","fnUntraced","numberOfShards","storage","runnerHealth","storedRunners","getRunners","storedAssignments","getAssignments","deadRunners","empty","aliveRunners","forEach","address","runner","map","isAlive","set","push","concurrency","discard","length","logWarning","assignedShards","Map","invalidAssignments","shard","isSome","has","value","now","currentTimeMillis","runnerState","RunnerWithMetadata","registeredAt","shardState","n","shardId","make","fromNullable","get","constructor","maxVersion","size","none","version","undefined","meta","some","allRunnersHaveVersion","pipe","max","every","runnerVersions","getOrElse","shardsPerRunner","isEmpty","_","Set","isNone","shardIds","getOrUndefined","add","averageShardsPerRunner","runnerCount","unassignedShards","decideAssignmentsForUnassignedShards","state","pickNewRunners","allocationOrder","combine","mapInput","number","decideAssignmentsForUnbalancedShards","rate","extraShardsToAllocate","extraShards","Math","takeRandom","maybeAddress","Number","MIN_SAFE_INTEGER","match","onNone","onSome","sortedShardsToRebalance","sort","shardsToRebalance","immediate","maybeMaxVersion","addressAssignments","unassignments","changes","candidate","candidateShards","maybeRunnerMeta","runnerMeta","assignmentCount","oldRunner","toString","oldShards","modifyAt","delete","self","array","Array","from","currentIndex","randomIndex","floor","random","swap","slice","i","j","tmp"],"sources":["../../../src/internal/shardManager.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|