@effect/cluster 0.36.3 → 0.37.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 (90) hide show
  1. package/ClusterWorkflowEngine/package.json +6 -0
  2. package/dist/cjs/ClusterSchema.js +9 -1
  3. package/dist/cjs/ClusterSchema.js.map +1 -1
  4. package/dist/cjs/ClusterWorkflowEngine.js +386 -0
  5. package/dist/cjs/ClusterWorkflowEngine.js.map +1 -0
  6. package/dist/cjs/Envelope.js +14 -4
  7. package/dist/cjs/Envelope.js.map +1 -1
  8. package/dist/cjs/Message.js +22 -2
  9. package/dist/cjs/Message.js.map +1 -1
  10. package/dist/cjs/MessageStorage.js +59 -21
  11. package/dist/cjs/MessageStorage.js.map +1 -1
  12. package/dist/cjs/Reply.js +15 -0
  13. package/dist/cjs/Reply.js.map +1 -1
  14. package/dist/cjs/Runners.js +2 -2
  15. package/dist/cjs/Runners.js.map +1 -1
  16. package/dist/cjs/Sharding.js +23 -8
  17. package/dist/cjs/Sharding.js.map +1 -1
  18. package/dist/cjs/Snowflake.js +2 -2
  19. package/dist/cjs/Snowflake.js.map +1 -1
  20. package/dist/cjs/SqlMessageStorage.js +36 -12
  21. package/dist/cjs/SqlMessageStorage.js.map +1 -1
  22. package/dist/cjs/SqlShardStorage.js +6 -6
  23. package/dist/cjs/SqlShardStorage.js.map +1 -1
  24. package/dist/cjs/index.js +3 -1
  25. package/dist/cjs/internal/entityManager.js +4 -4
  26. package/dist/cjs/internal/entityManager.js.map +1 -1
  27. package/dist/dts/ClusterSchema.d.ts +7 -0
  28. package/dist/dts/ClusterSchema.d.ts.map +1 -1
  29. package/dist/dts/ClusterWorkflowEngine.d.ts +48 -0
  30. package/dist/dts/ClusterWorkflowEngine.d.ts.map +1 -0
  31. package/dist/dts/Envelope.d.ts +9 -0
  32. package/dist/dts/Envelope.d.ts.map +1 -1
  33. package/dist/dts/Message.d.ts +11 -1
  34. package/dist/dts/Message.d.ts.map +1 -1
  35. package/dist/dts/MessageStorage.d.ts +56 -0
  36. package/dist/dts/MessageStorage.d.ts.map +1 -1
  37. package/dist/dts/Reply.d.ts +7 -0
  38. package/dist/dts/Reply.d.ts.map +1 -1
  39. package/dist/dts/ShardStorage.d.ts +1 -1
  40. package/dist/dts/Sharding.d.ts +9 -0
  41. package/dist/dts/Sharding.d.ts.map +1 -1
  42. package/dist/dts/SqlMessageStorage.d.ts +10 -1
  43. package/dist/dts/SqlMessageStorage.d.ts.map +1 -1
  44. package/dist/dts/SqlShardStorage.d.ts +1 -1
  45. package/dist/dts/index.d.ts +4 -0
  46. package/dist/dts/index.d.ts.map +1 -1
  47. package/dist/dts/internal/resourceMap.d.ts +1 -1
  48. package/dist/dts/internal/resourceMap.d.ts.map +1 -1
  49. package/dist/dts/internal/resourceRef.d.ts +1 -1
  50. package/dist/dts/internal/resourceRef.d.ts.map +1 -1
  51. package/dist/esm/ClusterSchema.js +7 -0
  52. package/dist/esm/ClusterSchema.js.map +1 -1
  53. package/dist/esm/ClusterWorkflowEngine.js +378 -0
  54. package/dist/esm/ClusterWorkflowEngine.js.map +1 -0
  55. package/dist/esm/Envelope.js +12 -3
  56. package/dist/esm/Envelope.js.map +1 -1
  57. package/dist/esm/Message.js +20 -1
  58. package/dist/esm/Message.js.map +1 -1
  59. package/dist/esm/MessageStorage.js +59 -21
  60. package/dist/esm/MessageStorage.js.map +1 -1
  61. package/dist/esm/Reply.js +15 -0
  62. package/dist/esm/Reply.js.map +1 -1
  63. package/dist/esm/Runners.js +2 -2
  64. package/dist/esm/Runners.js.map +1 -1
  65. package/dist/esm/Sharding.js +24 -9
  66. package/dist/esm/Sharding.js.map +1 -1
  67. package/dist/esm/Snowflake.js +2 -2
  68. package/dist/esm/Snowflake.js.map +1 -1
  69. package/dist/esm/SqlMessageStorage.js +36 -12
  70. package/dist/esm/SqlMessageStorage.js.map +1 -1
  71. package/dist/esm/SqlShardStorage.js +6 -6
  72. package/dist/esm/SqlShardStorage.js.map +1 -1
  73. package/dist/esm/index.js +4 -0
  74. package/dist/esm/index.js.map +1 -1
  75. package/dist/esm/internal/entityManager.js +5 -5
  76. package/dist/esm/internal/entityManager.js.map +1 -1
  77. package/package.json +14 -5
  78. package/src/ClusterSchema.ts +10 -0
  79. package/src/ClusterWorkflowEngine.ts +475 -0
  80. package/src/Envelope.ts +17 -3
  81. package/src/Message.ts +24 -2
  82. package/src/MessageStorage.ts +122 -22
  83. package/src/Reply.ts +18 -0
  84. package/src/Runners.ts +2 -2
  85. package/src/Sharding.ts +45 -9
  86. package/src/Snowflake.ts +2 -2
  87. package/src/SqlMessageStorage.ts +74 -16
  88. package/src/SqlShardStorage.ts +6 -6
  89. package/src/index.ts +5 -0
  90. package/src/internal/entityManager.ts +6 -4
@@ -18,7 +18,7 @@ import * as Schema from "effect/Schema"
18
18
  import * as Scope from "effect/Scope"
19
19
  import { AlreadyProcessingMessage, EntityNotAssignedToRunner, MailboxFull, MalformedMessage } from "../ClusterError.js"
20
20
  import * as ClusterMetrics from "../ClusterMetrics.js"
21
- import { Persisted } from "../ClusterSchema.js"
21
+ import { Persisted, Uninterruptible } from "../ClusterSchema.js"
22
22
  import type { Entity, HandlersFrom } from "../Entity.js"
23
23
  import { CurrentAddress, CurrentRunnerAddress, Request } from "../Entity.js"
24
24
  import type { EntityAddress } from "../EntityAddress.js"
@@ -150,11 +150,13 @@ export const make = Effect.fnUntraced(function*<
150
150
 
151
151
  // For durable messages, ignore interrupts during shutdown.
152
152
  // They will be retried when the entity is restarted.
153
+ // Also, if the request is uninterruptible, we ignore the
154
+ // interrupt.
153
155
  if (
154
156
  storageEnabled &&
155
- isShuttingDown &&
156
157
  Context.get(request.rpc.annotations, Persisted) &&
157
- Exit.isInterrupted(response.exit)
158
+ Exit.isInterrupted(response.exit) &&
159
+ (isShuttingDown || Context.get(request.rpc.annotations, Uninterruptible))
158
160
  ) {
159
161
  return Effect.void
160
162
  }
@@ -371,7 +373,7 @@ export const make = Effect.fnUntraced(function*<
371
373
  case "IncomingEnvelope": {
372
374
  const entry = server.activeRequests.get(message.envelope.requestId)
373
375
  if (!entry) {
374
- return Effect.fail(new EntityNotAssignedToRunner({ address: message.envelope.address }))
376
+ return Effect.void
375
377
  } else if (
376
378
  message.envelope._tag === "AckChunk" &&
377
379
  Option.isSome(entry.lastSentChunk) &&