@effect/cluster 0.28.4 → 0.29.1

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 +731 -91
  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 +64 -133
  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 +729 -90
  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 +1059 -186
  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,166 +3,334 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.EntityManagerTypeId = void 0;
7
- exports.make = make;
8
- var Clock = _interopRequireWildcard(require("effect/Clock"));
6
+ exports.make = void 0;
7
+ var _RpcMessage = require("@effect/rpc/RpcMessage");
8
+ var RpcServer = _interopRequireWildcard(require("@effect/rpc/RpcServer"));
9
+ var Arr = _interopRequireWildcard(require("effect/Array"));
10
+ var Cause = _interopRequireWildcard(require("effect/Cause"));
11
+ var Context = _interopRequireWildcard(require("effect/Context"));
9
12
  var Duration = _interopRequireWildcard(require("effect/Duration"));
10
13
  var Effect = _interopRequireWildcard(require("effect/Effect"));
11
14
  var Exit = _interopRequireWildcard(require("effect/Exit"));
12
- var Fiber = _interopRequireWildcard(require("effect/Fiber"));
15
+ var FiberRef = _interopRequireWildcard(require("effect/FiberRef"));
13
16
  var _Function = require("effect/Function");
14
17
  var HashMap = _interopRequireWildcard(require("effect/HashMap"));
15
- var HashSet = _interopRequireWildcard(require("effect/HashSet"));
18
+ var Metric = _interopRequireWildcard(require("effect/Metric"));
16
19
  var Option = _interopRequireWildcard(require("effect/Option"));
20
+ var Schedule = _interopRequireWildcard(require("effect/Schedule"));
21
+ var Schema = _interopRequireWildcard(require("effect/Schema"));
17
22
  var Scope = _interopRequireWildcard(require("effect/Scope"));
18
- var RefSynchronized = _interopRequireWildcard(require("effect/SynchronizedRef"));
23
+ var _ClusterError = require("../ClusterError.js");
24
+ var ClusterMetrics = _interopRequireWildcard(require("../ClusterMetrics.js"));
25
+ var _ClusterSchema = require("../ClusterSchema.js");
26
+ var _Entity = require("../Entity.js");
27
+ var Envelope = _interopRequireWildcard(require("../Envelope.js"));
19
28
  var Message = _interopRequireWildcard(require("../Message.js"));
20
- var MessageState = _interopRequireWildcard(require("../MessageState.js"));
21
- var RecipientBehaviourContext = _interopRequireWildcard(require("../RecipientBehaviourContext.js"));
22
- var ShardingException = _interopRequireWildcard(require("../ShardingException.js"));
23
- var EntityState = _interopRequireWildcard(require("./entityState.js"));
29
+ var MessageStorage = _interopRequireWildcard(require("../MessageStorage.js"));
30
+ var Reply = _interopRequireWildcard(require("../Reply.js"));
31
+ var _ShardingConfig = require("../ShardingConfig.js");
32
+ var Snowflake = _interopRequireWildcard(require("../Snowflake.js"));
33
+ var _entityReaper = require("./entityReaper.js");
34
+ var _interruptors = require("./interruptors.js");
35
+ var _resourceMap = require("./resourceMap.js");
36
+ var _resourceRef = require("./resourceRef.js");
24
37
  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); }
25
38
  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; }
26
39
  /** @internal */
27
- const EntityManagerSymbolKey = "@effect/cluster/EntityManager";
28
- /** @internal */
29
- const EntityManagerTypeId = exports.EntityManagerTypeId = /*#__PURE__*/Symbol.for(EntityManagerSymbolKey);
30
- /** @internal */
31
- function make(recipientType, recipientBehaviour, sharding, config, serialization, options = {}) {
32
- return Effect.gen(function* () {
33
- const entityMaxIdle = options.entityMaxIdleTime || Option.none();
34
- const env = yield* Effect.context();
35
- const entityStates = yield* RefSynchronized.make(HashMap.empty());
36
- function startExpirationFiber(recipientAddress) {
37
- const maxIdleMillis = (0, _Function.pipe)(entityMaxIdle, Option.getOrElse(() => config.entityMaxIdleTime), Duration.toMillis);
38
- function sleep(duration) {
39
- return (0, _Function.pipe)(Effect.Do, Effect.zipLeft(Clock.sleep(Duration.millis(duration))), Effect.bind("cdt", () => Clock.currentTimeMillis), Effect.bind("map", () => RefSynchronized.get(entityStates)), Effect.let("lastReceivedAt", ({
40
- map
41
- }) => (0, _Function.pipe)(HashMap.get(map, recipientAddress), Option.map(_ => _.lastReceivedAt), Option.getOrElse(() => 0))), Effect.let("remaining", ({
42
- cdt,
43
- lastReceivedAt
44
- }) => maxIdleMillis - cdt + lastReceivedAt), Effect.tap(_ => _.remaining > 0 ? sleep(_.remaining) : Effect.void));
45
- }
46
- return (0, _Function.pipe)(sleep(maxIdleMillis), Effect.zipRight(forkEntityTermination(recipientAddress)), Effect.asVoid, Effect.interruptible, Effect.annotateLogs("entityId", recipientAddress), Effect.annotateLogs("recipientType", recipientType.name), Effect.forkDaemon);
40
+ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandlers, options) {
41
+ const config = yield* _ShardingConfig.ShardingConfig;
42
+ const snowflakeGen = yield* Snowflake.Generator;
43
+ const managerScope = yield* Effect.scope;
44
+ const storageEnabled = options.storage !== MessageStorage.noop;
45
+ const mailboxCapacity = options.mailboxCapacity ?? config.entityMailboxCapacity;
46
+ const clock = yield* Effect.clock;
47
+ const context = yield* Effect.context();
48
+ const activeServers = new Map();
49
+ const entities = yield* _resourceMap.ResourceMap.make(Effect.fnUntraced(function* (address) {
50
+ if (yield* options.sharding.isShutdown) {
51
+ return yield* new _ClusterError.EntityNotManagedByRunner({
52
+ address
53
+ });
47
54
  }
48
- /**
49
- * Performs proper termination of the entity, interrupting the expiration timer, closing the scope and failing pending replies
50
- */
51
- function terminateEntity(recipientAddress) {
52
- return (0, _Function.pipe)(
53
- // get the things to cleanup
54
- RefSynchronized.get(entityStates), Effect.map(HashMap.get(recipientAddress)), Effect.flatMap(Option.match({
55
- // there is no entity state to cleanup
56
- onNone: () => Effect.void,
57
- // found it!
58
- onSome: entityState => (0, _Function.pipe)(
59
- // interrupt the expiration timer
60
- Fiber.interrupt(entityState.expirationFiber),
61
- // close the scope of the entity,
62
- Effect.ensuring(Scope.close(entityState.executionScope, Exit.void)),
63
- // remove the entry from the map
64
- Effect.ensuring(RefSynchronized.update(entityStates, HashMap.remove(recipientAddress))),
65
- // log error if happens
66
- Effect.catchAllCause(Effect.logError), Effect.asVoid, Effect.annotateLogs("entityId", recipientAddress.entityId), Effect.annotateLogs("recipientType", recipientAddress.recipientTypeName))
67
- })));
68
- }
69
- /**
70
- * Begins entity termination (if needed) and return the fiber to wait for completed termination (if any)
71
- */
72
- function forkEntityTermination(recipientAddress) {
73
- return RefSynchronized.modifyEffect(entityStates, entityStatesMap => (0, _Function.pipe)(HashMap.get(entityStatesMap, recipientAddress), Option.match({
74
- // if no entry is found, the entity has succefully shut down
75
- onNone: () => Effect.succeed([Option.none(), entityStatesMap]),
76
- // there is an entry, so we should begin termination
77
- onSome: entityState => (0, _Function.pipe)(entityState.terminationFiber, Option.match({
78
- // termination has already begun, keep everything as-is
79
- onSome: () => Effect.succeed([entityState.terminationFiber, entityStatesMap]),
80
- // begin to terminate the queue
81
- onNone: () => (0, _Function.pipe)(terminateEntity(recipientAddress), Effect.forkDaemon, Effect.map(terminationFiber => [Option.some(terminationFiber), HashMap.modify(entityStatesMap, recipientAddress, EntityState.withTerminationFiber(terminationFiber))]))
82
- }))
83
- })));
84
- }
85
- function getOrCreateEntityState(recipientAddress) {
86
- return RefSynchronized.modifyEffect(entityStates, map => (0, _Function.pipe)(HashMap.get(map, recipientAddress), Option.match({
87
- onSome: entityState => (0, _Function.pipe)(entityState.terminationFiber, Option.match({
88
- // offer exists, delay the interruption fiber and return the offer
89
- onNone: () => (0, _Function.pipe)(Clock.currentTimeMillis, Effect.map(cdt => [Option.some(entityState), HashMap.modify(map, recipientAddress, EntityState.withLastReceivedAd(cdt))])),
90
- // the queue is shutting down, stash and retry
91
- onSome: () => Effect.succeed([Option.none(), map])
92
- })),
93
- onNone: () => Effect.flatMap(sharding.isShuttingDown, isGoingDown => {
94
- if (isGoingDown) {
95
- // don't start any fiber while sharding is shutting down
96
- return Effect.fail(new ShardingException.EntityNotManagedByThisPodException({
97
- recipientAddress
98
- }));
99
- } else {
100
- // offer doesn't exist, create a new one
101
- return Effect.gen(function* () {
102
- const executionScope = yield* Scope.make();
103
- const expirationFiber = yield* startExpirationFiber(recipientAddress);
104
- const cdt = yield* Clock.currentTimeMillis;
105
- const forkShutdown = (0, _Function.pipe)(forkEntityTermination(recipientAddress), Effect.asVoid);
106
- const shardId = sharding.getShardId(recipientAddress);
107
- const sendAndGetState = yield* (0, _Function.pipe)(recipientBehaviour, Effect.map(offer => envelope => (0, _Function.pipe)(serialization.decode(recipientType.schema, envelope.body), Effect.flatMap(message => (0, _Function.pipe)(offer(message), Effect.flatMap(_ => MessageState.mapEffect(_, value => serialization.encode(Message.exitSchema(message), value))))))), Scope.extend(executionScope), Effect.provideService(RecipientBehaviourContext.RecipientBehaviourContext, RecipientBehaviourContext.make({
108
- recipientAddress,
109
- shardId,
110
- recipientType: recipientType,
111
- forkShutdown
112
- })), Effect.provide(env));
113
- const entityState = EntityState.make({
114
- sendAndGetState,
115
- expirationFiber,
116
- executionScope,
117
- terminationFiber: Option.none(),
118
- lastReceivedAt: cdt
119
- });
120
- return [Option.some(entityState), HashMap.set(map, recipientAddress, entityState)];
121
- });
55
+ const scope = yield* Effect.scope;
56
+ const endLatch = yield* Effect.makeLatch();
57
+ // on shutdown, reset the storage for the entity
58
+ yield* Scope.addFinalizer(scope, Effect.ignore(options.storage.resetAddress(address)));
59
+ const activeRequests = new Map();
60
+ let defectRequestIds = [];
61
+ // the server is stored in a ref, so if there is a defect, we can
62
+ // swap the server without losing the active requests
63
+ const writeRef = yield* _resourceRef.ResourceRef.from(scope, Effect.fnUntraced(function* (scope) {
64
+ let isShuttingDown = false;
65
+ // Initiate the behavior for the entity
66
+ const handlers = yield* entity.protocol.toHandlersContext(buildHandlers).pipe(Effect.provide(context.pipe(Context.add(_Entity.CurrentAddress, address), Context.add(_Entity.CurrentRunnerAddress, options.runnerAddress), Context.add(Scope.Scope, scope))), Effect.locally(FiberRef.currentLogAnnotations, HashMap.empty()));
67
+ const server = yield* RpcServer.makeNoSerialization(entity.protocol, {
68
+ spanPrefix: `${entity.type}(${address.entityId})`,
69
+ concurrency: options.concurrency ?? 1,
70
+ onFromServer(response) {
71
+ switch (response._tag) {
72
+ case "Exit":
73
+ {
74
+ const request = activeRequests.get(response.requestId);
75
+ if (!request) return Effect.void;
76
+ // For durable messages, ignore interrupts during shutdown.
77
+ // They will be retried when the entity is restarted.
78
+ if (storageEnabled && isShuttingDown && Context.get(request.rpc.annotations, _ClusterSchema.Persisted) && Exit.isInterrupted(response.exit)) {
79
+ return Effect.void;
80
+ }
81
+ return retryRespond(4, Effect.suspend(() => request.message.respond(new Reply.WithExit({
82
+ requestId: Snowflake.Snowflake(response.requestId),
83
+ id: snowflakeGen.unsafeNext(),
84
+ exit: response.exit
85
+ })))).pipe(Effect.flatMap(() => {
86
+ activeRequests.delete(response.requestId);
87
+ // ensure that the reaper does not remove the entity as we haven't
88
+ // been "idle" yet
89
+ if (activeRequests.size === 0) {
90
+ state.lastActiveCheck = clock.unsafeCurrentTimeMillis();
91
+ }
92
+ return Effect.void;
93
+ }), Effect.orDie);
94
+ }
95
+ case "Chunk":
96
+ {
97
+ const request = activeRequests.get(response.requestId);
98
+ if (!request) return Effect.void;
99
+ const sequence = request.sequence;
100
+ request.sequence++;
101
+ return Effect.orDie(retryRespond(4, Effect.suspend(() => {
102
+ const reply = new Reply.Chunk({
103
+ requestId: Snowflake.Snowflake(response.requestId),
104
+ id: snowflakeGen.unsafeNext(),
105
+ sequence,
106
+ values: response.values
107
+ });
108
+ request.lastSentChunk = Option.some(reply);
109
+ return request.message.respond(reply);
110
+ })));
111
+ }
112
+ case "Defect":
113
+ {
114
+ const effect = writeRef.unsafeRebuild();
115
+ defectRequestIds = Array.from(activeRequests.keys());
116
+ return Effect.logError("Defect in entity, restarting", Cause.die(response.defect)).pipe(Effect.andThen(effect.pipe(Effect.tapErrorCause(Effect.logError), Effect.retry(Schedule.spaced(500)))), Effect.annotateLogs({
117
+ module: "EntityManager",
118
+ address,
119
+ runner: options.runnerAddress
120
+ }));
121
+ }
122
+ case "ClientEnd":
123
+ {
124
+ return endLatch.open;
125
+ }
122
126
  }
123
- })
124
- })));
125
- }
126
- function sendAndGetState(envelope) {
127
- return (0, _Function.pipe)(Effect.Do, Effect.tap(() => {
128
- // first, verify that this entity should be handled by this pod
129
- if (recipientType._tag === "EntityType") {
130
- return Effect.asVoid(Effect.unlessEffect(Effect.fail(new ShardingException.EntityNotManagedByThisPodException({
131
- recipientAddress: envelope.recipientAddress
132
- })), sharding.isEntityOnLocalShards(envelope.recipientAddress)));
133
- } else if (recipientType._tag === "TopicType") {
134
- return Effect.void;
135
127
  }
136
- return Effect.die("Unhandled recipientType");
137
- }), Effect.bind("maybeEntityState", () => getOrCreateEntityState(envelope.recipientAddress)), Effect.flatMap(_ => (0, _Function.pipe)(_.maybeEntityState, Option.match({
138
- onNone: () => (0, _Function.pipe)(Effect.sleep(Duration.millis(100)), Effect.flatMap(() => sendAndGetState(envelope))),
139
- onSome: entityState => {
140
- return entityState.sendAndGetState(envelope);
128
+ }).pipe(Scope.extend(scope), Effect.provide(handlers));
129
+ yield* Scope.addFinalizer(scope, Effect.sync(() => {
130
+ isShuttingDown = true;
131
+ }));
132
+ for (const id of defectRequestIds) {
133
+ const {
134
+ lastSentChunk,
135
+ message
136
+ } = activeRequests.get(id);
137
+ yield* server.write(0, {
138
+ ...message.envelope,
139
+ id: (0, _RpcMessage.RequestId)(message.envelope.requestId),
140
+ tag: message.envelope.tag,
141
+ payload: new _Entity.Request({
142
+ ...message.envelope,
143
+ lastSentChunk
144
+ })
145
+ });
146
+ }
147
+ defectRequestIds = [];
148
+ return server.write;
149
+ }));
150
+ const state = {
151
+ address,
152
+ mailboxGauge: ClusterMetrics.mailboxSize.pipe(Metric.tagged("type", entity.type), Metric.tagged("entityId", address.entityId)),
153
+ write(clientId, message) {
154
+ if (writeRef.state.current._tag !== "Acquired") {
155
+ return Effect.flatMap(writeRef.await, write => write(clientId, message));
141
156
  }
142
- }))));
157
+ return writeRef.state.current.value(clientId, message);
158
+ },
159
+ activeRequests,
160
+ lastActiveCheck: clock.unsafeCurrentTimeMillis()
161
+ };
162
+ // During shutdown, signal that no more messages will be processed
163
+ // and wait for the fiber to complete.
164
+ //
165
+ // If the termination timeout is reached, let the server clean itself up
166
+ yield* Scope.addFinalizer(scope, Effect.withFiberRuntime(fiber => {
167
+ activeServers.delete(address.entityId);
168
+ _interruptors.internalInterruptors.add(fiber.id());
169
+ return state.write(0, {
170
+ _tag: "Eof"
171
+ }).pipe(Effect.andThen(Effect.interruptible(endLatch.await)), Effect.timeoutOption(config.entityTerminationTimeout));
172
+ }));
173
+ activeServers.set(address.entityId, state);
174
+ return state;
175
+ }, Effect.locally(FiberRef.currentLogAnnotations, HashMap.empty())));
176
+ const reaper = yield* _entityReaper.EntityReaper;
177
+ const maxIdleTime = Duration.toMillis(options.maxIdleTime ?? config.entityMaxIdleTime);
178
+ if (Number.isFinite(maxIdleTime)) {
179
+ yield* reaper.register({
180
+ maxIdleTime,
181
+ servers: activeServers,
182
+ entities
183
+ });
184
+ }
185
+ // update metrics for active servers
186
+ const gauge = ClusterMetrics.entities.pipe(Metric.tagged("type", entity.type));
187
+ yield* Effect.sync(() => {
188
+ gauge.unsafeUpdate(BigInt(activeServers.size), []);
189
+ for (const state of activeServers.values()) {
190
+ state.mailboxGauge.unsafeUpdate(BigInt(state.activeRequests.size), []);
143
191
  }
144
- const terminateAllEntities = (0, _Function.pipe)(RefSynchronized.get(entityStates), Effect.map(HashMap.keySet), Effect.flatMap(terminateEntities));
145
- function terminateEntities(entitiesToTerminate) {
146
- return (0, _Function.pipe)(entitiesToTerminate, Effect.forEach(recipientAddress => (0, _Function.pipe)(forkEntityTermination(recipientAddress), Effect.flatMap(_ => Option.match(_, {
147
- onNone: () => Effect.void,
148
- onSome: terminationFiber => (0, _Function.pipe)(Fiber.await(terminationFiber), Effect.timeout(config.entityTerminationTimeout), Effect.match({
149
- onFailure: () => Effect.logError(`Entity ${recipientAddress} termination is taking more than expected entityTerminationTimeout (${Duration.toMillis(config.entityTerminationTimeout)}ms).`),
150
- onSuccess: () => Effect.logDebug(`Entity ${recipientAddress} cleaned up.`)
151
- }), Effect.asVoid)
152
- }))), {
153
- concurrency: "inherit"
154
- }), Effect.asVoid);
192
+ }).pipe(Effect.andThen(Effect.sleep(1000)), Effect.forever, Effect.forkIn(managerScope));
193
+ function sendLocal(message) {
194
+ return Effect.locally(Effect.flatMap(entities.get(message.envelope.address), server => {
195
+ switch (message._tag) {
196
+ case "IncomingRequestLocal":
197
+ {
198
+ // If the request is already running, then we might have more than
199
+ // one sender for the same request. In this case, the other senders
200
+ // should resume from storage only.
201
+ let entry = server.activeRequests.get(message.envelope.requestId);
202
+ if (entry) {
203
+ return Effect.fail(new _ClusterError.AlreadyProcessingMessage({
204
+ envelopeId: message.envelope.requestId,
205
+ address: message.envelope.address
206
+ }));
207
+ }
208
+ if (mailboxCapacity !== "unbounded" && server.activeRequests.size >= mailboxCapacity) {
209
+ return Effect.fail(new _ClusterError.MailboxFull({
210
+ address: message.envelope.address
211
+ }));
212
+ }
213
+ entry = {
214
+ rpc: entity.protocol.requests.get(message.envelope.tag),
215
+ message,
216
+ lastSentChunk: message.lastSentReply,
217
+ sequence: Option.match(message.lastSentReply, {
218
+ onNone: () => 0,
219
+ onSome: reply => reply._tag === "Chunk" ? reply.sequence + 1 : 0
220
+ })
221
+ };
222
+ server.activeRequests.set(message.envelope.requestId, entry);
223
+ return server.write(0, {
224
+ ...message.envelope,
225
+ id: (0, _RpcMessage.RequestId)(message.envelope.requestId),
226
+ payload: new _Entity.Request({
227
+ ...message.envelope,
228
+ lastSentChunk: message.lastSentReply
229
+ })
230
+ });
231
+ }
232
+ case "IncomingEnvelope":
233
+ {
234
+ const entry = server.activeRequests.get(message.envelope.requestId);
235
+ if (!entry) {
236
+ return Effect.fail(new _ClusterError.EntityNotManagedByRunner({
237
+ address: message.envelope.address
238
+ }));
239
+ } else if (message.envelope._tag === "AckChunk" && Option.isSome(entry.lastSentChunk) && message.envelope.replyId !== entry.lastSentChunk.value.id) {
240
+ return Effect.void;
241
+ }
242
+ return server.write(0, message.envelope._tag === "AckChunk" ? {
243
+ _tag: "Ack",
244
+ requestId: (0, _RpcMessage.RequestId)(message.envelope.requestId)
245
+ } : {
246
+ _tag: "Interrupt",
247
+ requestId: (0, _RpcMessage.RequestId)(message.envelope.requestId),
248
+ interruptors: []
249
+ });
250
+ }
251
+ }
252
+ }), FiberRef.currentLogAnnotations, HashMap.empty());
253
+ }
254
+ const interruptShard = shardId => Effect.suspend(function loop() {
255
+ const toInterrupt = new Set();
256
+ for (const state of activeServers.values()) {
257
+ if (shardId === state.address.shardId) {
258
+ toInterrupt.add(state);
259
+ }
155
260
  }
156
- function terminateEntitiesOnShards(shards) {
157
- return (0, _Function.pipe)(RefSynchronized.modify(entityStates, entities => [HashMap.filter(entities, (_, recipientAddress) => HashSet.has(shards, sharding.getShardId(recipientAddress))), entities]), Effect.map(HashMap.keySet), Effect.flatMap(terminateEntities));
261
+ if (toInterrupt.size === 0) {
262
+ return Effect.void;
158
263
  }
159
- const self = {
160
- [EntityManagerTypeId]: EntityManagerTypeId,
161
- sendAndGetState,
162
- terminateAllEntities,
163
- terminateEntitiesOnShards
164
- };
165
- return self;
264
+ return Effect.flatMap(Effect.forEach(toInterrupt, state => entities.removeIgnore(state.address), {
265
+ concurrency: "unbounded",
266
+ discard: true
267
+ }), loop);
166
268
  });
167
- }
269
+ const decodeMessage = Schema.decode(makeMessageSchema(entity));
270
+ return (0, _Function.identity)({
271
+ interruptShard,
272
+ isProcessingFor(message) {
273
+ const state = activeServers.get(message.envelope.address.entityId);
274
+ if (!state) return false;
275
+ return state.activeRequests.has(message.envelope.requestId);
276
+ },
277
+ sendLocal,
278
+ send: message => decodeMessage(message).pipe(Effect.matchEffect({
279
+ onFailure: cause => {
280
+ if (message._tag === "IncomingEnvelope") {
281
+ return Effect.die(new _ClusterError.MalformedMessage({
282
+ cause
283
+ }));
284
+ }
285
+ return Effect.orDie(message.respond(new Reply.ReplyWithContext({
286
+ reply: new Reply.WithExit({
287
+ id: snowflakeGen.unsafeNext(),
288
+ requestId: message.envelope.requestId,
289
+ exit: Exit.die(new _ClusterError.MalformedMessage({
290
+ cause
291
+ }))
292
+ }),
293
+ rpc: entity.protocol.requests.get(message.envelope.tag),
294
+ context
295
+ })));
296
+ },
297
+ onSuccess: decoded => {
298
+ if (decoded._tag === "IncomingEnvelope") {
299
+ return sendLocal(new Message.IncomingEnvelope(decoded));
300
+ }
301
+ const request = message;
302
+ const rpc = entity.protocol.requests.get(decoded.envelope.tag);
303
+ return sendLocal(new Message.IncomingRequestLocal({
304
+ envelope: decoded.envelope,
305
+ lastSentReply: decoded.lastSentReply,
306
+ respond: reply => request.respond(new Reply.ReplyWithContext({
307
+ reply,
308
+ rpc,
309
+ context
310
+ }))
311
+ }));
312
+ }
313
+ }), Effect.provide(context))
314
+ });
315
+ });
316
+ const makeMessageSchema = entity => {
317
+ const requests = Arr.empty();
318
+ for (const rpc of entity.protocol.requests.values()) {
319
+ requests.push(Schema.TaggedStruct("IncomingRequest", {
320
+ envelope: Schema.transform(Schema.Struct({
321
+ ...Envelope.PartialEncodedRequestFromSelf.fields,
322
+ tag: Schema.Literal(rpc._tag),
323
+ payload: rpc.payloadSchema
324
+ }), Envelope.RequestFromSelf, {
325
+ decode: encoded => Envelope.makeRequest(encoded),
326
+ encode: _Function.identity
327
+ }),
328
+ lastSentReply: Schema.OptionFromSelf(Reply.Reply(rpc))
329
+ }));
330
+ }
331
+ return Schema.Union(...requests, Schema.TaggedStruct("IncomingEnvelope", {
332
+ envelope: Schema.Union(Schema.typeSchema(Envelope.AckChunk), Schema.typeSchema(Envelope.Interrupt))
333
+ }));
334
+ };
335
+ const retryRespond = (times, effect) => times === 0 ? effect : Effect.catchAll(effect, () => Effect.delay(retryRespond(times - 1, effect), 200));
168
336
  //# sourceMappingURL=entityManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entityManager.js","names":["Clock","_interopRequireWildcard","require","Duration","Effect","Exit","Fiber","_Function","HashMap","HashSet","Option","Scope","RefSynchronized","Message","MessageState","RecipientBehaviourContext","ShardingException","EntityState","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","EntityManagerSymbolKey","EntityManagerTypeId","exports","Symbol","for","make","recipientType","recipientBehaviour","sharding","config","serialization","options","gen","entityMaxIdle","entityMaxIdleTime","none","env","context","entityStates","empty","startExpirationFiber","recipientAddress","maxIdleMillis","pipe","getOrElse","toMillis","sleep","duration","Do","zipLeft","millis","bind","currentTimeMillis","let","map","_","lastReceivedAt","cdt","tap","remaining","void","zipRight","forkEntityTermination","asVoid","interruptible","annotateLogs","name","forkDaemon","terminateEntity","flatMap","match","onNone","onSome","entityState","interrupt","expirationFiber","ensuring","close","executionScope","update","remove","catchAllCause","logError","entityId","recipientTypeName","modifyEffect","entityStatesMap","succeed","terminationFiber","some","modify","withTerminationFiber","getOrCreateEntityState","withLastReceivedAd","isShuttingDown","isGoingDown","fail","EntityNotManagedByThisPodException","forkShutdown","shardId","getShardId","sendAndGetState","offer","envelope","decode","schema","body","message","mapEffect","value","encode","exitSchema","extend","provideService","provide","_tag","unlessEffect","isEntityOnLocalShards","die","maybeEntityState","terminateAllEntities","keySet","terminateEntities","entitiesToTerminate","forEach","await","timeout","entityTerminationTimeout","onFailure","onSuccess","logDebug","concurrency","terminateEntitiesOnShards","shards","entities","filter","self"],"sources":["../../../src/internal/entityManager.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"entityManager.js","names":["_RpcMessage","require","RpcServer","_interopRequireWildcard","Arr","Cause","Context","Duration","Effect","Exit","FiberRef","_Function","HashMap","Metric","Option","Schedule","Schema","Scope","_ClusterError","ClusterMetrics","_ClusterSchema","_Entity","Envelope","Message","MessageStorage","Reply","_ShardingConfig","Snowflake","_entityReaper","_interruptors","_resourceMap","_resourceRef","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","make","exports","fnUntraced","entity","buildHandlers","options","config","ShardingConfig","snowflakeGen","Generator","managerScope","scope","storageEnabled","storage","noop","mailboxCapacity","entityMailboxCapacity","clock","context","activeServers","Map","entities","ResourceMap","address","sharding","isShutdown","EntityNotManagedByRunner","endLatch","makeLatch","addFinalizer","ignore","resetAddress","activeRequests","defectRequestIds","writeRef","ResourceRef","from","isShuttingDown","handlers","protocol","toHandlersContext","pipe","provide","add","CurrentAddress","CurrentRunnerAddress","runnerAddress","locally","currentLogAnnotations","empty","server","makeNoSerialization","spanPrefix","type","entityId","concurrency","onFromServer","response","_tag","request","requestId","void","rpc","annotations","Persisted","isInterrupted","exit","retryRespond","suspend","message","respond","WithExit","id","unsafeNext","flatMap","delete","size","state","lastActiveCheck","unsafeCurrentTimeMillis","orDie","sequence","reply","Chunk","values","lastSentChunk","some","effect","unsafeRebuild","Array","keys","logError","die","defect","andThen","tapErrorCause","retry","spaced","annotateLogs","module","runner","open","extend","sync","write","envelope","RequestId","tag","payload","Request","mailboxGauge","mailboxSize","tagged","clientId","current","await","value","withFiberRuntime","fiber","internalInterruptors","interruptible","timeoutOption","entityTerminationTimeout","reaper","EntityReaper","maxIdleTime","toMillis","entityMaxIdleTime","Number","isFinite","register","servers","gauge","unsafeUpdate","BigInt","sleep","forever","forkIn","sendLocal","entry","fail","AlreadyProcessingMessage","envelopeId","MailboxFull","requests","lastSentReply","match","onNone","onSome","isSome","replyId","interruptors","interruptShard","shardId","loop","toInterrupt","Set","forEach","removeIgnore","discard","decodeMessage","decode","makeMessageSchema","identity","isProcessingFor","send","matchEffect","onFailure","cause","MalformedMessage","ReplyWithContext","onSuccess","decoded","IncomingEnvelope","IncomingRequestLocal","push","TaggedStruct","transform","Struct","PartialEncodedRequestFromSelf","fields","Literal","payloadSchema","RequestFromSelf","encoded","makeRequest","encode","OptionFromSelf","Union","typeSchema","AckChunk","Interrupt","times","catchAll","delay"],"sources":["../../../src/internal/entityManager.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.EntityReaper = void 0;
7
+ var Effect = _interopRequireWildcard(require("effect/Effect"));
8
+ 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); }
9
+ 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; }
10
+ /** @internal */
11
+ class EntityReaper extends /*#__PURE__*/Effect.Service()("@effect/cluster/EntityReaper", {
12
+ scoped: /*#__PURE__*/Effect.gen(function* () {
13
+ let currentResolution = 30_000;
14
+ const registered = [];
15
+ const latch = yield* Effect.makeLatch();
16
+ const register = options => Effect.suspend(() => {
17
+ currentResolution = Math.max(Math.min(currentResolution, options.maxIdleTime), 5000);
18
+ registered.push(options);
19
+ return latch.open;
20
+ });
21
+ const clock = yield* Effect.clock;
22
+ yield* Effect.gen(function* () {
23
+ while (true) {
24
+ yield* Effect.sleep(currentResolution);
25
+ const now = clock.unsafeCurrentTimeMillis();
26
+ for (const {
27
+ entities,
28
+ maxIdleTime,
29
+ servers
30
+ } of registered) {
31
+ for (const state of servers.values()) {
32
+ const duration = now - state.lastActiveCheck;
33
+ if (state.activeRequests.size > 0 || duration < maxIdleTime) {
34
+ continue;
35
+ }
36
+ yield* Effect.fork(entities.removeIgnore(state.address));
37
+ }
38
+ }
39
+ }
40
+ }).pipe(latch.whenOpen, Effect.interruptible, Effect.forkScoped);
41
+ return {
42
+ register
43
+ };
44
+ })
45
+ }) {}
46
+ exports.EntityReaper = EntityReaper;
47
+ //# sourceMappingURL=entityReaper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityReaper.js","names":["Effect","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","EntityReaper","Service","scoped","gen","currentResolution","registered","latch","makeLatch","register","options","suspend","Math","max","min","maxIdleTime","push","open","clock","sleep","now","unsafeCurrentTimeMillis","entities","servers","state","values","duration","lastActiveCheck","activeRequests","size","fork","removeIgnore","address","pipe","whenOpen","interruptible","forkScoped","exports"],"sources":["../../../src/internal/entityReaper.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}