@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.
Files changed (626) hide show
  1. package/ClusterError/package.json +6 -0
  2. package/ClusterMetrics/package.json +6 -0
  3. package/ClusterSchema/package.json +6 -0
  4. package/DeliverAt/package.json +6 -0
  5. package/Entity/package.json +6 -0
  6. package/EntityAddress/package.json +6 -0
  7. package/EntityId/package.json +6 -0
  8. package/EntityType/package.json +6 -0
  9. package/Envelope/package.json +6 -0
  10. package/HttpCommon/package.json +6 -0
  11. package/HttpRunner/package.json +6 -0
  12. package/HttpShardManager/package.json +6 -0
  13. package/MachineId/package.json +6 -0
  14. package/MessageStorage/package.json +6 -0
  15. package/README.md +2 -2
  16. package/Reply/package.json +6 -0
  17. package/Runner/package.json +6 -0
  18. package/RunnerAddress/package.json +6 -0
  19. package/RunnerHealth/package.json +6 -0
  20. package/RunnerServer/package.json +6 -0
  21. package/Runners/package.json +6 -0
  22. package/ShardStorage/package.json +6 -0
  23. package/Singleton/package.json +6 -0
  24. package/SingletonAddress/package.json +6 -0
  25. package/Snowflake/package.json +6 -0
  26. package/SocketRunner/package.json +6 -0
  27. package/SocketShardManager/package.json +6 -0
  28. package/SqlMessageStorage/package.json +6 -0
  29. package/SqlShardStorage/package.json +6 -0
  30. package/SynchronizedClock/package.json +6 -0
  31. package/dist/cjs/ClusterError.js +180 -0
  32. package/dist/cjs/ClusterError.js.map +1 -0
  33. package/dist/cjs/ClusterMetrics.js +63 -0
  34. package/dist/cjs/ClusterMetrics.js.map +1 -0
  35. package/dist/cjs/{Pods.js → ClusterSchema.js} +10 -22
  36. package/dist/cjs/ClusterSchema.js.map +1 -0
  37. package/dist/cjs/DeliverAt.js +30 -0
  38. package/dist/cjs/DeliverAt.js.map +1 -0
  39. package/dist/cjs/Entity.js +187 -0
  40. package/dist/cjs/Entity.js.map +1 -0
  41. package/dist/cjs/EntityAddress.js +54 -0
  42. package/dist/cjs/EntityAddress.js.map +1 -0
  43. package/dist/cjs/{AtLeastOnce.js → EntityId.js} +6 -7
  44. package/dist/cjs/EntityId.js.map +1 -0
  45. package/dist/cjs/{ShardManagerClient.js → EntityType.js} +5 -16
  46. package/dist/cjs/EntityType.js.map +1 -0
  47. package/dist/cjs/Envelope.js +168 -0
  48. package/dist/cjs/Envelope.js.map +1 -0
  49. package/dist/cjs/HttpCommon.js +49 -0
  50. package/dist/cjs/HttpCommon.js.map +1 -0
  51. package/dist/cjs/HttpRunner.js +108 -0
  52. package/dist/cjs/HttpRunner.js.map +1 -0
  53. package/dist/cjs/HttpShardManager.js +140 -0
  54. package/dist/cjs/HttpShardManager.js.map +1 -0
  55. package/dist/cjs/{AtLeastOnceStorage.js → MachineId.js} +11 -9
  56. package/dist/cjs/MachineId.js.map +1 -0
  57. package/dist/cjs/Message.js +99 -18
  58. package/dist/cjs/Message.js.map +1 -1
  59. package/dist/cjs/MessageStorage.js +356 -0
  60. package/dist/cjs/MessageStorage.js.map +1 -0
  61. package/dist/cjs/Reply.js +200 -0
  62. package/dist/cjs/Reply.js.map +1 -0
  63. package/dist/cjs/Runner.js +79 -0
  64. package/dist/cjs/Runner.js.map +1 -0
  65. package/dist/cjs/RunnerAddress.js +63 -0
  66. package/dist/cjs/RunnerAddress.js.map +1 -0
  67. package/dist/cjs/RunnerHealth.js +68 -0
  68. package/dist/cjs/RunnerHealth.js.map +1 -0
  69. package/dist/cjs/RunnerServer.js +125 -0
  70. package/dist/cjs/RunnerServer.js.map +1 -0
  71. package/dist/cjs/Runners.js +344 -0
  72. package/dist/cjs/Runners.js.map +1 -0
  73. package/dist/cjs/ShardId.js +7 -46
  74. package/dist/cjs/ShardId.js.map +1 -1
  75. package/dist/cjs/ShardManager.js +493 -8
  76. package/dist/cjs/ShardManager.js.map +1 -1
  77. package/dist/cjs/ShardStorage.js +139 -0
  78. package/dist/cjs/ShardStorage.js.map +1 -0
  79. package/dist/cjs/Sharding.js +732 -88
  80. package/dist/cjs/Sharding.js.map +1 -1
  81. package/dist/cjs/ShardingConfig.js +85 -18
  82. package/dist/cjs/ShardingConfig.js.map +1 -1
  83. package/dist/cjs/ShardingRegistrationEvent.js +26 -32
  84. package/dist/cjs/ShardingRegistrationEvent.js.map +1 -1
  85. package/dist/cjs/{ManagerConfig.js → Singleton.js} +11 -20
  86. package/dist/cjs/Singleton.js.map +1 -0
  87. package/dist/cjs/SingletonAddress.js +50 -0
  88. package/dist/cjs/SingletonAddress.js.map +1 -0
  89. package/dist/cjs/Snowflake.js +133 -0
  90. package/dist/cjs/Snowflake.js.map +1 -0
  91. package/dist/cjs/SocketRunner.js +40 -0
  92. package/dist/cjs/SocketRunner.js.map +1 -0
  93. package/dist/cjs/SocketShardManager.js +33 -0
  94. package/dist/cjs/SocketShardManager.js.map +1 -0
  95. package/dist/cjs/SqlMessageStorage.js +668 -0
  96. package/dist/cjs/SqlMessageStorage.js.map +1 -0
  97. package/dist/cjs/SqlShardStorage.js +228 -0
  98. package/dist/cjs/SqlShardStorage.js.map +1 -0
  99. package/dist/cjs/SynchronizedClock.js +66 -0
  100. package/dist/cjs/SynchronizedClock.js.map +1 -0
  101. package/dist/cjs/index.js +57 -45
  102. package/dist/cjs/internal/entityManager.js +311 -143
  103. package/dist/cjs/internal/entityManager.js.map +1 -1
  104. package/dist/cjs/internal/entityReaper.js +47 -0
  105. package/dist/cjs/internal/entityReaper.js.map +1 -0
  106. package/dist/cjs/internal/hash.js +20 -0
  107. package/dist/cjs/internal/hash.js.map +1 -0
  108. package/dist/cjs/internal/interruptors.js +9 -0
  109. package/dist/cjs/internal/interruptors.js.map +1 -0
  110. package/dist/cjs/internal/resourceMap.js +88 -0
  111. package/dist/cjs/internal/resourceMap.js.map +1 -0
  112. package/dist/cjs/internal/resourceRef.js +92 -0
  113. package/dist/cjs/internal/resourceRef.js.map +1 -0
  114. package/dist/cjs/internal/shardManager.js +219 -235
  115. package/dist/cjs/internal/shardManager.js.map +1 -1
  116. package/dist/dts/ClusterError.d.ts +169 -0
  117. package/dist/dts/ClusterError.d.ts.map +1 -0
  118. package/dist/dts/ClusterMetrics.d.ts +50 -0
  119. package/dist/dts/ClusterMetrics.d.ts.map +1 -0
  120. package/dist/dts/ClusterSchema.d.ts +13 -0
  121. package/dist/dts/ClusterSchema.d.ts.map +1 -0
  122. package/dist/dts/DeliverAt.d.ts +27 -0
  123. package/dist/dts/DeliverAt.d.ts.map +1 -0
  124. package/dist/dts/Entity.d.ts +180 -0
  125. package/dist/dts/Entity.d.ts.map +1 -0
  126. package/dist/dts/EntityAddress.d.ts +55 -0
  127. package/dist/dts/EntityAddress.d.ts.map +1 -0
  128. package/dist/dts/EntityId.d.ts +15 -0
  129. package/dist/dts/EntityId.d.ts.map +1 -0
  130. package/dist/dts/EntityType.d.ts +15 -0
  131. package/dist/dts/EntityType.d.ts.map +1 -0
  132. package/dist/dts/Envelope.d.ts +252 -0
  133. package/dist/dts/Envelope.d.ts.map +1 -0
  134. package/dist/dts/HttpCommon.d.ts +25 -0
  135. package/dist/dts/HttpCommon.d.ts.map +1 -0
  136. package/dist/dts/HttpRunner.d.ts +76 -0
  137. package/dist/dts/HttpRunner.d.ts.map +1 -0
  138. package/dist/dts/HttpShardManager.d.ts +119 -0
  139. package/dist/dts/HttpShardManager.d.ts.map +1 -0
  140. package/dist/dts/MachineId.d.ts +20 -0
  141. package/dist/dts/MachineId.d.ts.map +1 -0
  142. package/dist/dts/Message.d.ts +91 -74
  143. package/dist/dts/Message.d.ts.map +1 -1
  144. package/dist/dts/MessageStorage.d.ts +336 -0
  145. package/dist/dts/MessageStorage.d.ts.map +1 -0
  146. package/dist/dts/Reply.d.ts +171 -0
  147. package/dist/dts/Reply.d.ts.map +1 -0
  148. package/dist/dts/Runner.d.ts +81 -0
  149. package/dist/dts/Runner.d.ts.map +1 -0
  150. package/dist/dts/RunnerAddress.d.ts +56 -0
  151. package/dist/dts/RunnerAddress.d.ts.map +1 -0
  152. package/dist/dts/RunnerHealth.d.ts +54 -0
  153. package/dist/dts/RunnerHealth.d.ts.map +1 -0
  154. package/dist/dts/RunnerServer.d.ts +44 -0
  155. package/dist/dts/RunnerServer.d.ts.map +1 -0
  156. package/dist/dts/Runners.d.ts +161 -0
  157. package/dist/dts/Runners.d.ts.map +1 -0
  158. package/dist/dts/ShardId.d.ts +5 -55
  159. package/dist/dts/ShardId.d.ts.map +1 -1
  160. package/dist/dts/ShardManager.d.ts +435 -23
  161. package/dist/dts/ShardManager.d.ts.map +1 -1
  162. package/dist/dts/ShardStorage.d.ts +200 -0
  163. package/dist/dts/ShardStorage.d.ts.map +1 -0
  164. package/dist/dts/Sharding.d.ts +109 -131
  165. package/dist/dts/Sharding.d.ts.map +1 -1
  166. package/dist/dts/ShardingConfig.d.ts +147 -44
  167. package/dist/dts/ShardingConfig.d.ts.map +1 -1
  168. package/dist/dts/ShardingRegistrationEvent.d.ts +38 -23
  169. package/dist/dts/ShardingRegistrationEvent.d.ts.map +1 -1
  170. package/dist/dts/Singleton.d.ts +13 -0
  171. package/dist/dts/Singleton.d.ts.map +1 -0
  172. package/dist/dts/SingletonAddress.d.ts +49 -0
  173. package/dist/dts/SingletonAddress.d.ts.map +1 -0
  174. package/dist/dts/Snowflake.d.ts +121 -0
  175. package/dist/dts/Snowflake.d.ts.map +1 -0
  176. package/dist/dts/SocketRunner.d.ts +22 -0
  177. package/dist/dts/SocketRunner.d.ts.map +1 -0
  178. package/dist/dts/SocketShardManager.d.ts +17 -0
  179. package/dist/dts/SocketShardManager.d.ts.map +1 -0
  180. package/dist/dts/SqlMessageStorage.d.ts +43 -0
  181. package/dist/dts/SqlMessageStorage.d.ts.map +1 -0
  182. package/dist/dts/SqlShardStorage.d.ts +38 -0
  183. package/dist/dts/SqlShardStorage.d.ts.map +1 -0
  184. package/dist/dts/SynchronizedClock.d.ts +19 -0
  185. package/dist/dts/SynchronizedClock.d.ts.map +1 -0
  186. package/dist/dts/index.d.ts +48 -24
  187. package/dist/dts/index.d.ts.map +1 -1
  188. package/dist/dts/internal/entityReaper.d.ts +2 -0
  189. package/dist/dts/internal/entityReaper.d.ts.map +1 -0
  190. package/dist/dts/internal/hash.d.ts +2 -0
  191. package/dist/dts/internal/hash.d.ts.map +1 -0
  192. package/dist/dts/internal/interruptors.d.ts +2 -0
  193. package/dist/dts/internal/interruptors.d.ts.map +1 -0
  194. package/dist/dts/internal/resourceMap.d.ts +22 -0
  195. package/dist/dts/internal/resourceMap.d.ts.map +1 -0
  196. package/dist/dts/internal/resourceRef.d.ts +25 -0
  197. package/dist/dts/internal/resourceRef.d.ts.map +1 -0
  198. package/dist/dts/internal/shardManager.d.ts +1 -11
  199. package/dist/dts/internal/shardManager.d.ts.map +1 -1
  200. package/dist/esm/ClusterError.js +164 -0
  201. package/dist/esm/ClusterError.js.map +1 -0
  202. package/dist/esm/ClusterMetrics.js +54 -0
  203. package/dist/esm/ClusterMetrics.js.map +1 -0
  204. package/dist/esm/ClusterSchema.js +13 -0
  205. package/dist/esm/ClusterSchema.js.map +1 -0
  206. package/dist/esm/DeliverAt.js +22 -0
  207. package/dist/esm/DeliverAt.js.map +1 -0
  208. package/dist/esm/Entity.js +173 -0
  209. package/dist/esm/Entity.js.map +1 -0
  210. package/dist/esm/EntityAddress.js +44 -0
  211. package/dist/esm/EntityAddress.js.map +1 -0
  212. package/dist/esm/EntityId.js +10 -0
  213. package/dist/esm/EntityId.js.map +1 -0
  214. package/dist/esm/EntityType.js +10 -0
  215. package/dist/esm/EntityType.js.map +1 -0
  216. package/dist/esm/Envelope.js +154 -0
  217. package/dist/esm/Envelope.js.map +1 -0
  218. package/dist/esm/HttpCommon.js +38 -0
  219. package/dist/esm/HttpCommon.js.map +1 -0
  220. package/dist/esm/HttpRunner.js +98 -0
  221. package/dist/esm/HttpRunner.js.map +1 -0
  222. package/dist/esm/HttpShardManager.js +128 -0
  223. package/dist/esm/HttpShardManager.js.map +1 -0
  224. package/dist/esm/MachineId.js +17 -0
  225. package/dist/esm/MachineId.js.map +1 -0
  226. package/dist/esm/Message.js +88 -17
  227. package/dist/esm/Message.js.map +1 -1
  228. package/dist/esm/MessageStorage.js +345 -0
  229. package/dist/esm/MessageStorage.js.map +1 -0
  230. package/dist/esm/Reply.js +184 -0
  231. package/dist/esm/Reply.js.map +1 -0
  232. package/dist/esm/Runner.js +68 -0
  233. package/dist/esm/Runner.js.map +1 -0
  234. package/dist/esm/RunnerAddress.js +52 -0
  235. package/dist/esm/RunnerAddress.js.map +1 -0
  236. package/dist/esm/RunnerHealth.js +58 -0
  237. package/dist/esm/RunnerHealth.js.map +1 -0
  238. package/dist/esm/RunnerServer.js +116 -0
  239. package/dist/esm/RunnerServer.js.map +1 -0
  240. package/dist/esm/Runners.js +332 -0
  241. package/dist/esm/Runners.js.map +1 -0
  242. package/dist/esm/ShardId.js +5 -42
  243. package/dist/esm/ShardId.js.map +1 -1
  244. package/dist/esm/ShardManager.js +486 -7
  245. package/dist/esm/ShardManager.js.map +1 -1
  246. package/dist/esm/ShardStorage.js +129 -0
  247. package/dist/esm/ShardStorage.js.map +1 -0
  248. package/dist/esm/Sharding.js +730 -87
  249. package/dist/esm/Sharding.js.map +1 -1
  250. package/dist/esm/ShardingConfig.js +80 -17
  251. package/dist/esm/ShardingConfig.js.map +1 -1
  252. package/dist/esm/ShardingRegistrationEvent.js +19 -29
  253. package/dist/esm/ShardingRegistrationEvent.js.map +1 -1
  254. package/dist/esm/Singleton.js +15 -0
  255. package/dist/esm/Singleton.js.map +1 -0
  256. package/dist/esm/SingletonAddress.js +40 -0
  257. package/dist/esm/SingletonAddress.js.map +1 -0
  258. package/dist/esm/Snowflake.js +117 -0
  259. package/dist/esm/Snowflake.js.map +1 -0
  260. package/dist/esm/SocketRunner.js +31 -0
  261. package/dist/esm/SocketRunner.js.map +1 -0
  262. package/dist/esm/SocketShardManager.js +24 -0
  263. package/dist/esm/SocketShardManager.js.map +1 -0
  264. package/dist/esm/SqlMessageStorage.js +658 -0
  265. package/dist/esm/SqlMessageStorage.js.map +1 -0
  266. package/dist/esm/SqlShardStorage.js +218 -0
  267. package/dist/esm/SqlShardStorage.js.map +1 -0
  268. package/dist/esm/SynchronizedClock.js +57 -0
  269. package/dist/esm/SynchronizedClock.js.map +1 -0
  270. package/dist/esm/index.js +48 -24
  271. package/dist/esm/index.js.map +1 -1
  272. package/dist/esm/internal/entityManager.js +311 -142
  273. package/dist/esm/internal/entityManager.js.map +1 -1
  274. package/dist/esm/internal/entityReaper.js +38 -0
  275. package/dist/esm/internal/entityReaper.js.map +1 -0
  276. package/dist/esm/internal/hash.js +12 -0
  277. package/dist/esm/internal/hash.js.map +1 -0
  278. package/dist/esm/internal/interruptors.js +3 -0
  279. package/dist/esm/internal/interruptors.js.map +1 -0
  280. package/dist/esm/internal/resourceMap.js +79 -0
  281. package/dist/esm/internal/resourceMap.js.map +1 -0
  282. package/dist/esm/internal/resourceRef.js +83 -0
  283. package/dist/esm/internal/resourceRef.js.map +1 -0
  284. package/dist/esm/internal/shardManager.js +217 -233
  285. package/dist/esm/internal/shardManager.js.map +1 -1
  286. package/package.json +212 -154
  287. package/src/ClusterError.ts +193 -0
  288. package/src/ClusterMetrics.ts +62 -0
  289. package/src/ClusterSchema.ts +13 -0
  290. package/src/DeliverAt.ts +36 -0
  291. package/src/Entity.ts +438 -0
  292. package/src/EntityAddress.ts +55 -0
  293. package/src/EntityId.ts +16 -0
  294. package/src/EntityType.ts +16 -0
  295. package/src/Envelope.ts +352 -0
  296. package/src/HttpCommon.ts +73 -0
  297. package/src/HttpRunner.ts +196 -0
  298. package/src/HttpShardManager.ts +273 -0
  299. package/src/MachineId.ts +27 -0
  300. package/src/Message.ts +143 -92
  301. package/src/MessageStorage.ts +697 -0
  302. package/src/Reply.ts +295 -0
  303. package/src/Runner.ts +84 -0
  304. package/src/RunnerAddress.ts +61 -0
  305. package/src/RunnerHealth.ts +87 -0
  306. package/src/RunnerServer.ts +156 -0
  307. package/src/Runners.ts +533 -0
  308. package/src/ShardId.ts +10 -62
  309. package/src/ShardManager.ts +780 -29
  310. package/src/ShardStorage.ts +289 -0
  311. package/src/Sharding.ts +1060 -183
  312. package/src/ShardingConfig.ts +186 -45
  313. package/src/ShardingRegistrationEvent.ts +38 -39
  314. package/src/Singleton.ts +20 -0
  315. package/src/SingletonAddress.ts +47 -0
  316. package/src/Snowflake.ts +194 -0
  317. package/src/SocketRunner.ts +59 -0
  318. package/src/SocketShardManager.ts +48 -0
  319. package/src/SqlMessageStorage.ts +833 -0
  320. package/src/SqlShardStorage.ts +292 -0
  321. package/src/SynchronizedClock.ts +82 -0
  322. package/src/index.ts +54 -24
  323. package/src/internal/entityManager.ts +464 -361
  324. package/src/internal/entityReaper.ts +53 -0
  325. package/src/internal/hash.ts +11 -0
  326. package/src/internal/interruptors.ts +4 -0
  327. package/src/internal/resourceMap.ts +89 -0
  328. package/src/internal/resourceRef.ts +88 -0
  329. package/src/internal/shardManager.ts +273 -546
  330. package/AtLeastOnce/package.json +0 -6
  331. package/AtLeastOnceStorage/package.json +0 -6
  332. package/Broadcaster/package.json +0 -6
  333. package/ManagerConfig/package.json +0 -6
  334. package/MessageState/package.json +0 -6
  335. package/Messenger/package.json +0 -6
  336. package/Pod/package.json +0 -6
  337. package/PodAddress/package.json +0 -6
  338. package/Pods/package.json +0 -6
  339. package/PodsHealth/package.json +0 -6
  340. package/PoisonPill/package.json +0 -6
  341. package/RecipientAddress/package.json +0 -6
  342. package/RecipientBehaviour/package.json +0 -6
  343. package/RecipientBehaviourContext/package.json +0 -6
  344. package/RecipientType/package.json +0 -6
  345. package/Serialization/package.json +0 -6
  346. package/SerializedEnvelope/package.json +0 -6
  347. package/SerializedMessage/package.json +0 -6
  348. package/ShardManagerClient/package.json +0 -6
  349. package/ShardingEvent/package.json +0 -6
  350. package/ShardingException/package.json +0 -6
  351. package/Storage/package.json +0 -6
  352. package/dist/cjs/AtLeastOnce.js.map +0 -1
  353. package/dist/cjs/AtLeastOnceStorage.js.map +0 -1
  354. package/dist/cjs/Broadcaster.js +0 -6
  355. package/dist/cjs/Broadcaster.js.map +0 -1
  356. package/dist/cjs/ManagerConfig.js.map +0 -1
  357. package/dist/cjs/MessageState.js +0 -55
  358. package/dist/cjs/MessageState.js.map +0 -1
  359. package/dist/cjs/Messenger.js +0 -6
  360. package/dist/cjs/Messenger.js.map +0 -1
  361. package/dist/cjs/Pod.js +0 -78
  362. package/dist/cjs/Pod.js.map +0 -1
  363. package/dist/cjs/PodAddress.js +0 -77
  364. package/dist/cjs/PodAddress.js.map +0 -1
  365. package/dist/cjs/Pods.js.map +0 -1
  366. package/dist/cjs/PodsHealth.js +0 -41
  367. package/dist/cjs/PodsHealth.js.map +0 -1
  368. package/dist/cjs/PoisonPill.js +0 -78
  369. package/dist/cjs/PoisonPill.js.map +0 -1
  370. package/dist/cjs/RecipientAddress.js +0 -79
  371. package/dist/cjs/RecipientAddress.js.map +0 -1
  372. package/dist/cjs/RecipientBehaviour.js +0 -38
  373. package/dist/cjs/RecipientBehaviour.js.map +0 -1
  374. package/dist/cjs/RecipientBehaviourContext.js +0 -64
  375. package/dist/cjs/RecipientBehaviourContext.js.map +0 -1
  376. package/dist/cjs/RecipientType.js +0 -123
  377. package/dist/cjs/RecipientType.js.map +0 -1
  378. package/dist/cjs/Serialization.js +0 -32
  379. package/dist/cjs/Serialization.js.map +0 -1
  380. package/dist/cjs/SerializedEnvelope.js +0 -87
  381. package/dist/cjs/SerializedEnvelope.js.map +0 -1
  382. package/dist/cjs/SerializedMessage.js +0 -64
  383. package/dist/cjs/SerializedMessage.js.map +0 -1
  384. package/dist/cjs/ShardManagerClient.js.map +0 -1
  385. package/dist/cjs/ShardingEvent.js +0 -72
  386. package/dist/cjs/ShardingEvent.js.map +0 -1
  387. package/dist/cjs/ShardingException.js +0 -107
  388. package/dist/cjs/ShardingException.js.map +0 -1
  389. package/dist/cjs/Storage.js +0 -40
  390. package/dist/cjs/Storage.js.map +0 -1
  391. package/dist/cjs/internal/atLeastOnce.js +0 -35
  392. package/dist/cjs/internal/atLeastOnce.js.map +0 -1
  393. package/dist/cjs/internal/atLeastOnceStorage.js +0 -163
  394. package/dist/cjs/internal/atLeastOnceStorage.js.map +0 -1
  395. package/dist/cjs/internal/entityState.js +0 -47
  396. package/dist/cjs/internal/entityState.js.map +0 -1
  397. package/dist/cjs/internal/managerConfig.js +0 -46
  398. package/dist/cjs/internal/managerConfig.js.map +0 -1
  399. package/dist/cjs/internal/message.js +0 -48
  400. package/dist/cjs/internal/message.js.map +0 -1
  401. package/dist/cjs/internal/messageState.js +0 -79
  402. package/dist/cjs/internal/messageState.js.map +0 -1
  403. package/dist/cjs/internal/podWithMetadata.js +0 -54
  404. package/dist/cjs/internal/podWithMetadata.js.map +0 -1
  405. package/dist/cjs/internal/pods.js +0 -35
  406. package/dist/cjs/internal/pods.js.map +0 -1
  407. package/dist/cjs/internal/podsHealth.js +0 -40
  408. package/dist/cjs/internal/podsHealth.js.map +0 -1
  409. package/dist/cjs/internal/recipientBehaviour.js +0 -52
  410. package/dist/cjs/internal/recipientBehaviour.js.map +0 -1
  411. package/dist/cjs/internal/recipientBehaviourContext.js +0 -36
  412. package/dist/cjs/internal/recipientBehaviourContext.js.map +0 -1
  413. package/dist/cjs/internal/serialization.js +0 -48
  414. package/dist/cjs/internal/serialization.js.map +0 -1
  415. package/dist/cjs/internal/shardManagerClient.js +0 -48
  416. package/dist/cjs/internal/shardManagerClient.js.map +0 -1
  417. package/dist/cjs/internal/shardManagerState.js +0 -44
  418. package/dist/cjs/internal/shardManagerState.js.map +0 -1
  419. package/dist/cjs/internal/sharding.js +0 -306
  420. package/dist/cjs/internal/sharding.js.map +0 -1
  421. package/dist/cjs/internal/shardingConfig.js +0 -56
  422. package/dist/cjs/internal/shardingConfig.js.map +0 -1
  423. package/dist/cjs/internal/storage.js +0 -52
  424. package/dist/cjs/internal/storage.js.map +0 -1
  425. package/dist/cjs/internal/utils.js +0 -69
  426. package/dist/cjs/internal/utils.js.map +0 -1
  427. package/dist/dts/AtLeastOnce.d.ts +0 -20
  428. package/dist/dts/AtLeastOnce.d.ts.map +0 -1
  429. package/dist/dts/AtLeastOnceStorage.d.ts +0 -75
  430. package/dist/dts/AtLeastOnceStorage.d.ts.map +0 -1
  431. package/dist/dts/Broadcaster.d.ts +0 -32
  432. package/dist/dts/Broadcaster.d.ts.map +0 -1
  433. package/dist/dts/ManagerConfig.d.ts +0 -61
  434. package/dist/dts/ManagerConfig.d.ts.map +0 -1
  435. package/dist/dts/MessageState.d.ts +0 -107
  436. package/dist/dts/MessageState.d.ts.map +0 -1
  437. package/dist/dts/Messenger.d.ts +0 -32
  438. package/dist/dts/Messenger.d.ts.map +0 -1
  439. package/dist/dts/Pod.d.ts +0 -81
  440. package/dist/dts/Pod.d.ts.map +0 -1
  441. package/dist/dts/PodAddress.d.ts +0 -80
  442. package/dist/dts/PodAddress.d.ts.map +0 -1
  443. package/dist/dts/Pods.d.ts +0 -78
  444. package/dist/dts/Pods.d.ts.map +0 -1
  445. package/dist/dts/PodsHealth.d.ts +0 -66
  446. package/dist/dts/PodsHealth.d.ts.map +0 -1
  447. package/dist/dts/PoisonPill.d.ts +0 -78
  448. package/dist/dts/PoisonPill.d.ts.map +0 -1
  449. package/dist/dts/RecipientAddress.d.ts +0 -57
  450. package/dist/dts/RecipientAddress.d.ts.map +0 -1
  451. package/dist/dts/RecipientBehaviour.d.ts +0 -72
  452. package/dist/dts/RecipientBehaviour.d.ts.map +0 -1
  453. package/dist/dts/RecipientBehaviourContext.d.ts +0 -83
  454. package/dist/dts/RecipientBehaviourContext.d.ts.map +0 -1
  455. package/dist/dts/RecipientType.d.ts +0 -93
  456. package/dist/dts/RecipientType.d.ts.map +0 -1
  457. package/dist/dts/Serialization.d.ts +0 -58
  458. package/dist/dts/Serialization.d.ts.map +0 -1
  459. package/dist/dts/SerializedEnvelope.d.ts +0 -86
  460. package/dist/dts/SerializedEnvelope.d.ts.map +0 -1
  461. package/dist/dts/SerializedMessage.d.ts +0 -66
  462. package/dist/dts/SerializedMessage.d.ts.map +0 -1
  463. package/dist/dts/ShardManagerClient.d.ts +0 -50
  464. package/dist/dts/ShardManagerClient.d.ts.map +0 -1
  465. package/dist/dts/ShardingEvent.d.ts +0 -90
  466. package/dist/dts/ShardingEvent.d.ts.map +0 -1
  467. package/dist/dts/ShardingException.d.ts +0 -125
  468. package/dist/dts/ShardingException.d.ts.map +0 -1
  469. package/dist/dts/Storage.d.ts +0 -78
  470. package/dist/dts/Storage.d.ts.map +0 -1
  471. package/dist/dts/internal/atLeastOnce.d.ts +0 -2
  472. package/dist/dts/internal/atLeastOnce.d.ts.map +0 -1
  473. package/dist/dts/internal/atLeastOnceStorage.d.ts +0 -2
  474. package/dist/dts/internal/atLeastOnceStorage.d.ts.map +0 -1
  475. package/dist/dts/internal/entityState.d.ts +0 -21
  476. package/dist/dts/internal/entityState.d.ts.map +0 -1
  477. package/dist/dts/internal/managerConfig.d.ts +0 -2
  478. package/dist/dts/internal/managerConfig.d.ts.map +0 -1
  479. package/dist/dts/internal/message.d.ts +0 -9
  480. package/dist/dts/internal/message.d.ts.map +0 -1
  481. package/dist/dts/internal/messageState.d.ts +0 -2
  482. package/dist/dts/internal/messageState.d.ts.map +0 -1
  483. package/dist/dts/internal/podWithMetadata.d.ts +0 -2
  484. package/dist/dts/internal/podWithMetadata.d.ts.map +0 -1
  485. package/dist/dts/internal/pods.d.ts +0 -2
  486. package/dist/dts/internal/pods.d.ts.map +0 -1
  487. package/dist/dts/internal/podsHealth.d.ts +0 -2
  488. package/dist/dts/internal/podsHealth.d.ts.map +0 -1
  489. package/dist/dts/internal/recipientBehaviour.d.ts +0 -2
  490. package/dist/dts/internal/recipientBehaviour.d.ts.map +0 -1
  491. package/dist/dts/internal/recipientBehaviourContext.d.ts +0 -2
  492. package/dist/dts/internal/recipientBehaviourContext.d.ts.map +0 -1
  493. package/dist/dts/internal/serialization.d.ts +0 -2
  494. package/dist/dts/internal/serialization.d.ts.map +0 -1
  495. package/dist/dts/internal/shardManagerClient.d.ts +0 -2
  496. package/dist/dts/internal/shardManagerClient.d.ts.map +0 -1
  497. package/dist/dts/internal/shardManagerState.d.ts +0 -26
  498. package/dist/dts/internal/shardManagerState.d.ts.map +0 -1
  499. package/dist/dts/internal/sharding.d.ts +0 -2
  500. package/dist/dts/internal/sharding.d.ts.map +0 -1
  501. package/dist/dts/internal/shardingConfig.d.ts +0 -2
  502. package/dist/dts/internal/shardingConfig.d.ts.map +0 -1
  503. package/dist/dts/internal/storage.d.ts +0 -2
  504. package/dist/dts/internal/storage.d.ts.map +0 -1
  505. package/dist/dts/internal/utils.d.ts +0 -2
  506. package/dist/dts/internal/utils.d.ts.map +0 -1
  507. package/dist/esm/AtLeastOnce.js +0 -12
  508. package/dist/esm/AtLeastOnce.js.map +0 -1
  509. package/dist/esm/AtLeastOnceStorage.js +0 -17
  510. package/dist/esm/AtLeastOnceStorage.js.map +0 -1
  511. package/dist/esm/Broadcaster.js +0 -2
  512. package/dist/esm/Broadcaster.js.map +0 -1
  513. package/dist/esm/ManagerConfig.js +0 -26
  514. package/dist/esm/ManagerConfig.js.map +0 -1
  515. package/dist/esm/MessageState.js +0 -47
  516. package/dist/esm/MessageState.js.map +0 -1
  517. package/dist/esm/Messenger.js +0 -2
  518. package/dist/esm/Messenger.js.map +0 -1
  519. package/dist/esm/Pod.js +0 -65
  520. package/dist/esm/Pod.js.map +0 -1
  521. package/dist/esm/PodAddress.js +0 -64
  522. package/dist/esm/PodAddress.js.map +0 -1
  523. package/dist/esm/Pods.js +0 -27
  524. package/dist/esm/Pods.js.map +0 -1
  525. package/dist/esm/PodsHealth.js +0 -33
  526. package/dist/esm/PodsHealth.js.map +0 -1
  527. package/dist/esm/PoisonPill.js +0 -65
  528. package/dist/esm/PoisonPill.js.map +0 -1
  529. package/dist/esm/RecipientAddress.js +0 -67
  530. package/dist/esm/RecipientAddress.js.map +0 -1
  531. package/dist/esm/RecipientBehaviour.js +0 -30
  532. package/dist/esm/RecipientBehaviour.js.map +0 -1
  533. package/dist/esm/RecipientBehaviourContext.js +0 -56
  534. package/dist/esm/RecipientBehaviourContext.js.map +0 -1
  535. package/dist/esm/RecipientType.js +0 -108
  536. package/dist/esm/RecipientType.js.map +0 -1
  537. package/dist/esm/Serialization.js +0 -24
  538. package/dist/esm/Serialization.js.map +0 -1
  539. package/dist/esm/SerializedEnvelope.js +0 -74
  540. package/dist/esm/SerializedEnvelope.js.map +0 -1
  541. package/dist/esm/SerializedMessage.js +0 -51
  542. package/dist/esm/SerializedMessage.js.map +0 -1
  543. package/dist/esm/ShardManagerClient.js +0 -22
  544. package/dist/esm/ShardManagerClient.js.map +0 -1
  545. package/dist/esm/ShardingEvent.js +0 -62
  546. package/dist/esm/ShardingEvent.js.map +0 -1
  547. package/dist/esm/ShardingException.js +0 -91
  548. package/dist/esm/ShardingException.js.map +0 -1
  549. package/dist/esm/Storage.js +0 -32
  550. package/dist/esm/Storage.js.map +0 -1
  551. package/dist/esm/internal/atLeastOnce.js +0 -26
  552. package/dist/esm/internal/atLeastOnce.js.map +0 -1
  553. package/dist/esm/internal/atLeastOnceStorage.js +0 -154
  554. package/dist/esm/internal/atLeastOnceStorage.js.map +0 -1
  555. package/dist/esm/internal/entityState.js +0 -35
  556. package/dist/esm/internal/entityState.js.map +0 -1
  557. package/dist/esm/internal/managerConfig.js +0 -38
  558. package/dist/esm/internal/managerConfig.js.map +0 -1
  559. package/dist/esm/internal/message.js +0 -35
  560. package/dist/esm/internal/message.js.map +0 -1
  561. package/dist/esm/internal/messageState.js +0 -66
  562. package/dist/esm/internal/messageState.js.map +0 -1
  563. package/dist/esm/internal/podWithMetadata.js +0 -41
  564. package/dist/esm/internal/podWithMetadata.js.map +0 -1
  565. package/dist/esm/internal/pods.js +0 -25
  566. package/dist/esm/internal/pods.js.map +0 -1
  567. package/dist/esm/internal/podsHealth.js +0 -30
  568. package/dist/esm/internal/podsHealth.js.map +0 -1
  569. package/dist/esm/internal/recipientBehaviour.js +0 -42
  570. package/dist/esm/internal/recipientBehaviour.js.map +0 -1
  571. package/dist/esm/internal/recipientBehaviourContext.js +0 -26
  572. package/dist/esm/internal/recipientBehaviourContext.js.map +0 -1
  573. package/dist/esm/internal/serialization.js +0 -38
  574. package/dist/esm/internal/serialization.js.map +0 -1
  575. package/dist/esm/internal/shardManagerClient.js +0 -38
  576. package/dist/esm/internal/shardManagerClient.js.map +0 -1
  577. package/dist/esm/internal/shardManagerState.js +0 -36
  578. package/dist/esm/internal/shardManagerState.js.map +0 -1
  579. package/dist/esm/internal/sharding.js +0 -288
  580. package/dist/esm/internal/sharding.js.map +0 -1
  581. package/dist/esm/internal/shardingConfig.js +0 -47
  582. package/dist/esm/internal/shardingConfig.js.map +0 -1
  583. package/dist/esm/internal/storage.js +0 -42
  584. package/dist/esm/internal/storage.js.map +0 -1
  585. package/dist/esm/internal/utils.js +0 -56
  586. package/dist/esm/internal/utils.js.map +0 -1
  587. package/src/AtLeastOnce.ts +0 -28
  588. package/src/AtLeastOnceStorage.ts +0 -96
  589. package/src/Broadcaster.ts +0 -48
  590. package/src/ManagerConfig.ts +0 -67
  591. package/src/MessageState.ts +0 -126
  592. package/src/Messenger.ts +0 -40
  593. package/src/Pod.ts +0 -95
  594. package/src/PodAddress.ts +0 -94
  595. package/src/Pods.ts +0 -100
  596. package/src/PodsHealth.ts +0 -74
  597. package/src/PoisonPill.ts +0 -105
  598. package/src/RecipientAddress.ts +0 -72
  599. package/src/RecipientBehaviour.ts +0 -108
  600. package/src/RecipientBehaviourContext.ts +0 -101
  601. package/src/RecipientType.ts +0 -134
  602. package/src/Serialization.ts +0 -72
  603. package/src/SerializedEnvelope.ts +0 -108
  604. package/src/SerializedMessage.ts +0 -82
  605. package/src/ShardManagerClient.ts +0 -57
  606. package/src/ShardingEvent.ts +0 -121
  607. package/src/ShardingException.ts +0 -151
  608. package/src/Storage.ts +0 -92
  609. package/src/internal/atLeastOnce.ts +0 -59
  610. package/src/internal/atLeastOnceStorage.ts +0 -218
  611. package/src/internal/entityState.ts +0 -64
  612. package/src/internal/managerConfig.ts +0 -84
  613. package/src/internal/message.ts +0 -63
  614. package/src/internal/messageState.ts +0 -98
  615. package/src/internal/podWithMetadata.ts +0 -72
  616. package/src/internal/pods.ts +0 -29
  617. package/src/internal/podsHealth.ts +0 -39
  618. package/src/internal/recipientBehaviour.ts +0 -133
  619. package/src/internal/recipientBehaviourContext.ts +0 -70
  620. package/src/internal/serialization.ts +0 -63
  621. package/src/internal/shardManagerClient.ts +0 -49
  622. package/src/internal/shardManagerState.ts +0 -80
  623. package/src/internal/sharding.ts +0 -789
  624. package/src/internal/shardingConfig.ts +0 -97
  625. package/src/internal/storage.ts +0 -60
  626. package/src/internal/utils.ts +0 -54
@@ -3,266 +3,250 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.ShardManagerTypeId = void 0;
6
+ exports.State = exports.RunnerWithMetadata = void 0;
7
7
  exports.decideAssignmentsForUnassignedShards = decideAssignmentsForUnassignedShards;
8
8
  exports.decideAssignmentsForUnbalancedShards = decideAssignmentsForUnbalancedShards;
9
- exports.shardManagerTag = exports.live = void 0;
10
- var Chunk = _interopRequireWildcard(require("effect/Chunk"));
9
+ var Arr = _interopRequireWildcard(require("effect/Array"));
11
10
  var Clock = _interopRequireWildcard(require("effect/Clock"));
12
- var _Context = require("effect/Context");
13
11
  var Effect = _interopRequireWildcard(require("effect/Effect"));
14
- var _Equal = require("effect/Equal");
15
12
  var _Function = require("effect/Function");
16
- var HashMap = _interopRequireWildcard(require("effect/HashMap"));
17
- var HashSet = _interopRequireWildcard(require("effect/HashSet"));
18
- var Layer = _interopRequireWildcard(require("effect/Layer"));
19
- var List = _interopRequireWildcard(require("effect/List"));
13
+ var MutableHashMap = _interopRequireWildcard(require("effect/MutableHashMap"));
14
+ var MutableHashSet = _interopRequireWildcard(require("effect/MutableHashSet"));
20
15
  var Option = _interopRequireWildcard(require("effect/Option"));
21
- var PubSub = _interopRequireWildcard(require("effect/PubSub"));
22
- var Schedule = _interopRequireWildcard(require("effect/Schedule"));
23
- var Stream = _interopRequireWildcard(require("effect/Stream"));
24
- var RefSynchronized = _interopRequireWildcard(require("effect/SynchronizedRef"));
25
- var ManagerConfig = _interopRequireWildcard(require("../ManagerConfig.js"));
26
- var Pods = _interopRequireWildcard(require("../Pods.js"));
27
- var PodsHealth = _interopRequireWildcard(require("../PodsHealth.js"));
28
- var ShardId = _interopRequireWildcard(require("../ShardId.js"));
29
- var ShardingEvent = _interopRequireWildcard(require("../ShardingEvent.js"));
30
- var ShardingException = _interopRequireWildcard(require("../ShardingException.js"));
31
- var Storage = _interopRequireWildcard(require("../Storage.js"));
32
- var PodWithMetadata = _interopRequireWildcard(require("./podWithMetadata.js"));
33
- var ShardManagerState = _interopRequireWildcard(require("./shardManagerState.js"));
34
- var _utils = require("./utils.js");
16
+ var Order = _interopRequireWildcard(require("effect/Order"));
17
+ var _RunnerHealth = require("../RunnerHealth.js");
18
+ var _ShardId = require("../ShardId.js");
19
+ var _ShardStorage = require("../ShardStorage.js");
35
20
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
36
21
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
37
- /**
38
- * @since 1.0.0
39
- */
40
-
41
- /** @internal */
42
- const ShardManagerSymbolKey = "@effect/cluster/ShardManager";
43
- /** @internal */
44
- const ShardManagerTypeId = exports.ShardManagerTypeId = /*#__PURE__*/Symbol.for(ShardManagerSymbolKey);
45
22
  /** @internal */
46
- const shardManagerTag = exports.shardManagerTag = /*#__PURE__*/(0, _Context.GenericTag)(ShardManagerSymbolKey);
47
- /** @internal */
48
- function make(layerScope, stateRef, rebalanceSemaphore, eventsHub, healthApi, podApi, stateRepository, config) {
49
- const getAssignments = (0, _Function.pipe)(RefSynchronized.get(stateRef), Effect.map(_ => _.shards));
50
- const getShardingEvents = Stream.fromPubSub(eventsHub);
51
- function register(pod) {
52
- return (0, _Function.pipe)(Effect.logDebug("Registering " + pod.address + "@" + pod.version), Effect.zipRight(RefSynchronized.updateAndGetEffect(stateRef, state => (0, _Function.pipe)(Effect.flatMap(Effect.clock, _ => _.currentTimeMillis), Effect.map(cdt => ShardManagerState.make(HashMap.set(state.pods, pod.address, PodWithMetadata.make(pod, cdt)), state.shards))))), Effect.zipLeft(PubSub.publish(eventsHub, ShardingEvent.PodRegistered(pod.address))), Effect.flatMap(state => Effect.when(rebalance(false), () => HashSet.size(state.unassignedShards) > 0)), Effect.zipRight(Effect.forkIn(layerScope)(persistPods)), Effect.asVoid);
23
+ class State {
24
+ runners;
25
+ shards;
26
+ static fromStorage = /*#__PURE__*/Effect.fnUntraced(function* (numberOfShards) {
27
+ const storage = yield* _ShardStorage.ShardStorage;
28
+ const runnerHealth = yield* _RunnerHealth.RunnerHealth;
29
+ // Fetch registered runners and shard assignments from cluster storage
30
+ const storedRunners = yield* storage.getRunners;
31
+ const storedAssignments = yield* storage.getAssignments;
32
+ // Determine which runners are still alive
33
+ const deadRunners = Arr.empty();
34
+ const aliveRunners = MutableHashMap.empty();
35
+ yield* Effect.forEach(storedRunners, ([address, runner]) => Effect.map(runnerHealth.isAlive(address), isAlive => {
36
+ if (isAlive) {
37
+ MutableHashMap.set(aliveRunners, address, runner);
38
+ } else {
39
+ deadRunners.push(runner);
40
+ }
41
+ }), {
42
+ concurrency: "unbounded",
43
+ discard: true
44
+ });
45
+ if (deadRunners.length > 0) {
46
+ yield* Effect.logWarning("Ignoring runners that are no longer considered alive:", deadRunners);
47
+ }
48
+ // Determine which shards remain unassigned to a runner
49
+ const assignedShards = new Map();
50
+ const invalidAssignments = Arr.empty();
51
+ for (const [shard, address] of storedAssignments) {
52
+ if (Option.isSome(address) && MutableHashMap.has(aliveRunners, address.value)) {
53
+ assignedShards.set(shard, address.value);
54
+ } else if (Option.isSome(address)) {
55
+ invalidAssignments.push([shard, address.value]);
56
+ }
57
+ }
58
+ if (invalidAssignments.length > 0) {
59
+ yield* Effect.logWarning("Ignoring shard assignments for runners that are no longer considered alive: ", invalidAssignments);
60
+ }
61
+ // Construct the initial state
62
+ const now = yield* Clock.currentTimeMillis;
63
+ const runnerState = MutableHashMap.empty();
64
+ for (const [address, runner] of aliveRunners) {
65
+ MutableHashMap.set(runnerState, address, RunnerWithMetadata({
66
+ runner,
67
+ registeredAt: now
68
+ }));
69
+ }
70
+ const shardState = new Map();
71
+ for (let n = 1; n <= numberOfShards; n++) {
72
+ const shardId = _ShardId.ShardId.make(n);
73
+ shardState.set(shardId, Option.fromNullable(assignedShards.get(shardId)));
74
+ }
75
+ return new State(runnerState, shardState);
76
+ });
77
+ constructor(runners, shards) {
78
+ this.runners = runners;
79
+ this.shards = shards;
53
80
  }
54
- function stateHasPod(podAddress) {
55
- return (0, _Function.pipe)(RefSynchronized.get(stateRef), Effect.map(_ => HashMap.has(_.pods, podAddress)));
81
+ get maxVersion() {
82
+ if (MutableHashMap.size(this.runners) === 0) return Option.none();
83
+ let version = undefined;
84
+ for (const [, meta] of this.runners) {
85
+ if (version === undefined || meta.runner.version > version) {
86
+ version = meta.runner.version;
87
+ }
88
+ }
89
+ return Option.some(version);
56
90
  }
57
- function notifyUnhealthyPod(podAddress) {
58
- return (0, _Function.pipe)(Effect.whenEffect((0, _Function.pipe)(PubSub.publish(eventsHub, ShardingEvent.PodHealthChecked(podAddress)), Effect.zipRight(Effect.unlessEffect(Effect.zipRight(Effect.logWarning(`${podAddress} is not alive, unregistering`), unregister(podAddress)), healthApi.isAlive(podAddress)))), stateHasPod(podAddress)), Effect.asVoid);
91
+ allRunnersHaveVersion(version) {
92
+ return version.pipe(Option.map(max => Arr.every(this.runnerVersions, version => version === max)), Option.getOrElse(_Function.constFalse));
59
93
  }
60
- const checkAllPodsHealth = (0, _Function.pipe)(RefSynchronized.get(stateRef), Effect.map(_ => HashMap.keySet(_.pods)), Effect.flatMap(_ => Effect.forEach(_, notifyUnhealthyPod, {
61
- concurrency: 4,
62
- discard: true
63
- })));
64
- function unregister(podAddress) {
65
- const eff = (0, _Function.pipe)(Effect.Do, Effect.zipLeft(Effect.logDebug(`Unregistering ${podAddress}`)), Effect.bind("unassignments", _ => (0, _Function.pipe)(stateRef, RefSynchronized.modify(state => [(0, _Function.pipe)(state.shards, HashMap.filter(pod => (0, _Equal.equals)(pod)(Option.some(podAddress))), HashMap.keySet), {
66
- ...state,
67
- pods: HashMap.remove(state.pods, podAddress),
68
- shards: HashMap.map(state.shards, _ => (0, _Equal.equals)(_)(Option.some(podAddress)) ? Option.none() : _)
69
- }]))), Effect.tap(_ => PubSub.publish(eventsHub, ShardingEvent.PodUnregistered(podAddress))), Effect.tap(_ => Effect.when(PubSub.publish(eventsHub, ShardingEvent.ShardsUnassigned(podAddress, _.unassignments)), () => HashSet.size(_.unassignments) > 0)), Effect.zipLeft(Effect.forkIn(layerScope)(persistPods)), Effect.zipLeft(Effect.forkIn(layerScope)(rebalance(true))));
70
- return Effect.asVoid(Effect.whenEffect(eff, stateHasPod(podAddress)));
94
+ get shardsPerRunner() {
95
+ const shards = MutableHashMap.empty();
96
+ if (MutableHashMap.isEmpty(this.runners)) return shards;
97
+ MutableHashMap.forEach(this.runners, (_, address) => {
98
+ MutableHashMap.set(shards, address, new Set());
99
+ });
100
+ for (const [shard, address] of this.shards) {
101
+ if (Option.isNone(address)) continue;
102
+ const shardIds = Option.getOrUndefined(MutableHashMap.get(shards, address.value));
103
+ shardIds.add(shard);
104
+ }
105
+ return shards;
71
106
  }
72
- function withRetry(zio) {
73
- return (0, _Function.pipe)(zio, Effect.retry((0, _Function.pipe)(Schedule.spaced(config.persistRetryInterval), Schedule.andThen(Schedule.recurs(config.persistRetryCount)))), Effect.ignore);
107
+ get averageShardsPerRunner() {
108
+ const runnerCount = MutableHashMap.size(this.runners);
109
+ return runnerCount > 0 ? this.shards.size / runnerCount : 0;
74
110
  }
75
- const persistAssignments = withRetry((0, _Function.pipe)(RefSynchronized.get(stateRef), Effect.flatMap(state => stateRepository.saveAssignments(state.shards))));
76
- const persistPods = withRetry((0, _Function.pipe)(RefSynchronized.get(stateRef), Effect.flatMap(state => stateRepository.savePods(HashMap.map(state.pods, v => v.pod)))));
77
- function updateShardsState(shards, pod) {
78
- return RefSynchronized.updateEffect(stateRef, state => {
79
- if (Option.isSome(pod) && !HashMap.has(state.pods, pod.value)) {
80
- return Effect.fail(new ShardingException.PodNoLongerRegisteredException({
81
- podAddress: pod.value
82
- }));
111
+ get unassignedShards() {
112
+ const shardIds = [];
113
+ for (const [shard, address] of this.shards) {
114
+ if (Option.isNone(address)) {
115
+ shardIds.push(shard);
83
116
  }
84
- return Effect.succeed({
85
- ...state,
86
- shards: (0, _Function.pipe)(state.shards, HashMap.map((assignment, shard) => HashSet.has(shards, shard) ? pod : assignment))
87
- });
88
- });
117
+ }
118
+ return shardIds;
89
119
  }
90
- function rebalance(rebalanceImmediately) {
91
- const algo = Effect.gen(function* () {
92
- const state = yield* RefSynchronized.get(stateRef);
93
- const [assignments, unassignments] = rebalanceImmediately || HashSet.size(state.unassignedShards) > 0 ? decideAssignmentsForUnassignedShards(state) : decideAssignmentsForUnbalancedShards(state, config.rebalanceRate);
94
- const areChanges = HashMap.size(assignments) > 0 || HashMap.size(unassignments) > 0;
95
- if (areChanges) {
96
- yield* Effect.logDebug("Rebalance (rebalanceImmidiately=" + JSON.stringify(rebalanceImmediately) + ")");
97
- }
98
- const failedPingedPods = yield* (0, _Function.pipe)(HashSet.union(HashMap.keySet(assignments), HashMap.keySet(unassignments)), Effect.forEach(pod => (0, _Function.pipe)(podApi.ping(pod), Effect.timeout(config.pingTimeout), Effect.match({
99
- onFailure: () => Chunk.fromIterable([pod]),
100
- onSuccess: () => Chunk.empty()
101
- })), {
102
- concurrency: "inherit"
103
- }), Effect.map(Chunk.fromIterable), Effect.map(_ => Chunk.flatten(_)), Effect.map(HashSet.fromIterable));
104
- const shardsToRemove = (0, _Function.pipe)(List.fromIterable(assignments), List.appendAll(List.fromIterable(unassignments)), List.filter(([pod, __]) => HashSet.has(failedPingedPods, pod)), List.map(([_, shards]) => List.fromIterable(shards)), List.flatMap(_ => _),
105
- // TODO: List is missing flatMap
106
- HashSet.fromIterable);
107
- const readyAssignments = (0, _Function.pipe)(assignments, HashMap.map(HashSet.difference(shardsToRemove)), HashMap.filter(__ => HashSet.size(__) > 0));
108
- const readyUnassignments = (0, _Function.pipe)(unassignments, HashMap.map(HashSet.difference(shardsToRemove)), HashMap.filter(__ => HashSet.size(__) > 0));
109
- const [failedUnassignedPods, failedUnassignedShards] = yield* (0, _Function.pipe)(Effect.forEach(readyUnassignments, ([pod, shards]) => (0, _Function.pipe)(podApi.unassignShards(pod, shards), Effect.zipRight(updateShardsState(shards, Option.none())), Effect.matchEffect({
110
- onFailure: () => Effect.succeed([HashSet.fromIterable([pod]), shards]),
111
- onSuccess: () => (0, _Function.pipe)(PubSub.publish(eventsHub, ShardingEvent.ShardsUnassigned(pod, shards)), Effect.as([HashSet.empty(), HashSet.empty()]))
112
- })), {
113
- concurrency: "inherit"
114
- }), 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))]));
115
- // remove assignments of shards that couldn't be unassigned, as well as faulty pods.
116
- const filteredAssignments = (0, _Function.pipe)(HashMap.removeMany(readyAssignments, failedUnassignedPods), HashMap.map((shards, __) => HashSet.difference(shards, failedUnassignedShards)));
117
- // then do the assignments
118
- const failedAssignedPods = yield* (0, _Function.pipe)(Effect.forEach(filteredAssignments, ([pod, shards]) => (0, _Function.pipe)(podApi.assignShards(pod, shards), Effect.zipRight(updateShardsState(shards, Option.some(pod))), Effect.matchEffect({
119
- onFailure: () => Effect.succeed(Chunk.fromIterable([pod])),
120
- onSuccess: () => (0, _Function.pipe)(PubSub.publish(eventsHub, ShardingEvent.ShardsAssigned(pod, shards)), Effect.as(Chunk.empty()))
121
- })), {
122
- concurrency: "inherit"
123
- }), Effect.map(Chunk.fromIterable), Effect.map(_ => Chunk.flatten(_)), Effect.map(HashSet.fromIterable));
124
- const failedPods = HashSet.union(HashSet.union(failedPingedPods, failedUnassignedPods), failedAssignedPods);
125
- // check if failing pods are still up
126
- yield* Effect.forkIn(layerScope)(Effect.forEach(failedPods, _ => notifyUnhealthyPod(_), {
127
- discard: true
128
- }));
129
- if (HashSet.size(failedPods) > 0) {
130
- yield* Effect.logDebug("Failed to rebalance pods: " + failedPods + " failed pinged: " + failedPingedPods + " failed assigned: " + failedAssignedPods + " failed unassigned: " + failedUnassignedPods);
131
- }
132
- // retry rebalancing later if there was any failure
133
- if (HashSet.size(failedPods) > 0 && rebalanceImmediately) {
134
- yield* (0, _Function.pipe)(Effect.sleep(config.rebalanceRetryInterval), Effect.zipRight(rebalance(rebalanceImmediately)), Effect.forkIn(layerScope));
135
- }
136
- // persist state changes to Redis
137
- if (areChanges) {
138
- yield* Effect.forkIn(layerScope)(persistAssignments);
139
- }
140
- });
141
- return rebalanceSemaphore.withPermits(1)(algo);
120
+ get runnerVersions() {
121
+ const runnerVersions = [];
122
+ for (const [, meta] of this.runners) {
123
+ runnerVersions.push(meta.runner.version);
124
+ }
125
+ return runnerVersions;
142
126
  }
143
- return {
144
- getAssignments,
145
- getShardingEvents,
146
- register,
147
- unregister,
148
- persistPods,
149
- rebalance,
150
- notifyUnhealthyPod,
151
- checkAllPodsHealth
152
- };
153
127
  }
154
128
  /** @internal */
129
+ exports.State = State;
130
+ const RunnerWithMetadata = runner => runner;
131
+ /** @internal */
132
+ exports.RunnerWithMetadata = RunnerWithMetadata;
155
133
  function decideAssignmentsForUnassignedShards(state) {
156
- return pickNewPods(List.fromIterable(state.unassignedShards), state, true, 1);
134
+ return pickNewRunners(state.unassignedShards, state, true, 1);
157
135
  }
136
+ const allocationOrder = /*#__PURE__*/Order.combine( /*#__PURE__*/Order.mapInput(Order.number, ([, shards]) => shards), /*#__PURE__*/Order.mapInput(Order.number, ([,, registeredAt]) => registeredAt));
158
137
  /** @internal */
159
- function decideAssignmentsForUnbalancedShards(state, rebalanceRate) {
160
- // don't do regular rebalance in the middle of a rolling update
161
- const extraShardsToAllocate = state.allPodsHaveMaxVersion ? (0, _Function.pipe)(state.shardsPerPod, HashMap.flatMap((shards, _) => {
162
- // count how many extra shards compared to the average
163
- const extraShards = Math.max(HashSet.size(shards) - state.averageShardsPerPod.value, 0);
164
- return (0, _Function.pipe)(HashMap.empty(), HashMap.set(_, HashSet.fromIterable(List.take(List.fromIterable(shards), extraShards))));
165
- }), HashSet.fromIterable, HashSet.map(_ => _[1]), HashSet.flatMap(_ => _)) : HashSet.empty();
166
- /*
167
- TODO: port sortBy
168
- val sortedShardsToRebalance = extraShardsToAllocate.toList.sortBy { shard =>
169
- // handle unassigned shards first, then shards on the pods with most shards, then shards on old pods
170
- state.shards.get(shard).flatten.fold((Int.MinValue, OffsetDateTime.MIN)) { pod =>
171
- (
172
- state.shardsPerPod.get(pod).fold(Int.MinValue)(-_.size),
173
- state.pods.get(pod).fold(OffsetDateTime.MIN)(_.registered)
174
- )
138
+ function decideAssignmentsForUnbalancedShards(state, rate) {
139
+ const shardsPerRunner = state.shardsPerRunner;
140
+ const maxVersion = state.maxVersion;
141
+ const extraShardsToAllocate = Arr.empty();
142
+ if (state.allRunnersHaveVersion(maxVersion)) {
143
+ const averageShardsPerRunner = state.averageShardsPerRunner;
144
+ MutableHashMap.forEach(shardsPerRunner, shards => {
145
+ // Count how many extra shards there are compared to the average
146
+ const extraShards = Math.max(0, shards.size - averageShardsPerRunner);
147
+ for (const shard of takeRandom(shards, extraShards)) {
148
+ const maybeAddress = state.shards.get(shard) ?? Option.none();
149
+ if (Option.isNone(maybeAddress)) {
150
+ extraShardsToAllocate.push([shard, Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER]);
151
+ continue;
152
+ }
153
+ const address = maybeAddress.value;
154
+ extraShardsToAllocate.push([shard, Option.match(MutableHashMap.get(shardsPerRunner, address), {
155
+ onNone: () => Number.MIN_SAFE_INTEGER,
156
+ onSome: shards => -shards.size
157
+ }), Option.match(MutableHashMap.get(state.runners, address), {
158
+ onNone: () => Number.MIN_SAFE_INTEGER,
159
+ onSome: meta => meta.registeredAt
160
+ })]);
175
161
  }
176
- }
177
- * */
178
- const sortedShardsToRebalance = List.fromIterable(extraShardsToAllocate);
179
- return pickNewPods(sortedShardsToRebalance, state, false, rebalanceRate);
162
+ });
163
+ }
164
+ const sortedShardsToRebalance = extraShardsToAllocate.sort(allocationOrder).map(([shard]) => shard);
165
+ return pickNewRunners(sortedShardsToRebalance, state, false, rate, shardsPerRunner, maxVersion);
180
166
  }
181
- function pickNewPods(shardsToRebalance, state, rebalanceImmediately, rebalanceRate) {
182
- const [_, assignments] = (0, _Function.pipe)(List.reduce(shardsToRebalance, [state.shardsPerPod, List.empty()], ([shardsPerPod, assignments], shard) => {
183
- const unassignedPods = (0, _Function.pipe)(assignments, List.flatMap(([shard, _]) => (0, _Function.pipe)(HashMap.get(state.shards, shard), Option.flatten, Option.toArray, List.fromIterable)));
184
- // find pod with least amount of shards
185
- return (0, _Function.pipe)(
186
- // keep only pods with the max version
187
- HashMap.filter(shardsPerPod, (_, pod) => {
188
- const maxVersion = state.maxVersion;
189
- if (Option.isNone(maxVersion)) return true;
190
- return (0, _Function.pipe)(HashMap.get(state.pods, pod), Option.map(PodWithMetadata.extractVersion), Option.map(_ => PodWithMetadata.compareVersion(_, maxVersion.value) === 0), Option.getOrElse(() => false));
191
- }),
192
- // don't assign too many shards to the same pods, unless we need rebalance immediately
193
- HashMap.filter((_, pod) => {
194
- if (rebalanceImmediately) return true;
195
- return (0, _Function.pipe)(assignments, List.filter(([_, p]) => (0, _Equal.equals)(p)(pod)), List.size) < HashMap.size(state.shards) * rebalanceRate;
196
- }),
197
- // don't assign to a pod that was unassigned in the same rebalance
198
- HashMap.filter((_, pod) => !Option.isSome(List.findFirst(unassignedPods, (0, _Equal.equals)(pod)))), (0, _utils.minByOption)(([_, pods]) => HashSet.size(pods)), Option.match({
199
- onNone: () => [shardsPerPod, assignments],
200
- onSome: ([pod, shards]) => {
201
- const oldPod = Option.flatten(HashMap.get(state.shards, shard));
202
- // if old pod is same as new pod, don't change anything
203
- if ((0, _Equal.equals)(oldPod)(pod)) {
204
- return [shardsPerPod, assignments];
205
- // if the new pod has more, as much, or only 1 less shard than the old pod, don't change anything
206
- } else if (Option.match(HashMap.get(shardsPerPod, pod), {
207
- onNone: () => 0,
208
- onSome: HashSet.size
209
- }) + 1 >= Option.match(oldPod, {
210
- onNone: () => Number.MAX_SAFE_INTEGER,
211
- onSome: _ => Option.match(HashMap.get(shardsPerPod, _), {
212
- onNone: () => 0,
213
- onSome: HashSet.size
214
- })
215
- })) {
216
- return [shardsPerPod, assignments];
217
- // otherwise, create a new assignment
218
- } else {
219
- const unassigned = Option.match(oldPod, {
220
- onNone: () => shardsPerPod,
221
- onSome: oldPod => HashMap.modify(shardsPerPod, oldPod, HashSet.remove(shard))
222
- });
223
- return [HashMap.modify(unassigned, pod, _ => HashSet.add(shards, shard)), List.prepend(assignments, [shard, pod])];
224
- }
167
+ function pickNewRunners(shardsToRebalance, state, immediate, rate, shardsPerRunner = state.shardsPerRunner, maybeMaxVersion = state.maxVersion) {
168
+ const addressAssignments = MutableHashMap.empty();
169
+ const unassignments = MutableHashMap.empty();
170
+ const changes = MutableHashSet.empty();
171
+ if (Option.isNone(maybeMaxVersion)) {
172
+ return [addressAssignments, unassignments, changes];
173
+ }
174
+ const maxVersion = maybeMaxVersion.value;
175
+ for (const shardId of shardsToRebalance) {
176
+ // Find the runner with the fewest assigned shards
177
+ let candidate;
178
+ let candidateShards;
179
+ for (const [address, shards] of shardsPerRunner) {
180
+ // Keep only runners with the maximum version
181
+ const maybeRunnerMeta = MutableHashMap.get(state.runners, address);
182
+ if (Option.isNone(maybeRunnerMeta)) continue;
183
+ const runnerMeta = maybeRunnerMeta.value;
184
+ if (runnerMeta.runner.version !== maxVersion) continue;
185
+ // Do not assign to a runner that has unassignments in the same rebalance
186
+ if (MutableHashMap.has(unassignments, address)) continue;
187
+ // Do not assign too many shards to each runner unless rebalancing must
188
+ // occur immediately
189
+ if (!immediate) {
190
+ const assignmentCount = Option.getOrUndefined(MutableHashMap.get(addressAssignments, address))?.size ?? 0;
191
+ if (assignmentCount >= state.shards.size * rate) continue;
192
+ }
193
+ if (candidate === undefined || shards.size < candidateShards.size) {
194
+ candidate = address;
195
+ candidateShards = shards;
196
+ }
197
+ }
198
+ if (!candidate || !candidateShards) break;
199
+ // If the old runner is the same as the new runner, do nothing
200
+ const oldRunner = Option.getOrUndefined(state.shards.get(shardId) ?? Option.none());
201
+ if (oldRunner && oldRunner.toString() === candidate.toString()) {
202
+ continue;
203
+ }
204
+ const oldShards = oldRunner && Option.getOrUndefined(MutableHashMap.get(shardsPerRunner, oldRunner));
205
+ // If the new runner has one less, as many, or more shards than the
206
+ // old runner, do not change anything
207
+ if (oldShards && candidateShards.size + 1 >= oldShards.size) continue;
208
+ // Otherwise create a new assignment
209
+ MutableHashMap.modifyAt(addressAssignments, candidate, Option.match({
210
+ onNone: () => Option.some(new Set([shardId])),
211
+ onSome: shards => {
212
+ shards.add(shardId);
213
+ return Option.some(shards);
225
214
  }
226
215
  }));
227
- }));
228
- const unassignments = List.flatMap(assignments, ([shard, _]) => (0, _Function.pipe)(Option.flatten(HashMap.get(state.shards, shard)), Option.map(_ => [shard, _]), Option.match({
229
- onNone: List.empty,
230
- onSome: List.of
231
- })));
232
- const assignmentsPerPod = (0, _Function.pipe)(assignments, (0, _utils.groupBy)(([_, pod]) => pod), HashMap.map(HashSet.map(([shardId, _]) => shardId)));
233
- const unassignmentsPerPod = (0, _Function.pipe)(unassignments, (0, _utils.groupBy)(([_, pod]) => pod), HashMap.map(HashSet.map(([shardId, _]) => shardId)));
234
- return [assignmentsPerPod, unassignmentsPerPod];
216
+ if (oldRunner) {
217
+ MutableHashMap.modifyAt(unassignments, oldRunner, Option.match({
218
+ onNone: () => Option.some(new Set([shardId])),
219
+ onSome: shards => {
220
+ shards.add(shardId);
221
+ return Option.some(shards);
222
+ }
223
+ }));
224
+ }
225
+ // Move the shard to the new runner
226
+ candidateShards.add(shardId);
227
+ if (oldShards) {
228
+ oldShards.delete(shardId);
229
+ }
230
+ // Track changes
231
+ MutableHashSet.add(changes, candidate);
232
+ if (oldRunner) MutableHashSet.add(changes, oldRunner);
233
+ }
234
+ return [addressAssignments, unassignments, changes];
235
+ }
236
+ function takeRandom(self, n) {
237
+ const array = Array.from(self);
238
+ let currentIndex = array.length;
239
+ while (currentIndex != 0) {
240
+ const randomIndex = Math.floor(Math.random() * currentIndex);
241
+ currentIndex = currentIndex - 1;
242
+ swap(array, currentIndex, randomIndex);
243
+ }
244
+ return n < array.length ? array.slice(0, n) : array;
245
+ }
246
+ function swap(array, i, j) {
247
+ const tmp = array[i];
248
+ array[i] = array[j];
249
+ array[j] = tmp;
250
+ return array;
235
251
  }
236
- /**
237
- * @since 1.0.0
238
- * @category layers
239
- */
240
- const live = exports.live = /*#__PURE__*/Effect.gen(function* () {
241
- const config = yield* ManagerConfig.ManagerConfig;
242
- const stateRepository = yield* Storage.Storage;
243
- const healthApi = yield* PodsHealth.PodsHealth;
244
- const podsApi = yield* Pods.Pods;
245
- const layerScope = yield* Effect.scope;
246
- const pods = yield* stateRepository.getPods;
247
- const assignments = yield* stateRepository.getAssignments;
248
- const filteredPods = yield* (0, _Function.pipe)(Effect.filter(pods, ([podAddress]) => healthApi.isAlive(podAddress), {
249
- concurrency: "inherit"
250
- }), Effect.map(HashMap.fromIterable));
251
- const filteredAssignments = HashMap.filter(assignments, pod => Option.isSome(pod) && HashMap.has(filteredPods, pod.value));
252
- const cdt = yield* Clock.currentTimeMillis;
253
- const initialState = ShardManagerState.make(HashMap.map(filteredPods, pod => PodWithMetadata.make(pod, cdt)), HashMap.union(filteredAssignments, (0, _Function.pipe)(Chunk.range(1, config.numberOfShards), Chunk.map(n => [ShardId.make(n), Option.none()]), HashMap.fromIterable)));
254
- const state = yield* RefSynchronized.make(initialState);
255
- const rebalanceSemaphore = yield* Effect.makeSemaphore(1);
256
- const eventsHub = yield* PubSub.unbounded();
257
- const shardManager = make(layerScope, state, rebalanceSemaphore, eventsHub, healthApi, podsApi, stateRepository, config);
258
- yield* Effect.forkIn(layerScope)(shardManager.persistPods);
259
- // rebalance immediately if there are unassigned shards
260
- yield* shardManager.rebalance(HashSet.size(initialState.unassignedShards) > 0);
261
- // start a regular rebalance at the given interval
262
- yield* (0, _Function.pipe)(shardManager.rebalance(false), Effect.repeat(Schedule.spaced(config.rebalanceInterval)), Effect.forkIn(layerScope));
263
- // log info events
264
- yield* (0, _Function.pipe)(shardManager.getShardingEvents, Stream.mapEffect(_ => Effect.logDebug(JSON.stringify(_))), Stream.runDrain, Effect.forkIn(layerScope));
265
- yield* Effect.logDebug("Shard Manager loaded");
266
- return shardManager;
267
- }).pipe( /*#__PURE__*/Layer.scoped(shardManagerTag));
268
252
  //# sourceMappingURL=shardManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shardManager.js","names":["Chunk","_interopRequireWildcard","require","Clock","_Context","Effect","_Equal","_Function","HashMap","HashSet","Layer","List","Option","PubSub","Schedule","Stream","RefSynchronized","ManagerConfig","Pods","PodsHealth","ShardId","ShardingEvent","ShardingException","Storage","PodWithMetadata","ShardManagerState","_utils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ShardManagerSymbolKey","ShardManagerTypeId","exports","Symbol","for","shardManagerTag","GenericTag","make","layerScope","stateRef","rebalanceSemaphore","eventsHub","healthApi","podApi","stateRepository","config","getAssignments","pipe","map","_","shards","getShardingEvents","fromPubSub","register","pod","logDebug","address","version","zipRight","updateAndGetEffect","state","flatMap","clock","currentTimeMillis","cdt","pods","zipLeft","publish","PodRegistered","when","rebalance","size","unassignedShards","forkIn","persistPods","asVoid","stateHasPod","podAddress","notifyUnhealthyPod","whenEffect","PodHealthChecked","unlessEffect","logWarning","unregister","isAlive","checkAllPodsHealth","keySet","forEach","concurrency","discard","eff","Do","bind","modify","filter","equals","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","minByOption","onNone","onSome","oldPod","Number","MAX_SAFE_INTEGER","unassigned","add","prepend","of","assignmentsPerPod","groupBy","shardId","unassignmentsPerPod","live","podsApi","scope","getPods","filteredPods","initialState","range","numberOfShards","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","_interopRequireWildcard","require","Clock","Effect","_Function","MutableHashMap","MutableHashSet","Option","Order","_RunnerHealth","_ShardId","_ShardStorage","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","State","runners","shards","fromStorage","fnUntraced","numberOfShards","storage","ShardStorage","runnerHealth","RunnerHealth","storedRunners","getRunners","storedAssignments","getAssignments","deadRunners","empty","aliveRunners","forEach","address","runner","map","isAlive","push","concurrency","discard","length","logWarning","assignedShards","Map","invalidAssignments","shard","isSome","value","now","currentTimeMillis","runnerState","RunnerWithMetadata","registeredAt","shardState","shardId","ShardId","make","fromNullable","constructor","maxVersion","size","none","version","undefined","meta","some","allRunnersHaveVersion","pipe","max","every","runnerVersions","getOrElse","constFalse","shardsPerRunner","isEmpty","_","Set","isNone","shardIds","getOrUndefined","add","averageShardsPerRunner","runnerCount","unassignedShards","exports","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","j","tmp"],"sources":["../../../src/internal/shardManager.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}