@effect/cluster 0.0.0-snapshot-d33d8b050b8e3c87dcde9587083e6c1cf733f72b

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 (375) hide show
  1. package/AtLeastOnce/package.json +6 -0
  2. package/AtLeastOnceStorage/package.json +6 -0
  3. package/Broadcaster/package.json +6 -0
  4. package/LICENSE +21 -0
  5. package/ManagerConfig/package.json +6 -0
  6. package/Message/package.json +6 -0
  7. package/MessageState/package.json +6 -0
  8. package/Messenger/package.json +6 -0
  9. package/Pod/package.json +6 -0
  10. package/PodAddress/package.json +6 -0
  11. package/Pods/package.json +6 -0
  12. package/PodsHealth/package.json +6 -0
  13. package/PoisonPill/package.json +6 -0
  14. package/README.md +3 -0
  15. package/RecipientAddress/package.json +6 -0
  16. package/RecipientBehaviour/package.json +6 -0
  17. package/RecipientBehaviourContext/package.json +6 -0
  18. package/RecipientType/package.json +6 -0
  19. package/Serialization/package.json +6 -0
  20. package/SerializedEnvelope/package.json +6 -0
  21. package/SerializedMessage/package.json +6 -0
  22. package/ShardId/package.json +6 -0
  23. package/ShardManager/package.json +6 -0
  24. package/ShardManagerClient/package.json +6 -0
  25. package/Sharding/package.json +6 -0
  26. package/ShardingConfig/package.json +6 -0
  27. package/ShardingEvent/package.json +6 -0
  28. package/ShardingException/package.json +6 -0
  29. package/ShardingRegistrationEvent/package.json +6 -0
  30. package/Storage/package.json +6 -0
  31. package/dist/cjs/AtLeastOnce.js +43 -0
  32. package/dist/cjs/AtLeastOnce.js.map +1 -0
  33. package/dist/cjs/AtLeastOnceStorage.js +48 -0
  34. package/dist/cjs/AtLeastOnceStorage.js.map +1 -0
  35. package/dist/cjs/Broadcaster.js +6 -0
  36. package/dist/cjs/Broadcaster.js.map +1 -0
  37. package/dist/cjs/ManagerConfig.js +57 -0
  38. package/dist/cjs/ManagerConfig.js.map +1 -0
  39. package/dist/cjs/Message.js +64 -0
  40. package/dist/cjs/Message.js.map +1 -0
  41. package/dist/cjs/MessageState.js +78 -0
  42. package/dist/cjs/MessageState.js.map +1 -0
  43. package/dist/cjs/Messenger.js +6 -0
  44. package/dist/cjs/Messenger.js.map +1 -0
  45. package/dist/cjs/Pod.js +101 -0
  46. package/dist/cjs/Pod.js.map +1 -0
  47. package/dist/cjs/PodAddress.js +100 -0
  48. package/dist/cjs/PodAddress.js.map +1 -0
  49. package/dist/cjs/Pods.js +58 -0
  50. package/dist/cjs/Pods.js.map +1 -0
  51. package/dist/cjs/PodsHealth.js +64 -0
  52. package/dist/cjs/PodsHealth.js.map +1 -0
  53. package/dist/cjs/PoisonPill.js +101 -0
  54. package/dist/cjs/PoisonPill.js.map +1 -0
  55. package/dist/cjs/RecipientAddress.js +102 -0
  56. package/dist/cjs/RecipientAddress.js.map +1 -0
  57. package/dist/cjs/RecipientBehaviour.js +61 -0
  58. package/dist/cjs/RecipientBehaviour.js.map +1 -0
  59. package/dist/cjs/RecipientBehaviourContext.js +87 -0
  60. package/dist/cjs/RecipientBehaviourContext.js.map +1 -0
  61. package/dist/cjs/RecipientType.js +142 -0
  62. package/dist/cjs/RecipientType.js.map +1 -0
  63. package/dist/cjs/Serialization.js +55 -0
  64. package/dist/cjs/Serialization.js.map +1 -0
  65. package/dist/cjs/SerializedEnvelope.js +111 -0
  66. package/dist/cjs/SerializedEnvelope.js.map +1 -0
  67. package/dist/cjs/SerializedMessage.js +87 -0
  68. package/dist/cjs/SerializedMessage.js.map +1 -0
  69. package/dist/cjs/ShardId.js +89 -0
  70. package/dist/cjs/ShardId.js.map +1 -0
  71. package/dist/cjs/ShardManager.js +48 -0
  72. package/dist/cjs/ShardManager.js.map +1 -0
  73. package/dist/cjs/ShardManagerClient.js +53 -0
  74. package/dist/cjs/ShardManagerClient.js.map +1 -0
  75. package/dist/cjs/Sharding.js +129 -0
  76. package/dist/cjs/Sharding.js.map +1 -0
  77. package/dist/cjs/ShardingConfig.js +64 -0
  78. package/dist/cjs/ShardingConfig.js.map +1 -0
  79. package/dist/cjs/ShardingEvent.js +72 -0
  80. package/dist/cjs/ShardingEvent.js.map +1 -0
  81. package/dist/cjs/ShardingException.js +130 -0
  82. package/dist/cjs/ShardingException.js.map +1 -0
  83. package/dist/cjs/ShardingRegistrationEvent.js +44 -0
  84. package/dist/cjs/ShardingRegistrationEvent.js.map +1 -0
  85. package/dist/cjs/Storage.js +63 -0
  86. package/dist/cjs/Storage.js.map +1 -0
  87. package/dist/cjs/index.js +88 -0
  88. package/dist/cjs/index.js.map +1 -0
  89. package/dist/cjs/internal/atLeastOnce.js +58 -0
  90. package/dist/cjs/internal/atLeastOnce.js.map +1 -0
  91. package/dist/cjs/internal/atLeastOnceStorage.js +186 -0
  92. package/dist/cjs/internal/atLeastOnceStorage.js.map +1 -0
  93. package/dist/cjs/internal/entityManager.js +191 -0
  94. package/dist/cjs/internal/entityManager.js.map +1 -0
  95. package/dist/cjs/internal/entityState.js +70 -0
  96. package/dist/cjs/internal/entityState.js.map +1 -0
  97. package/dist/cjs/internal/managerConfig.js +69 -0
  98. package/dist/cjs/internal/managerConfig.js.map +1 -0
  99. package/dist/cjs/internal/message.js +68 -0
  100. package/dist/cjs/internal/message.js.map +1 -0
  101. package/dist/cjs/internal/messageState.js +102 -0
  102. package/dist/cjs/internal/messageState.js.map +1 -0
  103. package/dist/cjs/internal/podWithMetadata.js +77 -0
  104. package/dist/cjs/internal/podWithMetadata.js.map +1 -0
  105. package/dist/cjs/internal/pods.js +58 -0
  106. package/dist/cjs/internal/pods.js.map +1 -0
  107. package/dist/cjs/internal/podsHealth.js +63 -0
  108. package/dist/cjs/internal/podsHealth.js.map +1 -0
  109. package/dist/cjs/internal/recipientBehaviour.js +75 -0
  110. package/dist/cjs/internal/recipientBehaviour.js.map +1 -0
  111. package/dist/cjs/internal/recipientBehaviourContext.js +59 -0
  112. package/dist/cjs/internal/recipientBehaviourContext.js.map +1 -0
  113. package/dist/cjs/internal/serialization.js +72 -0
  114. package/dist/cjs/internal/serialization.js.map +1 -0
  115. package/dist/cjs/internal/shardManager.js +291 -0
  116. package/dist/cjs/internal/shardManager.js.map +1 -0
  117. package/dist/cjs/internal/shardManagerClient.js +71 -0
  118. package/dist/cjs/internal/shardManagerClient.js.map +1 -0
  119. package/dist/cjs/internal/shardManagerState.js +67 -0
  120. package/dist/cjs/internal/shardManagerState.js.map +1 -0
  121. package/dist/cjs/internal/sharding.js +329 -0
  122. package/dist/cjs/internal/sharding.js.map +1 -0
  123. package/dist/cjs/internal/shardingConfig.js +79 -0
  124. package/dist/cjs/internal/shardingConfig.js.map +1 -0
  125. package/dist/cjs/internal/storage.js +75 -0
  126. package/dist/cjs/internal/storage.js.map +1 -0
  127. package/dist/cjs/internal/utils.js +92 -0
  128. package/dist/cjs/internal/utils.js.map +1 -0
  129. package/dist/dts/AtLeastOnce.d.ts +20 -0
  130. package/dist/dts/AtLeastOnce.d.ts.map +1 -0
  131. package/dist/dts/AtLeastOnceStorage.d.ts +75 -0
  132. package/dist/dts/AtLeastOnceStorage.d.ts.map +1 -0
  133. package/dist/dts/Broadcaster.d.ts +32 -0
  134. package/dist/dts/Broadcaster.d.ts.map +1 -0
  135. package/dist/dts/ManagerConfig.d.ts +61 -0
  136. package/dist/dts/ManagerConfig.d.ts.map +1 -0
  137. package/dist/dts/Message.d.ts +106 -0
  138. package/dist/dts/Message.d.ts.map +1 -0
  139. package/dist/dts/MessageState.d.ts +107 -0
  140. package/dist/dts/MessageState.d.ts.map +1 -0
  141. package/dist/dts/Messenger.d.ts +32 -0
  142. package/dist/dts/Messenger.d.ts.map +1 -0
  143. package/dist/dts/Pod.d.ts +81 -0
  144. package/dist/dts/Pod.d.ts.map +1 -0
  145. package/dist/dts/PodAddress.d.ts +80 -0
  146. package/dist/dts/PodAddress.d.ts.map +1 -0
  147. package/dist/dts/Pods.d.ts +78 -0
  148. package/dist/dts/Pods.d.ts.map +1 -0
  149. package/dist/dts/PodsHealth.d.ts +66 -0
  150. package/dist/dts/PodsHealth.d.ts.map +1 -0
  151. package/dist/dts/PoisonPill.d.ts +78 -0
  152. package/dist/dts/PoisonPill.d.ts.map +1 -0
  153. package/dist/dts/RecipientAddress.d.ts +57 -0
  154. package/dist/dts/RecipientAddress.d.ts.map +1 -0
  155. package/dist/dts/RecipientBehaviour.d.ts +72 -0
  156. package/dist/dts/RecipientBehaviour.d.ts.map +1 -0
  157. package/dist/dts/RecipientBehaviourContext.d.ts +83 -0
  158. package/dist/dts/RecipientBehaviourContext.d.ts.map +1 -0
  159. package/dist/dts/RecipientType.d.ts +96 -0
  160. package/dist/dts/RecipientType.d.ts.map +1 -0
  161. package/dist/dts/Serialization.d.ts +58 -0
  162. package/dist/dts/Serialization.d.ts.map +1 -0
  163. package/dist/dts/SerializedEnvelope.d.ts +87 -0
  164. package/dist/dts/SerializedEnvelope.d.ts.map +1 -0
  165. package/dist/dts/SerializedMessage.d.ts +66 -0
  166. package/dist/dts/SerializedMessage.d.ts.map +1 -0
  167. package/dist/dts/ShardId.d.ts +70 -0
  168. package/dist/dts/ShardId.d.ts.map +1 -0
  169. package/dist/dts/ShardManager.d.ts +44 -0
  170. package/dist/dts/ShardManager.d.ts.map +1 -0
  171. package/dist/dts/ShardManagerClient.d.ts +50 -0
  172. package/dist/dts/ShardManagerClient.d.ts.map +1 -0
  173. package/dist/dts/Sharding.d.ts +146 -0
  174. package/dist/dts/Sharding.d.ts.map +1 -0
  175. package/dist/dts/ShardingConfig.d.ts +69 -0
  176. package/dist/dts/ShardingConfig.d.ts.map +1 -0
  177. package/dist/dts/ShardingEvent.d.ts +90 -0
  178. package/dist/dts/ShardingEvent.d.ts.map +1 -0
  179. package/dist/dts/ShardingException.d.ts +125 -0
  180. package/dist/dts/ShardingException.d.ts.map +1 -0
  181. package/dist/dts/ShardingRegistrationEvent.d.ts +44 -0
  182. package/dist/dts/ShardingRegistrationEvent.d.ts.map +1 -0
  183. package/dist/dts/Storage.d.ts +78 -0
  184. package/dist/dts/Storage.d.ts.map +1 -0
  185. package/dist/dts/index.d.ts +113 -0
  186. package/dist/dts/index.d.ts.map +1 -0
  187. package/dist/dts/internal/atLeastOnce.d.ts +2 -0
  188. package/dist/dts/internal/atLeastOnce.d.ts.map +1 -0
  189. package/dist/dts/internal/atLeastOnceStorage.d.ts +2 -0
  190. package/dist/dts/internal/atLeastOnceStorage.d.ts.map +1 -0
  191. package/dist/dts/internal/entityManager.d.ts +2 -0
  192. package/dist/dts/internal/entityManager.d.ts.map +1 -0
  193. package/dist/dts/internal/entityState.d.ts +21 -0
  194. package/dist/dts/internal/entityState.d.ts.map +1 -0
  195. package/dist/dts/internal/managerConfig.d.ts +2 -0
  196. package/dist/dts/internal/managerConfig.d.ts.map +1 -0
  197. package/dist/dts/internal/message.d.ts +9 -0
  198. package/dist/dts/internal/message.d.ts.map +1 -0
  199. package/dist/dts/internal/messageState.d.ts +2 -0
  200. package/dist/dts/internal/messageState.d.ts.map +1 -0
  201. package/dist/dts/internal/podWithMetadata.d.ts +2 -0
  202. package/dist/dts/internal/podWithMetadata.d.ts.map +1 -0
  203. package/dist/dts/internal/pods.d.ts +2 -0
  204. package/dist/dts/internal/pods.d.ts.map +1 -0
  205. package/dist/dts/internal/podsHealth.d.ts +2 -0
  206. package/dist/dts/internal/podsHealth.d.ts.map +1 -0
  207. package/dist/dts/internal/recipientBehaviour.d.ts +2 -0
  208. package/dist/dts/internal/recipientBehaviour.d.ts.map +1 -0
  209. package/dist/dts/internal/recipientBehaviourContext.d.ts +2 -0
  210. package/dist/dts/internal/recipientBehaviourContext.d.ts.map +1 -0
  211. package/dist/dts/internal/serialization.d.ts +2 -0
  212. package/dist/dts/internal/serialization.d.ts.map +1 -0
  213. package/dist/dts/internal/shardManager.d.ts +12 -0
  214. package/dist/dts/internal/shardManager.d.ts.map +1 -0
  215. package/dist/dts/internal/shardManagerClient.d.ts +2 -0
  216. package/dist/dts/internal/shardManagerClient.d.ts.map +1 -0
  217. package/dist/dts/internal/shardManagerState.d.ts +26 -0
  218. package/dist/dts/internal/shardManagerState.d.ts.map +1 -0
  219. package/dist/dts/internal/sharding.d.ts +2 -0
  220. package/dist/dts/internal/sharding.d.ts.map +1 -0
  221. package/dist/dts/internal/shardingConfig.d.ts +2 -0
  222. package/dist/dts/internal/shardingConfig.d.ts.map +1 -0
  223. package/dist/dts/internal/storage.d.ts +2 -0
  224. package/dist/dts/internal/storage.d.ts.map +1 -0
  225. package/dist/dts/internal/utils.d.ts +2 -0
  226. package/dist/dts/internal/utils.d.ts.map +1 -0
  227. package/dist/esm/AtLeastOnce.js +12 -0
  228. package/dist/esm/AtLeastOnce.js.map +1 -0
  229. package/dist/esm/AtLeastOnceStorage.js +17 -0
  230. package/dist/esm/AtLeastOnceStorage.js.map +1 -0
  231. package/dist/esm/Broadcaster.js +2 -0
  232. package/dist/esm/Broadcaster.js.map +1 -0
  233. package/dist/esm/ManagerConfig.js +26 -0
  234. package/dist/esm/ManagerConfig.js.map +1 -0
  235. package/dist/esm/Message.js +33 -0
  236. package/dist/esm/Message.js.map +1 -0
  237. package/dist/esm/MessageState.js +47 -0
  238. package/dist/esm/MessageState.js.map +1 -0
  239. package/dist/esm/Messenger.js +2 -0
  240. package/dist/esm/Messenger.js.map +1 -0
  241. package/dist/esm/Pod.js +65 -0
  242. package/dist/esm/Pod.js.map +1 -0
  243. package/dist/esm/PodAddress.js +64 -0
  244. package/dist/esm/PodAddress.js.map +1 -0
  245. package/dist/esm/Pods.js +27 -0
  246. package/dist/esm/Pods.js.map +1 -0
  247. package/dist/esm/PodsHealth.js +33 -0
  248. package/dist/esm/PodsHealth.js.map +1 -0
  249. package/dist/esm/PoisonPill.js +65 -0
  250. package/dist/esm/PoisonPill.js.map +1 -0
  251. package/dist/esm/RecipientAddress.js +67 -0
  252. package/dist/esm/RecipientAddress.js.map +1 -0
  253. package/dist/esm/RecipientBehaviour.js +30 -0
  254. package/dist/esm/RecipientBehaviour.js.map +1 -0
  255. package/dist/esm/RecipientBehaviourContext.js +56 -0
  256. package/dist/esm/RecipientBehaviourContext.js.map +1 -0
  257. package/dist/esm/RecipientType.js +105 -0
  258. package/dist/esm/RecipientType.js.map +1 -0
  259. package/dist/esm/Serialization.js +24 -0
  260. package/dist/esm/Serialization.js.map +1 -0
  261. package/dist/esm/SerializedEnvelope.js +75 -0
  262. package/dist/esm/SerializedEnvelope.js.map +1 -0
  263. package/dist/esm/SerializedMessage.js +51 -0
  264. package/dist/esm/SerializedMessage.js.map +1 -0
  265. package/dist/esm/ShardId.js +54 -0
  266. package/dist/esm/ShardId.js.map +1 -0
  267. package/dist/esm/ShardManager.js +17 -0
  268. package/dist/esm/ShardManager.js.map +1 -0
  269. package/dist/esm/ShardManagerClient.js +22 -0
  270. package/dist/esm/ShardManagerClient.js.map +1 -0
  271. package/dist/esm/Sharding.js +98 -0
  272. package/dist/esm/Sharding.js.map +1 -0
  273. package/dist/esm/ShardingConfig.js +33 -0
  274. package/dist/esm/ShardingConfig.js.map +1 -0
  275. package/dist/esm/ShardingEvent.js +62 -0
  276. package/dist/esm/ShardingEvent.js.map +1 -0
  277. package/dist/esm/ShardingException.js +91 -0
  278. package/dist/esm/ShardingException.js.map +1 -0
  279. package/dist/esm/ShardingRegistrationEvent.js +36 -0
  280. package/dist/esm/ShardingRegistrationEvent.js.map +1 -0
  281. package/dist/esm/Storage.js +32 -0
  282. package/dist/esm/Storage.js.map +1 -0
  283. package/dist/esm/index.js +113 -0
  284. package/dist/esm/index.js.map +1 -0
  285. package/dist/esm/internal/atLeastOnce.js +26 -0
  286. package/dist/esm/internal/atLeastOnce.js.map +1 -0
  287. package/dist/esm/internal/atLeastOnceStorage.js +154 -0
  288. package/dist/esm/internal/atLeastOnceStorage.js.map +1 -0
  289. package/dist/esm/internal/entityManager.js +159 -0
  290. package/dist/esm/internal/entityManager.js.map +1 -0
  291. package/dist/esm/internal/entityState.js +35 -0
  292. package/dist/esm/internal/entityState.js.map +1 -0
  293. package/dist/esm/internal/managerConfig.js +38 -0
  294. package/dist/esm/internal/managerConfig.js.map +1 -0
  295. package/dist/esm/internal/message.js +32 -0
  296. package/dist/esm/internal/message.js.map +1 -0
  297. package/dist/esm/internal/messageState.js +66 -0
  298. package/dist/esm/internal/messageState.js.map +1 -0
  299. package/dist/esm/internal/podWithMetadata.js +41 -0
  300. package/dist/esm/internal/podWithMetadata.js.map +1 -0
  301. package/dist/esm/internal/pods.js +25 -0
  302. package/dist/esm/internal/pods.js.map +1 -0
  303. package/dist/esm/internal/podsHealth.js +30 -0
  304. package/dist/esm/internal/podsHealth.js.map +1 -0
  305. package/dist/esm/internal/recipientBehaviour.js +42 -0
  306. package/dist/esm/internal/recipientBehaviour.js.map +1 -0
  307. package/dist/esm/internal/recipientBehaviourContext.js +26 -0
  308. package/dist/esm/internal/recipientBehaviourContext.js.map +1 -0
  309. package/dist/esm/internal/serialization.js +39 -0
  310. package/dist/esm/internal/serialization.js.map +1 -0
  311. package/dist/esm/internal/shardManager.js +256 -0
  312. package/dist/esm/internal/shardManager.js.map +1 -0
  313. package/dist/esm/internal/shardManagerClient.js +38 -0
  314. package/dist/esm/internal/shardManagerClient.js.map +1 -0
  315. package/dist/esm/internal/shardManagerState.js +36 -0
  316. package/dist/esm/internal/shardManagerState.js.map +1 -0
  317. package/dist/esm/internal/sharding.js +288 -0
  318. package/dist/esm/internal/sharding.js.map +1 -0
  319. package/dist/esm/internal/shardingConfig.js +47 -0
  320. package/dist/esm/internal/shardingConfig.js.map +1 -0
  321. package/dist/esm/internal/storage.js +42 -0
  322. package/dist/esm/internal/storage.js.map +1 -0
  323. package/dist/esm/internal/utils.js +56 -0
  324. package/dist/esm/internal/utils.js.map +1 -0
  325. package/dist/esm/package.json +4 -0
  326. package/package.json +259 -0
  327. package/src/AtLeastOnce.ts +28 -0
  328. package/src/AtLeastOnceStorage.ts +96 -0
  329. package/src/Broadcaster.ts +48 -0
  330. package/src/ManagerConfig.ts +67 -0
  331. package/src/Message.ts +132 -0
  332. package/src/MessageState.ts +126 -0
  333. package/src/Messenger.ts +40 -0
  334. package/src/Pod.ts +95 -0
  335. package/src/PodAddress.ts +94 -0
  336. package/src/Pods.ts +100 -0
  337. package/src/PodsHealth.ts +74 -0
  338. package/src/PoisonPill.ts +105 -0
  339. package/src/RecipientAddress.ts +72 -0
  340. package/src/RecipientBehaviour.ts +108 -0
  341. package/src/RecipientBehaviourContext.ts +101 -0
  342. package/src/RecipientType.ts +134 -0
  343. package/src/Serialization.ts +72 -0
  344. package/src/SerializedEnvelope.ts +109 -0
  345. package/src/SerializedMessage.ts +82 -0
  346. package/src/ShardId.ts +79 -0
  347. package/src/ShardManager.ts +53 -0
  348. package/src/ShardManagerClient.ts +57 -0
  349. package/src/Sharding.ts +214 -0
  350. package/src/ShardingConfig.ts +76 -0
  351. package/src/ShardingEvent.ts +121 -0
  352. package/src/ShardingException.ts +151 -0
  353. package/src/ShardingRegistrationEvent.ts +62 -0
  354. package/src/Storage.ts +92 -0
  355. package/src/index.ts +139 -0
  356. package/src/internal/atLeastOnce.ts +59 -0
  357. package/src/internal/atLeastOnceStorage.ts +218 -0
  358. package/src/internal/entityManager.ts +404 -0
  359. package/src/internal/entityState.ts +64 -0
  360. package/src/internal/managerConfig.ts +84 -0
  361. package/src/internal/message.ts +64 -0
  362. package/src/internal/messageState.ts +98 -0
  363. package/src/internal/podWithMetadata.ts +72 -0
  364. package/src/internal/pods.ts +29 -0
  365. package/src/internal/podsHealth.ts +39 -0
  366. package/src/internal/recipientBehaviour.ts +133 -0
  367. package/src/internal/recipientBehaviourContext.ts +70 -0
  368. package/src/internal/serialization.ts +59 -0
  369. package/src/internal/shardManager.ts +593 -0
  370. package/src/internal/shardManagerClient.ts +49 -0
  371. package/src/internal/shardManagerState.ts +80 -0
  372. package/src/internal/sharding.ts +793 -0
  373. package/src/internal/shardingConfig.ts +97 -0
  374. package/src/internal/storage.ts +60 -0
  375. package/src/internal/utils.ts +54 -0
@@ -0,0 +1,39 @@
1
+ import * as Schema from "@effect/schema/Schema";
2
+ import * as TreeFormatter from "@effect/schema/TreeFormatter";
3
+ import * as Context from "effect/Context";
4
+ import * as Effect from "effect/Effect";
5
+ import { pipe } from "effect/Function";
6
+ import * as Layer from "effect/Layer";
7
+ import * as SerializedMessage from "../SerializedMessage.js";
8
+ import * as ShardingException from "../ShardingException.js";
9
+ /** @internal */
10
+ const SerializationSymbolKey = "@effect/cluster/Serialization";
11
+ /** @internal */
12
+ export const SerializationTypeId = /*#__PURE__*/Symbol.for(SerializationSymbolKey);
13
+ /** @internal */
14
+ export const serializationTag = /*#__PURE__*/Context.GenericTag(SerializationSymbolKey);
15
+ /** @internal */
16
+ function jsonStringify(value, schema) {
17
+ return pipe(value, Schema.encode(schema), Effect.mapError(e => new ShardingException.SerializationException({
18
+ error: TreeFormatter.formatError(e)
19
+ })), Effect.map(_ => JSON.stringify(_)));
20
+ }
21
+ /** @internal */
22
+ function jsonParse(value, schema) {
23
+ return pipe(Effect.sync(() => JSON.parse(value)), Effect.flatMap(Schema.decode(schema)), Effect.mapError(e => new ShardingException.SerializationException({
24
+ error: TreeFormatter.formatError(e)
25
+ })));
26
+ }
27
+ /** @internal */
28
+ export function make(args) {
29
+ return {
30
+ ...args,
31
+ [SerializationTypeId]: SerializationTypeId
32
+ };
33
+ }
34
+ /** @internal */
35
+ export const json = /*#__PURE__*/Layer.succeed(serializationTag, /*#__PURE__*/make({
36
+ encode: (schema, message) => pipe(jsonStringify(message, schema), Effect.map(SerializedMessage.make)),
37
+ decode: (schema, body) => jsonParse(body.value, schema)
38
+ }));
39
+ //# sourceMappingURL=serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.js","names":["Schema","TreeFormatter","Context","Effect","pipe","Layer","SerializedMessage","ShardingException","SerializationSymbolKey","SerializationTypeId","Symbol","for","serializationTag","GenericTag","jsonStringify","value","schema","encode","mapError","e","SerializationException","error","formatError","map","_","JSON","stringify","jsonParse","sync","parse","flatMap","decode","make","args","json","succeed","message","body"],"sources":["../../../src/internal/serialization.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,MAAM,MAAM,uBAAuB;AAC/C,OAAO,KAAKC,aAAa,MAAM,8BAA8B;AAC7D,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,IAAI,QAAQ,iBAAiB;AACtC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,OAAO,KAAKC,iBAAiB,MAAM,yBAAyB;AAC5D,OAAO,KAAKC,iBAAiB,MAAM,yBAAyB;AAE5D;AACA,MAAMC,sBAAsB,GAAG,+BAA+B;AAE9D;AACA,OAAO,MAAMC,mBAAmB,gBAAsCC,MAAM,CAACC,GAAG,CAC9EH,sBAAsB,CACc;AAEtC;AACA,OAAO,MAAMI,gBAAgB,gBAAGV,OAAO,CAACW,UAAU,CAA8BL,sBAAsB,CAAC;AAEvG;AACA,SAASM,aAAaA,CAAOC,KAAQ,EAAEC,MAA2B;EAChE,OAAOZ,IAAI,CACTW,KAAK,EACLf,MAAM,CAACiB,MAAM,CAACD,MAAM,CAAC,EACrBb,MAAM,CAACe,QAAQ,CAAEC,CAAC,IAAK,IAAIZ,iBAAiB,CAACa,sBAAsB,CAAC;IAAEC,KAAK,EAAEpB,aAAa,CAACqB,WAAW,CAACH,CAAC;EAAC,CAAE,CAAC,CAAC,EAC7GhB,MAAM,CAACoB,GAAG,CAAEC,CAAC,IAAKC,IAAI,CAACC,SAAS,CAACF,CAAC,CAAC,CAAC,CACrC;AACH;AAEA;AACA,SAASG,SAASA,CAAOZ,KAAa,EAAEC,MAA2B;EACjE,OAAOZ,IAAI,CACTD,MAAM,CAACyB,IAAI,CAAC,MAAMH,IAAI,CAACI,KAAK,CAACd,KAAK,CAAC,CAAC,EACpCZ,MAAM,CAAC2B,OAAO,CAAC9B,MAAM,CAAC+B,MAAM,CAACf,MAAM,CAAC,CAAC,EACrCb,MAAM,CAACe,QAAQ,CAAEC,CAAC,IAAK,IAAIZ,iBAAiB,CAACa,sBAAsB,CAAC;IAAEC,KAAK,EAAEpB,aAAa,CAACqB,WAAW,CAACH,CAAC;EAAC,CAAE,CAAC,CAAC,CAC9G;AACH;AAEA;AACA,OAAM,SAAUa,IAAIA,CAClBC,IAA0E;EAE1E,OAAQ;IAAE,GAAGA,IAAI;IAAE,CAACxB,mBAAmB,GAAGA;EAAmB,CAAE;AACjE;AAEA;AACA,OAAO,MAAMyB,IAAI,gBAA6C7B,KAAK,CAAC8B,OAAO,CACzEvB,gBAAgB,eAChBoB,IAAI,CAAC;EACHf,MAAM,EAAEA,CAACD,MAAM,EAAEoB,OAAO,KACtBhC,IAAI,CACFU,aAAa,CAACsB,OAAO,EAAEpB,MAAM,CAAC,EAC9Bb,MAAM,CAACoB,GAAG,CAACjB,iBAAiB,CAAC0B,IAAI,CAAC,CACnC;EACHD,MAAM,EAAEA,CAACf,MAAM,EAAEqB,IAAI,KAAKV,SAAS,CAACU,IAAI,CAACtB,KAAK,EAAEC,MAAM;CACvD,CAAC,CACH","ignoreList":[]}
@@ -0,0 +1,256 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Chunk from "effect/Chunk";
5
+ import * as Clock from "effect/Clock";
6
+ import { GenericTag } from "effect/Context";
7
+ import * as Effect from "effect/Effect";
8
+ import { equals } from "effect/Equal";
9
+ import { pipe } from "effect/Function";
10
+ import * as HashMap from "effect/HashMap";
11
+ import * as HashSet from "effect/HashSet";
12
+ import * as Layer from "effect/Layer";
13
+ import * as List from "effect/List";
14
+ import * as Option from "effect/Option";
15
+ import * as PubSub from "effect/PubSub";
16
+ import * as Schedule from "effect/Schedule";
17
+ import * as Stream from "effect/Stream";
18
+ import * as RefSynchronized from "effect/SynchronizedRef";
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";
29
+ /** @internal */
30
+ const ShardManagerSymbolKey = "@effect/cluster/ShardManager";
31
+ /** @internal */
32
+ export const ShardManagerTypeId = /*#__PURE__*/Symbol.for(ShardManagerSymbolKey);
33
+ /** @internal */
34
+ export const shardManagerTag = /*#__PURE__*/GenericTag(ShardManagerSymbolKey);
35
+ /** @internal */
36
+ function make(layerScope, stateRef, rebalanceSemaphore, eventsHub, healthApi, podApi, stateRepository, config) {
37
+ const getAssignments = pipe(RefSynchronized.get(stateRef), Effect.map(_ => _.shards));
38
+ const getShardingEvents = Stream.fromPubSub(eventsHub);
39
+ function register(pod) {
40
+ return pipe(Effect.logDebug("Registering " + pod.address + "@" + pod.version), Effect.zipRight(RefSynchronized.updateAndGetEffect(stateRef, state => 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);
41
+ }
42
+ function stateHasPod(podAddress) {
43
+ return pipe(RefSynchronized.get(stateRef), Effect.map(_ => HashMap.has(_.pods, podAddress)));
44
+ }
45
+ function notifyUnhealthyPod(podAddress) {
46
+ return pipe(Effect.whenEffect(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);
47
+ }
48
+ const checkAllPodsHealth = pipe(RefSynchronized.get(stateRef), Effect.map(_ => HashMap.keySet(_.pods)), Effect.flatMap(_ => Effect.forEach(_, notifyUnhealthyPod, {
49
+ concurrency: 4,
50
+ discard: true
51
+ })));
52
+ function unregister(podAddress) {
53
+ const eff = pipe(Effect.Do, Effect.zipLeft(Effect.logDebug(`Unregistering ${podAddress}`)), Effect.bind("unassignments", _ => pipe(stateRef, RefSynchronized.modify(state => [pipe(state.shards, HashMap.filter(pod => equals(pod)(Option.some(podAddress))), HashMap.keySet), {
54
+ ...state,
55
+ pods: HashMap.remove(state.pods, podAddress),
56
+ shards: HashMap.map(state.shards, _ => equals(_)(Option.some(podAddress)) ? Option.none() : _)
57
+ }]))), 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))));
58
+ return Effect.asVoid(Effect.whenEffect(eff, stateHasPod(podAddress)));
59
+ }
60
+ function withRetry(zio) {
61
+ return pipe(zio, Effect.retry(pipe(Schedule.spaced(config.persistRetryInterval), Schedule.andThen(Schedule.recurs(config.persistRetryCount)))), Effect.ignore);
62
+ }
63
+ const persistAssignments = withRetry(pipe(RefSynchronized.get(stateRef), Effect.flatMap(state => stateRepository.saveAssignments(state.shards))));
64
+ const persistPods = withRetry(pipe(RefSynchronized.get(stateRef), Effect.flatMap(state => stateRepository.savePods(HashMap.map(state.pods, v => v.pod)))));
65
+ function updateShardsState(shards, pod) {
66
+ return RefSynchronized.updateEffect(stateRef, state => {
67
+ if (Option.isSome(pod) && !HashMap.has(state.pods, pod.value)) {
68
+ return Effect.fail(new ShardingException.PodNoLongerRegisteredException({
69
+ podAddress: pod.value
70
+ }));
71
+ }
72
+ return Effect.succeed({
73
+ ...state,
74
+ shards: pipe(state.shards, HashMap.map((assignment, shard) => HashSet.has(shards, shard) ? pod : assignment))
75
+ });
76
+ });
77
+ }
78
+ function rebalance(rebalanceImmediately) {
79
+ const algo = Effect.gen(function* (_) {
80
+ const state = yield* _(RefSynchronized.get(stateRef));
81
+ const [assignments, unassignments] = rebalanceImmediately || HashSet.size(state.unassignedShards) > 0 ? decideAssignmentsForUnassignedShards(state) : decideAssignmentsForUnbalancedShards(state, config.rebalanceRate);
82
+ const areChanges = HashMap.size(assignments) > 0 || HashMap.size(unassignments) > 0;
83
+ if (areChanges) {
84
+ yield* _(Effect.logDebug("Rebalance (rebalanceImmidiately=" + JSON.stringify(rebalanceImmediately) + ")"));
85
+ }
86
+ const failedPingedPods = yield* _(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* _(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* _(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* _(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);
130
+ }
131
+ return {
132
+ getAssignments,
133
+ getShardingEvents,
134
+ register,
135
+ unregister,
136
+ persistPods,
137
+ rebalance,
138
+ notifyUnhealthyPod,
139
+ checkAllPodsHealth
140
+ };
141
+ }
142
+ /** @internal */
143
+ export function decideAssignmentsForUnassignedShards(state) {
144
+ return pickNewPods(List.fromIterable(state.unassignedShards), state, true, 1);
145
+ }
146
+ /** @internal */
147
+ export function decideAssignmentsForUnbalancedShards(state, rebalanceRate) {
148
+ // don't do regular rebalance in the middle of a rolling update
149
+ const extraShardsToAllocate = state.allPodsHaveMaxVersion ? pipe(state.shardsPerPod, HashMap.flatMap((shards, _) => {
150
+ // count how many extra shards compared to the average
151
+ const extraShards = Math.max(HashSet.size(shards) - state.averageShardsPerPod.value, 0);
152
+ return pipe(HashMap.empty(), HashMap.set(_, HashSet.fromIterable(List.take(List.fromIterable(shards), extraShards))));
153
+ }), HashSet.fromIterable, HashSet.map(_ => _[1]), HashSet.flatMap(_ => _)) : HashSet.empty();
154
+ /*
155
+ TODO: port sortBy
156
+ val sortedShardsToRebalance = extraShardsToAllocate.toList.sortBy { shard =>
157
+ // handle unassigned shards first, then shards on the pods with most shards, then shards on old pods
158
+ state.shards.get(shard).flatten.fold((Int.MinValue, OffsetDateTime.MIN)) { pod =>
159
+ (
160
+ state.shardsPerPod.get(pod).fold(Int.MinValue)(-_.size),
161
+ state.pods.get(pod).fold(OffsetDateTime.MIN)(_.registered)
162
+ )
163
+ }
164
+ }
165
+ * */
166
+ const sortedShardsToRebalance = List.fromIterable(extraShardsToAllocate);
167
+ return pickNewPods(sortedShardsToRebalance, state, false, rebalanceRate);
168
+ }
169
+ function pickNewPods(shardsToRebalance, state, rebalanceImmediately, rebalanceRate) {
170
+ const [_, assignments] = pipe(List.reduce(shardsToRebalance, [state.shardsPerPod, List.empty()], ([shardsPerPod, assignments], shard) => {
171
+ const unassignedPods = pipe(assignments, List.flatMap(([shard, _]) => pipe(HashMap.get(state.shards, shard), Option.flatten, Option.toArray, List.fromIterable)));
172
+ // find pod with least amount of shards
173
+ return pipe(
174
+ // keep only pods with the max version
175
+ HashMap.filter(shardsPerPod, (_, pod) => {
176
+ const maxVersion = state.maxVersion;
177
+ if (Option.isNone(maxVersion)) return true;
178
+ return pipe(HashMap.get(state.pods, pod), Option.map(PodWithMetadata.extractVersion), Option.map(_ => PodWithMetadata.compareVersion(_, maxVersion.value) === 0), Option.getOrElse(() => false));
179
+ }),
180
+ // don't assign too many shards to the same pods, unless we need rebalance immediately
181
+ HashMap.filter((_, pod) => {
182
+ if (rebalanceImmediately) return true;
183
+ return pipe(assignments, List.filter(([_, p]) => equals(p)(pod)), List.size) < HashMap.size(state.shards) * rebalanceRate;
184
+ }),
185
+ // don't assign to a pod that was unassigned in the same rebalance
186
+ HashMap.filter((_, pod) => !Option.isSome(List.findFirst(unassignedPods, equals(pod)))), minByOption(([_, pods]) => HashSet.size(pods)), Option.match({
187
+ onNone: () => [shardsPerPod, assignments],
188
+ onSome: ([pod, shards]) => {
189
+ const oldPod = Option.flatten(HashMap.get(state.shards, shard));
190
+ // if old pod is same as new pod, don't change anything
191
+ if (equals(oldPod)(pod)) {
192
+ return [shardsPerPod, assignments];
193
+ // if the new pod has more, as much, or only 1 less shard than the old pod, don't change anything
194
+ } else if (Option.match(HashMap.get(shardsPerPod, pod), {
195
+ onNone: () => 0,
196
+ onSome: HashSet.size
197
+ }) + 1 >= Option.match(oldPod, {
198
+ onNone: () => Number.MAX_SAFE_INTEGER,
199
+ onSome: _ => Option.match(HashMap.get(shardsPerPod, _), {
200
+ onNone: () => 0,
201
+ onSome: HashSet.size
202
+ })
203
+ })) {
204
+ return [shardsPerPod, assignments];
205
+ // otherwise, create a new assignment
206
+ } else {
207
+ const unassigned = Option.match(oldPod, {
208
+ onNone: () => shardsPerPod,
209
+ onSome: oldPod => HashMap.modify(shardsPerPod, oldPod, HashSet.remove(shard))
210
+ });
211
+ return [HashMap.modify(unassigned, pod, _ => HashSet.add(shards, shard)), List.prepend(assignments, [shard, pod])];
212
+ }
213
+ }
214
+ }));
215
+ }));
216
+ const unassignments = List.flatMap(assignments, ([shard, _]) => pipe(Option.flatten(HashMap.get(state.shards, shard)), Option.map(_ => [shard, _]), Option.match({
217
+ onNone: List.empty,
218
+ onSome: List.of
219
+ })));
220
+ const assignmentsPerPod = pipe(assignments, groupBy(([_, pod]) => pod), HashMap.map(HashSet.map(([shardId, _]) => shardId)));
221
+ const unassignmentsPerPod = pipe(unassignments, groupBy(([_, pod]) => pod), HashMap.map(HashSet.map(([shardId, _]) => shardId)));
222
+ return [assignmentsPerPod, unassignmentsPerPod];
223
+ }
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* _(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* _(shardManager.rebalance(false), Effect.repeat(Schedule.spaced(config.rebalanceInterval)), Effect.forkIn(layerScope));
251
+ // log info events
252
+ yield* _(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
+ //# sourceMappingURL=shardManager.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,38 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import { pipe } from "effect/Function";
4
+ import * as HashMap from "effect/HashMap";
5
+ import * as Layer from "effect/Layer";
6
+ import * as Option from "effect/Option";
7
+ import * as PodAddress from "../PodAddress.js";
8
+ import * as ShardId from "../ShardId.js";
9
+ import * as ShardingConfig from "../ShardingConfig.js";
10
+ /** @internal */
11
+ const ShardManagerSymbolKey = "@effect/cluster/ShardManagerClient";
12
+ /** @internal */
13
+ export const ShardManagerClientTypeId = /*#__PURE__*/Symbol.for(ShardManagerSymbolKey);
14
+ /** @internal */
15
+ export const shardManagerClientTag = /*#__PURE__*/Context.GenericTag(ShardManagerSymbolKey);
16
+ /** @internal */
17
+ export function make(args) {
18
+ return {
19
+ [ShardManagerClientTypeId]: ShardManagerClientTypeId,
20
+ ...args
21
+ };
22
+ }
23
+ /** @internal */
24
+ export const local = /*#__PURE__*/pipe( /*#__PURE__*/Layer.effect(shardManagerClientTag, /*#__PURE__*/Effect.gen(function* ($) {
25
+ const config = yield* $(ShardingConfig.ShardingConfig);
26
+ const pod = PodAddress.make(config.selfHost, config.shardingPort);
27
+ let shards = HashMap.empty();
28
+ for (let i = 1; i <= config.numberOfShards; i++) {
29
+ shards = HashMap.set(shards, ShardId.make(i), Option.some(pod));
30
+ }
31
+ return make({
32
+ register: () => Effect.void,
33
+ unregister: () => Effect.void,
34
+ notifyUnhealthyPod: () => Effect.void,
35
+ getAssignments: Effect.succeed(shards)
36
+ });
37
+ })));
38
+ //# sourceMappingURL=shardManagerClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shardManagerClient.js","names":["Context","Effect","pipe","HashMap","Layer","Option","PodAddress","ShardId","ShardingConfig","ShardManagerSymbolKey","ShardManagerClientTypeId","Symbol","for","shardManagerClientTag","GenericTag","make","args","local","effect","gen","$","config","pod","selfHost","shardingPort","shards","empty","i","numberOfShards","set","some","register","void","unregister","notifyUnhealthyPod","getAssignments","succeed"],"sources":["../../../src/internal/shardManagerClient.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,IAAI,QAAQ,iBAAiB;AACtC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,UAAU,MAAM,kBAAkB;AAC9C,OAAO,KAAKC,OAAO,MAAM,eAAe;AACxC,OAAO,KAAKC,cAAc,MAAM,sBAAsB;AAGtD;AACA,MAAMC,qBAAqB,GAAG,oCAAoC;AAElE;AACA,OAAO,MAAMC,wBAAwB,gBAAgDC,MAAM,CAACC,GAAG,CAC7FH,qBAAqB,CACyB;AAEhD;AACA,OAAO,MAAMI,qBAAqB,gBAAGb,OAAO,CAACc,UAAU,CAAwCL,qBAAqB,CAAC;AAErH;AACA,OAAM,SAAUM,IAAIA,CAClBC,IAA8F;EAE9F,OAAQ;IAAE,CAACN,wBAAwB,GAAGA,wBAAwB;IAAE,GAAGM;EAAI,CAAE;AAC3E;AAEA;AACA,OAAO,MAAMC,KAAK,gBAAGf,IAAI,eACvBE,KAAK,CAACc,MAAM,CACVL,qBAAqB,eACrBZ,MAAM,CAACkB,GAAG,CAAC,WAAUC,CAAC;EACpB,MAAMC,MAAM,GAAG,OAAOD,CAAC,CAACZ,cAAc,CAACA,cAAc,CAAC;EACtD,MAAMc,GAAG,GAAGhB,UAAU,CAACS,IAAI,CAACM,MAAM,CAACE,QAAQ,EAAEF,MAAM,CAACG,YAAY,CAAC;EACjE,IAAIC,MAAM,GAAGtB,OAAO,CAACuB,KAAK,EAAyD;EACnF,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIN,MAAM,CAACO,cAAc,EAAED,CAAC,EAAE,EAAE;IAC/CF,MAAM,GAAGtB,OAAO,CAAC0B,GAAG,CAACJ,MAAM,EAAElB,OAAO,CAACQ,IAAI,CAACY,CAAC,CAAC,EAAEtB,MAAM,CAACyB,IAAI,CAACR,GAAG,CAAC,CAAC;EACjE;EACA,OAAOP,IAAI,CAAC;IACVgB,QAAQ,EAAEA,CAAA,KAAM9B,MAAM,CAAC+B,IAAI;IAC3BC,UAAU,EAAEA,CAAA,KAAMhC,MAAM,CAAC+B,IAAI;IAC7BE,kBAAkB,EAAEA,CAAA,KAAMjC,MAAM,CAAC+B,IAAI;IACrCG,cAAc,EAAElC,MAAM,CAACmC,OAAO,CAACX,MAAM;GACtC,CAAC;AACJ,CAAC,CAAC,CACH,CACF","ignoreList":[]}
@@ -0,0 +1,36 @@
1
+ import { equals } from "effect/Equal";
2
+ import { pipe } from "effect/Function";
3
+ import * as HashMap from "effect/HashMap";
4
+ import * as HashSet from "effect/HashSet";
5
+ import * as List from "effect/List";
6
+ import * as Option from "effect/Option";
7
+ import * as ShardId from "../ShardId.js";
8
+ import * as PodWithMetadata from "./podWithMetadata.js";
9
+ /**
10
+ * @since 1.0.0
11
+ * @category constructors
12
+ */
13
+ export function make(pods, shards) {
14
+ const podVersions = pipe(HashMap.values(pods), List.fromIterable, List.map(PodWithMetadata.extractVersion));
15
+ const maxVersion = pipe(podVersions, List.reduce(List.empty(), (curr, a) => PodWithMetadata.compareVersion(curr, a) === -1 ? a : curr), result => List.size(result) === 0 ? Option.none() : Option.some(result));
16
+ const shardsPerPodPods = pipe(HashMap.reduce(shards, HashMap.empty(), (curr, optionPod, shardId) => {
17
+ if (Option.isNone(optionPod)) return curr;
18
+ if (HashMap.has(curr, optionPod.value)) {
19
+ return HashMap.modify(curr, optionPod.value, HashSet.add(shardId));
20
+ } else {
21
+ return HashMap.set(curr, optionPod.value, HashSet.fromIterable([shardId]));
22
+ }
23
+ }));
24
+ const shardsPerPod = pipe(HashMap.map(pods, () => HashSet.empty()), HashMap.union(shardsPerPodPods));
25
+ const allPodsHaveMaxVersion = List.every(podVersions, _ => equals(Option.some(_))(maxVersion));
26
+ return {
27
+ pods,
28
+ shards,
29
+ unassignedShards: pipe(HashMap.filter(shards, (a, _) => Option.isNone(a)), HashSet.fromIterable, HashSet.map(([k, _]) => k)),
30
+ averageShardsPerPod: pipe(HashMap.isEmpty(pods) ? ShardId.make(0) : ShardId.make(HashMap.size(shards) / HashMap.size(pods))),
31
+ shardsPerPod,
32
+ maxVersion,
33
+ allPodsHaveMaxVersion
34
+ };
35
+ }
36
+ //# sourceMappingURL=shardManagerState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shardManagerState.js","names":["equals","pipe","HashMap","HashSet","List","Option","ShardId","PodWithMetadata","make","pods","shards","podVersions","values","fromIterable","map","extractVersion","maxVersion","reduce","empty","curr","a","compareVersion","result","size","none","some","shardsPerPodPods","optionPod","shardId","isNone","has","value","modify","add","set","shardsPerPod","union","allPodsHaveMaxVersion","every","_","unassignedShards","filter","k","averageShardsPerPod","isEmpty"],"sources":["../../../src/internal/shardManagerState.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}