diff --git a/.changeset/major-lands-shake.md b/.changeset/major-lands-shake.md new file mode 100644 index 00000000000..7d1349f30e7 --- /dev/null +++ b/.changeset/major-lands-shake.md @@ -0,0 +1,5 @@ +--- +"@effect/cluster": patch +--- + +backport cluster serialization fix for notify path diff --git a/packages/cluster/src/Runners.ts b/packages/cluster/src/Runners.ts index e675f24362c..c69b9a7764c 100644 --- a/packages/cluster/src/Runners.ts +++ b/packages/cluster/src/Runners.ts @@ -590,12 +590,16 @@ export const makeRpc: Effect.Effect< if (Option.isNone(address)) { return Effect.void } - const envelope = message.envelope - return RcMap.get(clients, address.value).pipe( - Effect.flatMap((client) => client.Notify({ envelope })), - Effect.scoped, - Effect.ignore - ) + const encode: Effect.Effect = + message._tag === "OutgoingRequest" + ? Effect.orDie(Message.serializeRequest(message)) + : Effect.succeed(message.envelope) + return Effect.flatMap(encode, (envelope) => + RcMap.get(clients, address.value).pipe( + Effect.flatMap((client) => client.Notify({ envelope })), + Effect.scoped, + Effect.ignore + )) }, onRunnerUnavailable: (address) => RcMap.invalidate(clients, address) })