@effect/cluster 0.50.6 → 0.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RunnerStorage/package.json +6 -0
- package/SqlRunnerStorage/package.json +6 -0
- package/dist/cjs/ClusterError.js +2 -24
- package/dist/cjs/ClusterError.js.map +1 -1
- package/dist/cjs/ClusterMetrics.js +13 -15
- package/dist/cjs/ClusterMetrics.js.map +1 -1
- package/dist/cjs/ClusterSchema.js +17 -2
- package/dist/cjs/ClusterSchema.js.map +1 -1
- package/dist/cjs/ClusterWorkflowEngine.js +50 -83
- package/dist/cjs/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cjs/Entity.js +1 -13
- package/dist/cjs/Entity.js.map +1 -1
- package/dist/cjs/EntityAddress.js +9 -1
- package/dist/cjs/EntityAddress.js.map +1 -1
- package/dist/cjs/EntityId.js +7 -1
- package/dist/cjs/EntityId.js.map +1 -1
- package/dist/cjs/EntityProxy.js +1 -1
- package/dist/cjs/EntityProxy.js.map +1 -1
- package/dist/cjs/HttpRunner.js +69 -43
- package/dist/cjs/HttpRunner.js.map +1 -1
- package/dist/cjs/MessageStorage.js +64 -16
- package/dist/cjs/MessageStorage.js.map +1 -1
- package/dist/cjs/Runner.js +3 -3
- package/dist/cjs/Runner.js.map +1 -1
- package/dist/cjs/RunnerAddress.js +7 -0
- package/dist/cjs/RunnerAddress.js.map +1 -1
- package/dist/cjs/RunnerHealth.js +91 -32
- package/dist/cjs/RunnerHealth.js.map +1 -1
- package/dist/cjs/RunnerServer.js +38 -24
- package/dist/cjs/RunnerServer.js.map +1 -1
- package/dist/cjs/RunnerStorage.js +100 -0
- package/dist/cjs/RunnerStorage.js.map +1 -0
- package/dist/cjs/Runners.js +18 -22
- package/dist/cjs/Runners.js.map +1 -1
- package/dist/cjs/ShardId.js +17 -7
- package/dist/cjs/ShardId.js.map +1 -1
- package/dist/cjs/Sharding.js +444 -320
- package/dist/cjs/Sharding.js.map +1 -1
- package/dist/cjs/ShardingConfig.js +10 -14
- package/dist/cjs/ShardingConfig.js.map +1 -1
- package/dist/cjs/Snowflake.js +1 -1
- package/dist/cjs/SocketRunner.js +1 -1
- package/dist/cjs/SocketRunner.js.map +1 -1
- package/dist/cjs/SqlMessageStorage.js +22 -28
- package/dist/cjs/SqlMessageStorage.js.map +1 -1
- package/dist/cjs/SqlRunnerStorage.js +375 -0
- package/dist/cjs/SqlRunnerStorage.js.map +1 -0
- package/dist/cjs/index.js +5 -15
- package/dist/cjs/internal/entityManager.js +42 -23
- package/dist/cjs/internal/entityManager.js.map +1 -1
- package/dist/dts/ClusterError.d.ts +0 -22
- package/dist/dts/ClusterError.d.ts.map +1 -1
- package/dist/dts/ClusterMetrics.d.ts +4 -14
- package/dist/dts/ClusterMetrics.d.ts.map +1 -1
- package/dist/dts/ClusterSchema.d.ts +9 -1
- package/dist/dts/ClusterSchema.d.ts.map +1 -1
- package/dist/dts/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/dts/Entity.d.ts +3 -14
- package/dist/dts/Entity.d.ts.map +1 -1
- package/dist/dts/EntityAddress.d.ts +11 -0
- package/dist/dts/EntityAddress.d.ts.map +1 -1
- package/dist/dts/EntityId.d.ts +5 -0
- package/dist/dts/EntityId.d.ts.map +1 -1
- package/dist/dts/EntityProxy.d.ts +5 -6
- package/dist/dts/EntityProxy.d.ts.map +1 -1
- package/dist/dts/HttpRunner.d.ts +48 -25
- package/dist/dts/HttpRunner.d.ts.map +1 -1
- package/dist/dts/MessageStorage.d.ts +13 -5
- package/dist/dts/MessageStorage.d.ts.map +1 -1
- package/dist/dts/Runner.d.ts +4 -4
- package/dist/dts/Runner.d.ts.map +1 -1
- package/dist/dts/RunnerAddress.d.ts +5 -0
- package/dist/dts/RunnerAddress.d.ts.map +1 -1
- package/dist/dts/RunnerHealth.d.ts +24 -16
- package/dist/dts/RunnerHealth.d.ts.map +1 -1
- package/dist/dts/RunnerServer.d.ts +5 -4
- package/dist/dts/RunnerServer.d.ts.map +1 -1
- package/dist/dts/{ShardStorage.d.ts → RunnerStorage.d.ts} +41 -54
- package/dist/dts/RunnerStorage.d.ts.map +1 -0
- package/dist/dts/Runners.d.ts +15 -11
- package/dist/dts/Runners.d.ts.map +1 -1
- package/dist/dts/ShardId.d.ts +1 -1
- package/dist/dts/ShardId.d.ts.map +1 -1
- package/dist/dts/Sharding.d.ts +20 -10
- package/dist/dts/Sharding.d.ts.map +1 -1
- package/dist/dts/ShardingConfig.d.ts +40 -14
- package/dist/dts/ShardingConfig.d.ts.map +1 -1
- package/dist/dts/SocketRunner.d.ts +4 -3
- package/dist/dts/SocketRunner.d.ts.map +1 -1
- package/dist/dts/SqlMessageStorage.d.ts +2 -3
- package/dist/dts/SqlMessageStorage.d.ts.map +1 -1
- package/dist/dts/SqlRunnerStorage.d.ts +40 -0
- package/dist/dts/SqlRunnerStorage.d.ts.map +1 -0
- package/dist/dts/index.d.ts +4 -24
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/esm/ClusterError.js +0 -21
- package/dist/esm/ClusterError.js.map +1 -1
- package/dist/esm/ClusterMetrics.js +12 -14
- package/dist/esm/ClusterMetrics.js.map +1 -1
- package/dist/esm/ClusterSchema.js +17 -2
- package/dist/esm/ClusterSchema.js.map +1 -1
- package/dist/esm/ClusterWorkflowEngine.js +50 -83
- package/dist/esm/ClusterWorkflowEngine.js.map +1 -1
- package/dist/esm/Entity.js +0 -12
- package/dist/esm/Entity.js.map +1 -1
- package/dist/esm/EntityAddress.js +7 -0
- package/dist/esm/EntityAddress.js.map +1 -1
- package/dist/esm/EntityId.js +5 -0
- package/dist/esm/EntityId.js.map +1 -1
- package/dist/esm/EntityProxy.js +2 -2
- package/dist/esm/EntityProxy.js.map +1 -1
- package/dist/esm/HttpRunner.js +62 -39
- package/dist/esm/HttpRunner.js.map +1 -1
- package/dist/esm/MessageStorage.js +65 -17
- package/dist/esm/MessageStorage.js.map +1 -1
- package/dist/esm/Runner.js +3 -3
- package/dist/esm/Runner.js.map +1 -1
- package/dist/esm/RunnerAddress.js +7 -0
- package/dist/esm/RunnerAddress.js.map +1 -1
- package/dist/esm/RunnerHealth.js +88 -30
- package/dist/esm/RunnerHealth.js.map +1 -1
- package/dist/esm/RunnerServer.js +38 -24
- package/dist/esm/RunnerServer.js.map +1 -1
- package/dist/esm/RunnerStorage.js +90 -0
- package/dist/esm/RunnerStorage.js.map +1 -0
- package/dist/esm/Runners.js +19 -23
- package/dist/esm/Runners.js.map +1 -1
- package/dist/esm/ShardId.js +16 -6
- package/dist/esm/ShardId.js.map +1 -1
- package/dist/esm/Sharding.js +447 -323
- package/dist/esm/Sharding.js.map +1 -1
- package/dist/esm/ShardingConfig.js +10 -14
- package/dist/esm/ShardingConfig.js.map +1 -1
- package/dist/esm/Snowflake.js +1 -1
- package/dist/esm/SocketRunner.js +1 -1
- package/dist/esm/SocketRunner.js.map +1 -1
- package/dist/esm/SqlMessageStorage.js +22 -28
- package/dist/esm/SqlMessageStorage.js.map +1 -1
- package/dist/esm/SqlRunnerStorage.js +366 -0
- package/dist/esm/SqlRunnerStorage.js.map +1 -0
- package/dist/esm/index.js +4 -24
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/entityManager.js +41 -22
- package/dist/esm/internal/entityManager.js.map +1 -1
- package/package.json +20 -60
- package/src/ClusterError.ts +0 -24
- package/src/ClusterMetrics.ts +12 -16
- package/src/ClusterSchema.ts +17 -2
- package/src/ClusterWorkflowEngine.ts +48 -80
- package/src/Entity.ts +3 -21
- package/src/EntityAddress.ts +10 -0
- package/src/EntityId.ts +6 -0
- package/src/EntityProxy.ts +10 -10
- package/src/HttpRunner.ts +132 -67
- package/src/MessageStorage.ts +89 -24
- package/src/Runner.ts +4 -4
- package/src/RunnerAddress.ts +8 -0
- package/src/RunnerHealth.ts +119 -56
- package/src/RunnerServer.ts +64 -47
- package/src/RunnerStorage.ts +218 -0
- package/src/Runners.ts +32 -45
- package/src/ShardId.ts +14 -3
- package/src/Sharding.ts +561 -417
- package/src/ShardingConfig.ts +39 -31
- package/src/Snowflake.ts +1 -1
- package/src/SocketRunner.ts +6 -4
- package/src/SqlMessageStorage.ts +28 -30
- package/src/SqlRunnerStorage.ts +537 -0
- package/src/index.ts +4 -29
- package/src/internal/entityManager.ts +45 -29
- package/HttpCommon/package.json +0 -6
- package/HttpShardManager/package.json +0 -6
- package/ShardManager/package.json +0 -6
- package/ShardStorage/package.json +0 -6
- package/SocketShardManager/package.json +0 -6
- package/SqlShardStorage/package.json +0 -6
- package/SynchronizedClock/package.json +0 -6
- package/dist/cjs/HttpCommon.js +0 -48
- package/dist/cjs/HttpCommon.js.map +0 -1
- package/dist/cjs/HttpShardManager.js +0 -139
- package/dist/cjs/HttpShardManager.js.map +0 -1
- package/dist/cjs/ShardManager.js +0 -549
- package/dist/cjs/ShardManager.js.map +0 -1
- package/dist/cjs/ShardStorage.js +0 -151
- package/dist/cjs/ShardStorage.js.map +0 -1
- package/dist/cjs/SocketShardManager.js +0 -32
- package/dist/cjs/SocketShardManager.js.map +0 -1
- package/dist/cjs/SqlShardStorage.js +0 -253
- package/dist/cjs/SqlShardStorage.js.map +0 -1
- package/dist/cjs/SynchronizedClock.js +0 -65
- package/dist/cjs/SynchronizedClock.js.map +0 -1
- package/dist/cjs/internal/shardManager.js +0 -353
- package/dist/cjs/internal/shardManager.js.map +0 -1
- package/dist/dts/HttpCommon.d.ts +0 -25
- package/dist/dts/HttpCommon.d.ts.map +0 -1
- package/dist/dts/HttpShardManager.d.ts +0 -119
- package/dist/dts/HttpShardManager.d.ts.map +0 -1
- package/dist/dts/ShardManager.d.ts +0 -459
- package/dist/dts/ShardManager.d.ts.map +0 -1
- package/dist/dts/ShardStorage.d.ts.map +0 -1
- package/dist/dts/SocketShardManager.d.ts +0 -17
- package/dist/dts/SocketShardManager.d.ts.map +0 -1
- package/dist/dts/SqlShardStorage.d.ts +0 -38
- package/dist/dts/SqlShardStorage.d.ts.map +0 -1
- package/dist/dts/SynchronizedClock.d.ts +0 -19
- package/dist/dts/SynchronizedClock.d.ts.map +0 -1
- package/dist/dts/internal/shardManager.d.ts +0 -2
- package/dist/dts/internal/shardManager.d.ts.map +0 -1
- package/dist/esm/HttpCommon.js +0 -38
- package/dist/esm/HttpCommon.js.map +0 -1
- package/dist/esm/HttpShardManager.js +0 -128
- package/dist/esm/HttpShardManager.js.map +0 -1
- package/dist/esm/ShardManager.js +0 -535
- package/dist/esm/ShardManager.js.map +0 -1
- package/dist/esm/ShardStorage.js +0 -141
- package/dist/esm/ShardStorage.js.map +0 -1
- package/dist/esm/SocketShardManager.js +0 -24
- package/dist/esm/SocketShardManager.js.map +0 -1
- package/dist/esm/SqlShardStorage.js +0 -244
- package/dist/esm/SqlShardStorage.js.map +0 -1
- package/dist/esm/SynchronizedClock.js +0 -57
- package/dist/esm/SynchronizedClock.js.map +0 -1
- package/dist/esm/internal/shardManager.js +0 -342
- package/dist/esm/internal/shardManager.js.map +0 -1
- package/src/HttpCommon.ts +0 -73
- package/src/HttpShardManager.ts +0 -273
- package/src/ShardManager.ts +0 -823
- package/src/ShardStorage.ts +0 -297
- package/src/SocketShardManager.ts +0 -48
- package/src/SqlShardStorage.ts +0 -329
- package/src/SynchronizedClock.ts +0 -82
- package/src/internal/shardManager.ts +0 -412
package/src/Runners.ts
CHANGED
|
@@ -17,13 +17,7 @@ import * as RcMap from "effect/RcMap"
|
|
|
17
17
|
import * as Schema from "effect/Schema"
|
|
18
18
|
import type { Scope } from "effect/Scope"
|
|
19
19
|
import type { PersistenceError } from "./ClusterError.js"
|
|
20
|
-
import {
|
|
21
|
-
AlreadyProcessingMessage,
|
|
22
|
-
EntityNotAssignedToRunner,
|
|
23
|
-
EntityNotManagedByRunner,
|
|
24
|
-
MailboxFull,
|
|
25
|
-
RunnerUnavailable
|
|
26
|
-
} from "./ClusterError.js"
|
|
20
|
+
import { AlreadyProcessingMessage, EntityNotAssignedToRunner, MailboxFull, RunnerUnavailable } from "./ClusterError.js"
|
|
27
21
|
import { Persisted } from "./ClusterSchema.js"
|
|
28
22
|
import * as Envelope from "./Envelope.js"
|
|
29
23
|
import * as Message from "./Message.js"
|
|
@@ -56,13 +50,13 @@ export class Runners extends Context.Tag("@effect/cluster/Runners")<Runners, {
|
|
|
56
50
|
message: Message.IncomingLocal<Rpc>
|
|
57
51
|
) => Effect.Effect<
|
|
58
52
|
void,
|
|
59
|
-
|
|
53
|
+
EntityNotAssignedToRunner | MailboxFull | AlreadyProcessingMessage
|
|
60
54
|
>
|
|
61
55
|
readonly simulateRemoteSerialization: boolean
|
|
62
56
|
}
|
|
63
57
|
) => Effect.Effect<
|
|
64
58
|
void,
|
|
65
|
-
|
|
59
|
+
EntityNotAssignedToRunner | MailboxFull | AlreadyProcessingMessage | PersistenceError
|
|
66
60
|
>
|
|
67
61
|
|
|
68
62
|
/**
|
|
@@ -75,7 +69,6 @@ export class Runners extends Context.Tag("@effect/cluster/Runners")<Runners, {
|
|
|
75
69
|
}
|
|
76
70
|
) => Effect.Effect<
|
|
77
71
|
void,
|
|
78
|
-
| EntityNotManagedByRunner
|
|
79
72
|
| EntityNotAssignedToRunner
|
|
80
73
|
| RunnerUnavailable
|
|
81
74
|
| MailboxFull
|
|
@@ -92,7 +85,7 @@ export class Runners extends Context.Tag("@effect/cluster/Runners")<Runners, {
|
|
|
92
85
|
readonly message: Message.Outgoing<R>
|
|
93
86
|
readonly discard: boolean
|
|
94
87
|
}
|
|
95
|
-
) => Effect.Effect<void,
|
|
88
|
+
) => Effect.Effect<void, PersistenceError>
|
|
96
89
|
|
|
97
90
|
/**
|
|
98
91
|
* Notify the current Runner that a message is available, then read replies from
|
|
@@ -106,11 +99,16 @@ export class Runners extends Context.Tag("@effect/cluster/Runners")<Runners, {
|
|
|
106
99
|
readonly message: Message.Outgoing<R>
|
|
107
100
|
readonly notify: (
|
|
108
101
|
options: Message.IncomingLocal<any>
|
|
109
|
-
) => Effect.Effect<void,
|
|
102
|
+
) => Effect.Effect<void, EntityNotAssignedToRunner>
|
|
110
103
|
readonly discard: boolean
|
|
111
104
|
readonly storageOnly?: boolean | undefined
|
|
112
105
|
}
|
|
113
|
-
) => Effect.Effect<void,
|
|
106
|
+
) => Effect.Effect<void, PersistenceError>
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Mark a Runner as unavailable.
|
|
110
|
+
*/
|
|
111
|
+
readonly onRunnerUnavailable: (address: RunnerAddress) => Effect.Effect<void>
|
|
114
112
|
}>() {}
|
|
115
113
|
|
|
116
114
|
/**
|
|
@@ -243,6 +241,7 @@ export const make: (options: Omit<Runners["Type"], "sendLocal" | "notifyLocal">)
|
|
|
243
241
|
for (const message of entry.messages) {
|
|
244
242
|
yield* message.respond(reply)
|
|
245
243
|
}
|
|
244
|
+
// wait for ack
|
|
246
245
|
yield* entry.latch.await
|
|
247
246
|
}
|
|
248
247
|
entry.replies = []
|
|
@@ -266,6 +265,8 @@ export const make: (options: Omit<Runners["Type"], "sendLocal" | "notifyLocal">)
|
|
|
266
265
|
const storageLatch = Effect.unsafeMakeLatch(false)
|
|
267
266
|
if (storage !== MessageStorage.noop) {
|
|
268
267
|
yield* Effect.gen(function*() {
|
|
268
|
+
const foundRequests = new Set<StorageRequestEntry>()
|
|
269
|
+
|
|
269
270
|
while (true) {
|
|
270
271
|
yield* storageLatch.await
|
|
271
272
|
storageLatch.unsafeClose()
|
|
@@ -283,8 +284,6 @@ export const make: (options: Omit<Runners["Type"], "sendLocal" | "notifyLocal">)
|
|
|
283
284
|
)
|
|
284
285
|
)
|
|
285
286
|
|
|
286
|
-
const foundRequests = new Set<StorageRequestEntry>()
|
|
287
|
-
|
|
288
287
|
// put the replies into the storage requests and then open the latches
|
|
289
288
|
for (let i = 0; i < replies.length; i++) {
|
|
290
289
|
const reply = replies[i]
|
|
@@ -296,6 +295,7 @@ export const make: (options: Omit<Runners["Type"], "sendLocal" | "notifyLocal">)
|
|
|
296
295
|
}
|
|
297
296
|
|
|
298
297
|
foundRequests.forEach((entry) => entry.latch.unsafeOpen())
|
|
298
|
+
foundRequests.clear()
|
|
299
299
|
}
|
|
300
300
|
}).pipe(
|
|
301
301
|
Effect.interruptible,
|
|
@@ -350,12 +350,7 @@ export const make: (options: Omit<Runners["Type"], "sendLocal" | "notifyLocal">)
|
|
|
350
350
|
address: options_.address.value,
|
|
351
351
|
message
|
|
352
352
|
}),
|
|
353
|
-
(
|
|
354
|
-
if (error._tag === "EntityNotManagedByRunner") {
|
|
355
|
-
return Effect.fail(error)
|
|
356
|
-
}
|
|
357
|
-
return replyFromStorage(message)
|
|
358
|
-
}
|
|
353
|
+
(_) => replyFromStorage(message)
|
|
359
354
|
)
|
|
360
355
|
}
|
|
361
356
|
return options.notify(options_).pipe(
|
|
@@ -372,17 +367,9 @@ export const make: (options: Omit<Runners["Type"], "sendLocal" | "notifyLocal">)
|
|
|
372
367
|
() => Effect.void
|
|
373
368
|
)
|
|
374
369
|
} else if (!duplicate && options.storageOnly !== true) {
|
|
375
|
-
return
|
|
376
|
-
message,
|
|
377
|
-
Effect.
|
|
378
|
-
replyFromStorage(message).pipe(
|
|
379
|
-
Effect.forkIn(runnersScope),
|
|
380
|
-
Effect.interruptible
|
|
381
|
-
)
|
|
382
|
-
)
|
|
383
|
-
).pipe(
|
|
384
|
-
Effect.andThen(options.notify(Message.incomingLocalFromOutgoing(message))),
|
|
385
|
-
Effect.catchTag("EntityNotAssignedToRunner", () => Effect.void)
|
|
370
|
+
return options.notify(Message.incomingLocalFromOutgoing(message)).pipe(
|
|
371
|
+
Effect.andThen(storage.registerReplyHandler(message)),
|
|
372
|
+
Effect.catchTag("EntityNotAssignedToRunner", () => replyFromStorage(message))
|
|
386
373
|
)
|
|
387
374
|
}
|
|
388
375
|
return options.notify(Message.incomingLocalFromOutgoing(message)).pipe(
|
|
@@ -403,9 +390,10 @@ export const makeNoop: Effect.Effect<
|
|
|
403
390
|
never,
|
|
404
391
|
MessageStorage.MessageStorage | Snowflake.Generator | ShardingConfig | Scope
|
|
405
392
|
> = make({
|
|
406
|
-
send: ({ message }) => Effect.fail(new
|
|
393
|
+
send: ({ message }) => Effect.fail(new EntityNotAssignedToRunner({ address: message.envelope.address })),
|
|
407
394
|
notify: () => Effect.void,
|
|
408
|
-
ping: () => Effect.void
|
|
395
|
+
ping: () => Effect.void,
|
|
396
|
+
onRunnerUnavailable: () => Effect.void
|
|
409
397
|
})
|
|
410
398
|
|
|
411
399
|
/**
|
|
@@ -419,12 +407,10 @@ export const layerNoop: Layer.Layer<
|
|
|
419
407
|
> = Layer.scoped(Runners, makeNoop).pipe(Layer.provide([Snowflake.layerGenerator]))
|
|
420
408
|
|
|
421
409
|
const rpcErrors: Schema.Union<[
|
|
422
|
-
typeof EntityNotManagedByRunner,
|
|
423
410
|
typeof EntityNotAssignedToRunner,
|
|
424
411
|
typeof MailboxFull,
|
|
425
412
|
typeof AlreadyProcessingMessage
|
|
426
413
|
]> = Schema.Union(
|
|
427
|
-
EntityNotManagedByRunner,
|
|
428
414
|
EntityNotAssignedToRunner,
|
|
429
415
|
MailboxFull,
|
|
430
416
|
AlreadyProcessingMessage
|
|
@@ -441,7 +427,7 @@ export class Rpcs extends RpcGroup.make(
|
|
|
441
427
|
envelope: Envelope.PartialEncoded
|
|
442
428
|
},
|
|
443
429
|
success: Schema.Void,
|
|
444
|
-
error: Schema.Union(
|
|
430
|
+
error: Schema.Union(EntityNotAssignedToRunner, AlreadyProcessingMessage)
|
|
445
431
|
}),
|
|
446
432
|
Rpc.make("Effect", {
|
|
447
433
|
payload: {
|
|
@@ -510,7 +496,12 @@ export const makeRpc: Effect.Effect<
|
|
|
510
496
|
ping(address) {
|
|
511
497
|
return RcMap.get(clients, address).pipe(
|
|
512
498
|
Effect.flatMap((client) => client.Ping()),
|
|
513
|
-
Effect.catchAllCause(() =>
|
|
499
|
+
Effect.catchAllCause(() => {
|
|
500
|
+
return Effect.zipRight(
|
|
501
|
+
RcMap.invalidate(clients, address),
|
|
502
|
+
Effect.fail(new RunnerUnavailable({ address }))
|
|
503
|
+
)
|
|
504
|
+
}),
|
|
514
505
|
Effect.scoped
|
|
515
506
|
)
|
|
516
507
|
},
|
|
@@ -603,14 +594,10 @@ export const makeRpc: Effect.Effect<
|
|
|
603
594
|
return RcMap.get(clients, address.value).pipe(
|
|
604
595
|
Effect.flatMap((client) => client.Notify({ envelope })),
|
|
605
596
|
Effect.scoped,
|
|
606
|
-
Effect.
|
|
607
|
-
if (error._tag === "EntityNotManagedByRunner") {
|
|
608
|
-
return Effect.fail(error)
|
|
609
|
-
}
|
|
610
|
-
return Effect.void
|
|
611
|
-
})
|
|
597
|
+
Effect.ignore
|
|
612
598
|
)
|
|
613
|
-
}
|
|
599
|
+
},
|
|
600
|
+
onRunnerUnavailable: (address) => RcMap.invalidate(clients, address)
|
|
614
601
|
})
|
|
615
602
|
})
|
|
616
603
|
|
package/src/ShardId.ts
CHANGED
|
@@ -23,7 +23,17 @@ const constDisableValidation = { disableValidation: true }
|
|
|
23
23
|
* @since 1.0.0
|
|
24
24
|
* @category Constructors
|
|
25
25
|
*/
|
|
26
|
-
export const make = (group: string, id: number): ShardId =>
|
|
26
|
+
export const make = (group: string, id: number): ShardId => {
|
|
27
|
+
const key = `${group}:${id}`
|
|
28
|
+
let shardId = shardIdCache.get(key)
|
|
29
|
+
if (!shardId) {
|
|
30
|
+
shardId = new ShardId({ group, id }, constDisableValidation)
|
|
31
|
+
shardIdCache.set(key, shardId)
|
|
32
|
+
}
|
|
33
|
+
return shardId
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const shardIdCache = new Map<string, ShardId>()
|
|
27
37
|
|
|
28
38
|
/**
|
|
29
39
|
* @since 1.0.0
|
|
@@ -89,9 +99,10 @@ export class ShardId extends S.Class<ShardId>("@effect/cluster/ShardId")({
|
|
|
89
99
|
}
|
|
90
100
|
|
|
91
101
|
/**
|
|
92
|
-
* @since
|
|
102
|
+
* @since 4.0.0
|
|
93
103
|
*/
|
|
94
104
|
static fromString(s: string): ShardId {
|
|
95
|
-
|
|
105
|
+
const encoded = ShardId.fromStringEncoded(s)
|
|
106
|
+
return make(encoded.group, encoded.id)
|
|
96
107
|
}
|
|
97
108
|
}
|