@effect/cluster 0.33.3 → 0.34.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 (161) hide show
  1. package/dist/cjs/ClusterError.js +24 -3
  2. package/dist/cjs/ClusterError.js.map +1 -1
  3. package/dist/cjs/ClusterMetrics.js +1 -2
  4. package/dist/cjs/ClusterMetrics.js.map +1 -1
  5. package/dist/cjs/ClusterSchema.js +1 -2
  6. package/dist/cjs/ClusterSchema.js.map +1 -1
  7. package/dist/cjs/Entity.js +81 -3
  8. package/dist/cjs/Entity.js.map +1 -1
  9. package/dist/cjs/EntityAddress.js +1 -2
  10. package/dist/cjs/EntityAddress.js.map +1 -1
  11. package/dist/cjs/EntityId.js +2 -3
  12. package/dist/cjs/EntityId.js.map +1 -1
  13. package/dist/cjs/EntityType.js +2 -3
  14. package/dist/cjs/EntityType.js.map +1 -1
  15. package/dist/cjs/Envelope.js +2 -3
  16. package/dist/cjs/Envelope.js.map +1 -1
  17. package/dist/cjs/HttpCommon.js +1 -2
  18. package/dist/cjs/HttpCommon.js.map +1 -1
  19. package/dist/cjs/HttpRunner.js +8 -9
  20. package/dist/cjs/HttpRunner.js.map +1 -1
  21. package/dist/cjs/HttpShardManager.js +1 -2
  22. package/dist/cjs/HttpShardManager.js.map +1 -1
  23. package/dist/cjs/MachineId.js +2 -3
  24. package/dist/cjs/MachineId.js.map +1 -1
  25. package/dist/cjs/Message.js +1 -2
  26. package/dist/cjs/Message.js.map +1 -1
  27. package/dist/cjs/MessageStorage.js +2 -3
  28. package/dist/cjs/MessageStorage.js.map +1 -1
  29. package/dist/cjs/Reply.js +2 -3
  30. package/dist/cjs/Reply.js.map +1 -1
  31. package/dist/cjs/Runner.js +3 -4
  32. package/dist/cjs/Runner.js.map +1 -1
  33. package/dist/cjs/RunnerAddress.js +1 -2
  34. package/dist/cjs/RunnerAddress.js.map +1 -1
  35. package/dist/cjs/RunnerHealth.js +2 -3
  36. package/dist/cjs/RunnerHealth.js.map +1 -1
  37. package/dist/cjs/RunnerServer.js +5 -6
  38. package/dist/cjs/RunnerServer.js.map +1 -1
  39. package/dist/cjs/Runners.js +27 -18
  40. package/dist/cjs/Runners.js.map +1 -1
  41. package/dist/cjs/ShardId.js +2 -3
  42. package/dist/cjs/ShardId.js.map +1 -1
  43. package/dist/cjs/ShardManager.js +15 -16
  44. package/dist/cjs/ShardManager.js.map +1 -1
  45. package/dist/cjs/ShardStorage.js +1 -2
  46. package/dist/cjs/ShardStorage.js.map +1 -1
  47. package/dist/cjs/Sharding.js +23 -8
  48. package/dist/cjs/Sharding.js.map +1 -1
  49. package/dist/cjs/ShardingConfig.js +15 -16
  50. package/dist/cjs/ShardingConfig.js.map +1 -1
  51. package/dist/cjs/ShardingRegistrationEvent.js +1 -2
  52. package/dist/cjs/ShardingRegistrationEvent.js.map +1 -1
  53. package/dist/cjs/Singleton.js +1 -2
  54. package/dist/cjs/Singleton.js.map +1 -1
  55. package/dist/cjs/SingletonAddress.js +1 -2
  56. package/dist/cjs/SingletonAddress.js.map +1 -1
  57. package/dist/cjs/Snowflake.js +3 -4
  58. package/dist/cjs/Snowflake.js.map +1 -1
  59. package/dist/cjs/SocketRunner.js +1 -2
  60. package/dist/cjs/SocketRunner.js.map +1 -1
  61. package/dist/cjs/SocketShardManager.js +1 -2
  62. package/dist/cjs/SocketShardManager.js.map +1 -1
  63. package/dist/cjs/SqlMessageStorage.js +2 -3
  64. package/dist/cjs/SqlMessageStorage.js.map +1 -1
  65. package/dist/cjs/SqlShardStorage.js +1 -2
  66. package/dist/cjs/SqlShardStorage.js.map +1 -1
  67. package/dist/cjs/SynchronizedClock.js +2 -3
  68. package/dist/cjs/SynchronizedClock.js.map +1 -1
  69. package/dist/cjs/index.js +1 -2
  70. package/dist/cjs/internal/entityManager.js +3 -4
  71. package/dist/cjs/internal/entityManager.js.map +1 -1
  72. package/dist/cjs/internal/entityReaper.js +1 -2
  73. package/dist/cjs/internal/entityReaper.js.map +1 -1
  74. package/dist/cjs/internal/resourceMap.js +1 -2
  75. package/dist/cjs/internal/resourceMap.js.map +1 -1
  76. package/dist/cjs/internal/resourceRef.js +1 -2
  77. package/dist/cjs/internal/resourceRef.js.map +1 -1
  78. package/dist/cjs/internal/shardManager.js +2 -3
  79. package/dist/cjs/internal/shardManager.js.map +1 -1
  80. package/dist/dts/ClusterError.d.ts +22 -0
  81. package/dist/dts/ClusterError.d.ts.map +1 -1
  82. package/dist/dts/DeliverAt.d.ts.map +1 -1
  83. package/dist/dts/Entity.d.ts +34 -10
  84. package/dist/dts/Entity.d.ts.map +1 -1
  85. package/dist/dts/Envelope.d.ts.map +1 -1
  86. package/dist/dts/HttpCommon.d.ts.map +1 -1
  87. package/dist/dts/HttpRunner.d.ts.map +1 -1
  88. package/dist/dts/HttpShardManager.d.ts.map +1 -1
  89. package/dist/dts/MachineId.d.ts.map +1 -1
  90. package/dist/dts/Message.d.ts +1 -1
  91. package/dist/dts/Message.d.ts.map +1 -1
  92. package/dist/dts/MessageStorage.d.ts.map +1 -1
  93. package/dist/dts/Reply.d.ts.map +1 -1
  94. package/dist/dts/Runner.d.ts.map +1 -1
  95. package/dist/dts/RunnerAddress.d.ts.map +1 -1
  96. package/dist/dts/Runners.d.ts +12 -11
  97. package/dist/dts/Runners.d.ts.map +1 -1
  98. package/dist/dts/ShardId.d.ts.map +1 -1
  99. package/dist/dts/ShardManager.d.ts +1 -1
  100. package/dist/dts/ShardManager.d.ts.map +1 -1
  101. package/dist/dts/Sharding.d.ts +6 -6
  102. package/dist/dts/Sharding.d.ts.map +1 -1
  103. package/dist/dts/ShardingConfig.d.ts +2 -2
  104. package/dist/dts/ShardingConfig.d.ts.map +1 -1
  105. package/dist/dts/Singleton.d.ts.map +1 -1
  106. package/dist/dts/Snowflake.d.ts.map +1 -1
  107. package/dist/dts/SqlMessageStorage.d.ts.map +1 -1
  108. package/dist/dts/SqlShardStorage.d.ts.map +1 -1
  109. package/dist/esm/ClusterError.js +21 -0
  110. package/dist/esm/ClusterError.js.map +1 -1
  111. package/dist/esm/Entity.js +79 -0
  112. package/dist/esm/Entity.js.map +1 -1
  113. package/dist/esm/EntityId.js +1 -1
  114. package/dist/esm/EntityId.js.map +1 -1
  115. package/dist/esm/EntityType.js +1 -1
  116. package/dist/esm/EntityType.js.map +1 -1
  117. package/dist/esm/Envelope.js +1 -1
  118. package/dist/esm/Envelope.js.map +1 -1
  119. package/dist/esm/HttpRunner.js +7 -7
  120. package/dist/esm/HttpRunner.js.map +1 -1
  121. package/dist/esm/MachineId.js +1 -1
  122. package/dist/esm/MachineId.js.map +1 -1
  123. package/dist/esm/MessageStorage.js +1 -1
  124. package/dist/esm/MessageStorage.js.map +1 -1
  125. package/dist/esm/Reply.js +1 -1
  126. package/dist/esm/Reply.js.map +1 -1
  127. package/dist/esm/Runner.js +2 -2
  128. package/dist/esm/Runner.js.map +1 -1
  129. package/dist/esm/RunnerHealth.js +1 -1
  130. package/dist/esm/RunnerHealth.js.map +1 -1
  131. package/dist/esm/RunnerServer.js +4 -4
  132. package/dist/esm/RunnerServer.js.map +1 -1
  133. package/dist/esm/Runners.js +27 -17
  134. package/dist/esm/Runners.js.map +1 -1
  135. package/dist/esm/ShardId.js +1 -1
  136. package/dist/esm/ShardId.js.map +1 -1
  137. package/dist/esm/ShardManager.js +14 -14
  138. package/dist/esm/ShardManager.js.map +1 -1
  139. package/dist/esm/Sharding.js +23 -7
  140. package/dist/esm/Sharding.js.map +1 -1
  141. package/dist/esm/ShardingConfig.js +14 -14
  142. package/dist/esm/ShardingConfig.js.map +1 -1
  143. package/dist/esm/Snowflake.js +2 -2
  144. package/dist/esm/Snowflake.js.map +1 -1
  145. package/dist/esm/SqlMessageStorage.js +1 -1
  146. package/dist/esm/SqlMessageStorage.js.map +1 -1
  147. package/dist/esm/SynchronizedClock.js +1 -1
  148. package/dist/esm/SynchronizedClock.js.map +1 -1
  149. package/dist/esm/internal/entityManager.js +3 -3
  150. package/dist/esm/internal/entityManager.js.map +1 -1
  151. package/dist/esm/internal/shardManager.js +1 -1
  152. package/dist/esm/internal/shardManager.js.map +1 -1
  153. package/package.json +5 -5
  154. package/src/ClusterError.ts +24 -0
  155. package/src/Entity.ts +120 -9
  156. package/src/Message.ts +1 -1
  157. package/src/Runners.ts +59 -26
  158. package/src/Sharding.ts +81 -37
  159. package/src/ShardingConfig.ts +1 -1
  160. package/src/internal/entityManager.ts +8 -8
  161. package/src/internal/entityReaper.ts +3 -3
package/src/Sharding.ts CHANGED
@@ -29,9 +29,14 @@ import * as Schedule from "effect/Schedule"
29
29
  import * as Scope from "effect/Scope"
30
30
  import * as Stream from "effect/Stream"
31
31
  import type { MailboxFull, PersistenceError } from "./ClusterError.js"
32
- import { AlreadyProcessingMessage, EntityNotManagedByRunner, RunnerUnavailable } from "./ClusterError.js"
32
+ import {
33
+ AlreadyProcessingMessage,
34
+ EntityNotAssignedToRunner,
35
+ EntityNotManagedByRunner,
36
+ RunnerUnavailable
37
+ } from "./ClusterError.js"
33
38
  import { Persisted } from "./ClusterSchema.js"
34
- import type { CurrentAddress, Entity, HandlersFrom } from "./Entity.js"
39
+ import type { CurrentAddress, CurrentRunnerAddress, Entity, HandlersFrom } from "./Entity.js"
35
40
  import { EntityAddress } from "./EntityAddress.js"
36
41
  import { EntityId } from "./EntityId.js"
37
42
  import type { EntityType } from "./EntityType.js"
@@ -83,7 +88,9 @@ export class Sharding extends Context.Tag("@effect/cluster/Sharding")<Sharding,
83
88
  readonly makeClient: <Rpcs extends Rpc.Any>(
84
89
  entity: Entity<Rpcs>
85
90
  ) => Effect.Effect<
86
- (entityId: string) => RpcClient.RpcClient<Rpcs, MailboxFull | AlreadyProcessingMessage | PersistenceError>
91
+ (
92
+ entityId: string
93
+ ) => RpcClient.RpcClient<Rpcs, MailboxFull | AlreadyProcessingMessage | PersistenceError | EntityNotManagedByRunner>
87
94
  >
88
95
 
89
96
  /**
@@ -97,7 +104,11 @@ export class Sharding extends Context.Tag("@effect/cluster/Sharding")<Sharding,
97
104
  readonly concurrency?: number | "unbounded" | undefined
98
105
  readonly mailboxCapacity?: number | "unbounded" | undefined
99
106
  }
100
- ) => Effect.Effect<void, never, Rpc.Context<Rpcs> | Rpc.Middleware<Rpcs> | Exclude<RX, Scope.Scope | CurrentAddress>>
107
+ ) => Effect.Effect<
108
+ void,
109
+ never,
110
+ Rpc.Context<Rpcs> | Rpc.Middleware<Rpcs> | Exclude<RX, Scope.Scope | CurrentAddress | CurrentRunnerAddress>
111
+ >
101
112
 
102
113
  /**
103
114
  * Registers a new singleton with the runner.
@@ -112,7 +123,7 @@ export class Sharding extends Context.Tag("@effect/cluster/Sharding")<Sharding,
112
123
  */
113
124
  readonly send: (message: Message.Incoming<any>) => Effect.Effect<
114
125
  void,
115
- EntityNotManagedByRunner | MailboxFull | AlreadyProcessingMessage
126
+ EntityNotManagedByRunner | EntityNotAssignedToRunner | MailboxFull | AlreadyProcessingMessage
116
127
  >
117
128
 
118
129
  /**
@@ -120,7 +131,7 @@ export class Sharding extends Context.Tag("@effect/cluster/Sharding")<Sharding,
120
131
  */
121
132
  readonly notify: (message: Message.Incoming<any>) => Effect.Effect<
122
133
  void,
123
- EntityNotManagedByRunner | AlreadyProcessingMessage
134
+ EntityNotManagedByRunner | EntityNotAssignedToRunner | AlreadyProcessingMessage
124
135
  >
125
136
 
126
137
  /**
@@ -422,8 +433,18 @@ const make = Effect.gen(function*() {
422
433
  currentSentRequestIds.add(message.envelope.requestId)
423
434
  }
424
435
  const address = message.envelope.address
436
+ if (!acquiredShards.has(address.shardId)) {
437
+ return Effect.void
438
+ }
425
439
  const state = entityManagers.get(address.entityType)
426
- if (!state || !acquiredShards.has(address.shardId)) {
440
+ if (!state) {
441
+ if (message._tag === "IncomingRequest") {
442
+ return Effect.orDie(message.respond(Reply.ReplyWithContext.fromDefect({
443
+ id: snowflakeGen.unsafeNext(),
444
+ requestId: message.envelope.requestId,
445
+ defect: new EntityNotManagedByRunner({ address })
446
+ })))
447
+ }
427
448
  return Effect.void
428
449
  }
429
450
 
@@ -563,11 +584,11 @@ const make = Effect.gen(function*() {
563
584
 
564
585
  const sendWithRetry: Effect.Effect<
565
586
  void,
566
- EntityNotManagedByRunner
587
+ EntityNotManagedByRunner | EntityNotAssignedToRunner
567
588
  > = Effect.catchTags(
568
589
  Effect.suspend(() => {
569
590
  if (!acquiredShards.has(address.shardId)) {
570
- return Effect.fail(new EntityNotManagedByRunner({ address }))
591
+ return Effect.fail(new EntityNotAssignedToRunner({ address }))
571
592
  }
572
593
 
573
594
  const message = messages[index]
@@ -632,16 +653,20 @@ const make = Effect.gen(function*() {
632
653
 
633
654
  // --- Sending messages ---
634
655
 
635
- const sendLocal = (
636
- message: Message.Outgoing<any> | Message.Incoming<any>
656
+ const sendLocal = <M extends Message.Outgoing<any> | Message.Incoming<any>>(
657
+ message: M
637
658
  ): Effect.Effect<
638
659
  void,
639
- EntityNotManagedByRunner | MailboxFull | AlreadyProcessingMessage
660
+ | EntityNotAssignedToRunner
661
+ | EntityNotManagedByRunner
662
+ | MailboxFull
663
+ | AlreadyProcessingMessage
664
+ | (M extends Message.Incoming<any> ? never : PersistenceError)
640
665
  > =>
641
666
  Effect.suspend(() => {
642
667
  const address = message.envelope.address
643
668
  if (!isEntityOnLocalShards(address)) {
644
- return Effect.fail(new EntityNotManagedByRunner({ address }))
669
+ return Effect.fail(new EntityNotAssignedToRunner({ address }))
645
670
  }
646
671
  const state = entityManagers.get(address.entityType)
647
672
  if (!state) {
@@ -654,39 +679,52 @@ const make = Effect.gen(function*() {
654
679
  message,
655
680
  send: state.manager.sendLocal,
656
681
  simulateRemoteSerialization: config.simulateRemoteSerialization
657
- })
682
+ }) as any
658
683
  })
659
684
 
660
- const notifyLocal = (
661
- message: Message.Outgoing<any> | Message.Incoming<any>,
685
+ const notifyLocal = <M extends Message.Outgoing<any> | Message.Incoming<any>>(
686
+ message: M,
662
687
  discard: boolean
663
688
  ) =>
664
- Effect.suspend((): Effect.Effect<void, EntityNotManagedByRunner | AlreadyProcessingMessage> => {
665
- const address = message.envelope.address
666
- if (!isEntityOnLocalShards(address)) {
667
- return Effect.fail(new EntityNotManagedByRunner({ address }))
668
- }
689
+ Effect.suspend(
690
+ (): Effect.Effect<
691
+ void,
692
+ | EntityNotManagedByRunner
693
+ | EntityNotAssignedToRunner
694
+ | AlreadyProcessingMessage
695
+ | (M extends Message.Incoming<any> ? never : PersistenceError)
696
+ > => {
697
+ const address = message.envelope.address
698
+ if (!isEntityOnLocalShards(address)) {
699
+ return Effect.fail(new EntityNotAssignedToRunner({ address }))
700
+ } else if (!entityManagers.has(address.entityType)) {
701
+ return Effect.fail(new EntityNotManagedByRunner({ address }))
702
+ }
669
703
 
670
- const notify = storageEnabled
671
- ? openStorageReadLatch
672
- : () => Effect.dieMessage("Sharding.notifyLocal: storage is disabled")
704
+ const notify = storageEnabled
705
+ ? openStorageReadLatch
706
+ : () => Effect.dieMessage("Sharding.notifyLocal: storage is disabled")
673
707
 
674
- if (message._tag === "IncomingRequest" || message._tag === "IncomingEnvelope") {
675
- if (message._tag === "IncomingRequest" && storageAlreadyProcessed(message)) {
676
- return Effect.fail(new AlreadyProcessingMessage({ address, envelopeId: message.envelope.requestId }))
708
+ if (message._tag === "IncomingRequest" || message._tag === "IncomingEnvelope") {
709
+ if (message._tag === "IncomingRequest" && storageAlreadyProcessed(message)) {
710
+ return Effect.fail(new AlreadyProcessingMessage({ address, envelopeId: message.envelope.requestId }))
711
+ }
712
+ return notify()
677
713
  }
678
- return notify()
679
- }
680
714
 
681
- return runners.notifyLocal({ message, notify, discard })
682
- })
715
+ return runners.notifyLocal({ message, notify, discard }) as any
716
+ }
717
+ )
683
718
 
684
- const isTransientError = Predicate.or(RunnerUnavailable.is, EntityNotManagedByRunner.is)
719
+ const isTransientError = Predicate.or(RunnerUnavailable.is, EntityNotAssignedToRunner.is)
685
720
  function sendOutgoing(
686
721
  message: Message.Outgoing<any>,
687
722
  discard: boolean,
688
723
  retries?: number
689
- ): Effect.Effect<void, MailboxFull | AlreadyProcessingMessage | PersistenceError> {
724
+ ): Effect.Effect<
725
+ void,
726
+ EntityNotManagedByRunner | MailboxFull | AlreadyProcessingMessage | PersistenceError
727
+ > {
690
728
  return Effect.catchIf(
691
729
  Effect.suspend(() => {
692
730
  const address = message.envelope.address
@@ -701,7 +739,7 @@ const make = Effect.gen(function*() {
701
739
  ? notifyLocal(message, discard)
702
740
  : runners.notify({ address: maybeRunner, message, discard })
703
741
  } else if (Option.isNone(maybeRunner)) {
704
- return Effect.fail(new EntityNotManagedByRunner({ address }))
742
+ return Effect.fail(new EntityNotAssignedToRunner({ address }))
705
743
  }
706
744
  return runnerIsLocal
707
745
  ? sendLocal(message)
@@ -858,13 +896,19 @@ const make = Effect.gen(function*() {
858
896
 
859
897
  const clients: ResourceMap<
860
898
  Entity<any>,
861
- (entityId: string) => RpcClient.RpcClient<any, MailboxFull | AlreadyProcessingMessage>,
899
+ (entityId: string) => RpcClient.RpcClient<
900
+ any,
901
+ MailboxFull | AlreadyProcessingMessage | EntityNotManagedByRunner
902
+ >,
862
903
  never
863
904
  > = yield* ResourceMap.make(Effect.fnUntraced(function*(entity: Entity<any>) {
864
905
  const client = yield* RpcClient.makeNoSerialization(entity.protocol, {
865
906
  supportsAck: true,
866
907
  generateRequestId: () => RequestId(snowflakeGen.unsafeNext()),
867
- onFromClient(options): Effect.Effect<void, MailboxFull | AlreadyProcessingMessage | PersistenceError> {
908
+ onFromClient(options): Effect.Effect<
909
+ void,
910
+ MailboxFull | AlreadyProcessingMessage | EntityNotManagedByRunner | PersistenceError
911
+ > {
868
912
  const address = Context.unsafeGet(options.context, ClientAddressTag)
869
913
  switch (options.message._tag) {
870
914
  case "Request": {
@@ -985,7 +1029,7 @@ const make = Effect.gen(function*() {
985
1029
  }))
986
1030
 
987
1031
  const makeClient = <Rpcs extends Rpc.Any>(entity: Entity<Rpcs>): Effect.Effect<
988
- (entityId: string) => RpcClient.RpcClient<Rpcs, MailboxFull | AlreadyProcessingMessage>
1032
+ (entityId: string) => RpcClient.RpcClient<Rpcs, MailboxFull | AlreadyProcessingMessage | EntityNotManagedByRunner>
989
1033
  > => clients.get(entity)
990
1034
 
991
1035
  const clientRespondDiscard = (_reply: Reply.Reply<any>) => Effect.void
@@ -70,7 +70,7 @@ export class ShardingConfig extends Context.Tag("@effect/cluster/ShardingConfig"
70
70
  readonly entityReplyPollInterval: DurationInput
71
71
  readonly refreshAssignmentsInterval: DurationInput
72
72
  /**
73
- * The interval to retry a send if EntityNotManagedByRunner is returned.
73
+ * The interval to retry a send if EntityNotAssignedToRunner is returned.
74
74
  */
75
75
  readonly sendRetryInterval: DurationInput
76
76
  // readonly unhealthyRunnerReportInterval: Duration.Duration
@@ -16,7 +16,7 @@ import * as Option from "effect/Option"
16
16
  import * as Schedule from "effect/Schedule"
17
17
  import * as Schema from "effect/Schema"
18
18
  import * as Scope from "effect/Scope"
19
- import { AlreadyProcessingMessage, EntityNotManagedByRunner, MailboxFull, MalformedMessage } from "../ClusterError.js"
19
+ import { AlreadyProcessingMessage, EntityNotAssignedToRunner, MailboxFull, MalformedMessage } from "../ClusterError.js"
20
20
  import * as ClusterMetrics from "../ClusterMetrics.js"
21
21
  import { Persisted } from "../ClusterSchema.js"
22
22
  import type { Entity, HandlersFrom } from "../Entity.js"
@@ -41,11 +41,11 @@ import { ResourceRef } from "./resourceRef.js"
41
41
  export interface EntityManager {
42
42
  readonly sendLocal: <R extends Rpc.Any>(
43
43
  message: Message.IncomingLocal<R>
44
- ) => Effect.Effect<void, EntityNotManagedByRunner | MailboxFull | AlreadyProcessingMessage>
44
+ ) => Effect.Effect<void, EntityNotAssignedToRunner | MailboxFull | AlreadyProcessingMessage>
45
45
 
46
46
  readonly send: (
47
47
  message: Message.Incoming<any>
48
- ) => Effect.Effect<void, EntityNotManagedByRunner | MailboxFull | AlreadyProcessingMessage>
48
+ ) => Effect.Effect<void, EntityNotAssignedToRunner | MailboxFull | AlreadyProcessingMessage>
49
49
 
50
50
  readonly isProcessingFor: (message: Message.Incoming<any>, options?: {
51
51
  readonly excludeReplies?: boolean
@@ -102,10 +102,10 @@ export const make = Effect.fnUntraced(function*<
102
102
  const entities: ResourceMap<
103
103
  EntityAddress,
104
104
  EntityState,
105
- EntityNotManagedByRunner
105
+ EntityNotAssignedToRunner
106
106
  > = yield* ResourceMap.make(Effect.fnUntraced(function*(address) {
107
107
  if (yield* options.sharding.isShutdown) {
108
- return yield* new EntityNotManagedByRunner({ address })
108
+ return yield* new EntityNotAssignedToRunner({ address })
109
109
  }
110
110
 
111
111
  const scope = yield* Effect.scope
@@ -317,11 +317,11 @@ export const make = Effect.fnUntraced(function*<
317
317
 
318
318
  function sendLocal<R extends Rpc.Any>(
319
319
  message: Message.IncomingLocal<R>
320
- ): Effect.Effect<void, EntityNotManagedByRunner | MailboxFull | AlreadyProcessingMessage> {
320
+ ): Effect.Effect<void, EntityNotAssignedToRunner | MailboxFull | AlreadyProcessingMessage> {
321
321
  return Effect.locally(
322
322
  Effect.flatMap(
323
323
  entities.get(message.envelope.address),
324
- (server): Effect.Effect<void, EntityNotManagedByRunner | MailboxFull | AlreadyProcessingMessage> => {
324
+ (server): Effect.Effect<void, EntityNotAssignedToRunner | MailboxFull | AlreadyProcessingMessage> => {
325
325
  switch (message._tag) {
326
326
  case "IncomingRequestLocal": {
327
327
  // If the request is already running, then we might have more than
@@ -371,7 +371,7 @@ export const make = Effect.fnUntraced(function*<
371
371
  case "IncomingEnvelope": {
372
372
  const entry = server.activeRequests.get(message.envelope.requestId)
373
373
  if (!entry) {
374
- return Effect.fail(new EntityNotManagedByRunner({ address: message.envelope.address }))
374
+ return Effect.fail(new EntityNotAssignedToRunner({ address: message.envelope.address }))
375
375
  } else if (
376
376
  message.envelope._tag === "AckChunk" &&
377
377
  Option.isSome(entry.lastSentChunk) &&
@@ -1,5 +1,5 @@
1
1
  import * as Effect from "effect/Effect"
2
- import type { EntityNotManagedByRunner } from "../ClusterError.js"
2
+ import type { EntityNotAssignedToRunner } from "../ClusterError.js"
3
3
  import type { EntityAddress } from "../EntityAddress.js"
4
4
  import type { EntityId } from "../EntityId.js"
5
5
  import type { EntityState } from "./entityManager.js"
@@ -12,14 +12,14 @@ export class EntityReaper extends Effect.Service<EntityReaper>()("@effect/cluste
12
12
  const registered: Array<{
13
13
  readonly maxIdleTime: number
14
14
  readonly servers: Map<EntityId, EntityState>
15
- readonly entities: ResourceMap<EntityAddress, EntityState, EntityNotManagedByRunner>
15
+ readonly entities: ResourceMap<EntityAddress, EntityState, EntityNotAssignedToRunner>
16
16
  }> = []
17
17
  const latch = yield* Effect.makeLatch()
18
18
 
19
19
  const register = (options: {
20
20
  readonly maxIdleTime: number
21
21
  readonly servers: Map<EntityId, EntityState>
22
- readonly entities: ResourceMap<EntityAddress, EntityState, EntityNotManagedByRunner>
22
+ readonly entities: ResourceMap<EntityAddress, EntityState, EntityNotAssignedToRunner>
23
23
  }) =>
24
24
  Effect.suspend(() => {
25
25
  currentResolution = Math.max(Math.min(currentResolution, options.maxIdleTime), 5000)