@effect/cluster 0.52.11 → 0.53.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.
@@ -12,6 +12,7 @@ import { identity } from "effect/Function";
12
12
  import * as HashMap from "effect/HashMap";
13
13
  import * as Metric from "effect/Metric";
14
14
  import * as Option from "effect/Option";
15
+ import * as ParseResult from "effect/ParseResult";
15
16
  import * as Runtime from "effect/Runtime";
16
17
  import * as Schedule from "effect/Schedule";
17
18
  import * as Schema from "effect/Schema";
@@ -19,8 +20,7 @@ import * as Scope from "effect/Scope";
19
20
  import { AlreadyProcessingMessage, EntityNotAssignedToRunner, MailboxFull, MalformedMessage } from "../ClusterError.js";
20
21
  import * as ClusterMetrics from "../ClusterMetrics.js";
21
22
  import { Persisted, Uninterruptible } from "../ClusterSchema.js";
22
- import { CurrentAddress, CurrentRunnerAddress, Request } from "../Entity.js";
23
- import * as Envelope from "../Envelope.js";
23
+ import { CurrentAddress, CurrentRunnerAddress, KeepAliveLatch, KeepAliveRpc, Request } from "../Entity.js";
24
24
  import * as Message from "../Message.js";
25
25
  import * as MessageStorage from "../MessageStorage.js";
26
26
  import * as Reply from "../Reply.js";
@@ -41,6 +41,9 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
41
41
  const clock = yield* Effect.clock;
42
42
  const context = yield* Effect.context();
43
43
  const retryDriver = yield* Schedule.driver(options.defectRetryPolicy ? Schedule.andThen(options.defectRetryPolicy, defaultRetryPolicy) : defaultRetryPolicy);
44
+ const entityRpcs = new Map(entity.protocol.requests);
45
+ // add internal rpcs
46
+ entityRpcs.set(KeepAliveRpc._tag, KeepAliveRpc);
44
47
  const activeServers = new Map();
45
48
  const serverCloseLatches = new Map();
46
49
  const processedRequestIds = new Set();
@@ -51,7 +54,8 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
51
54
  });
52
55
  }
53
56
  const scope = yield* Effect.scope;
54
- const endLatch = yield* Effect.makeLatch();
57
+ const endLatch = Effect.unsafeMakeLatch();
58
+ const keepAliveLatch = Effect.unsafeMakeLatch();
55
59
  // on shutdown, reset the storage for the entity
56
60
  yield* Scope.addFinalizerExit(scope, () => {
57
61
  serverCloseLatches.get(address)?.unsafeOpen();
@@ -65,7 +69,7 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
65
69
  const writeRef = yield* ResourceRef.from(scope, Effect.fnUntraced(function* (scope) {
66
70
  let isShuttingDown = false;
67
71
  // Initiate the behavior for the entity
68
- const handlers = yield* entity.protocol.toHandlersContext(buildHandlers).pipe(Effect.provide(context.pipe(Context.add(CurrentAddress, address), Context.add(CurrentRunnerAddress, options.runnerAddress), Context.add(Scope.Scope, scope))), Effect.locally(FiberRef.currentLogAnnotations, HashMap.empty()));
72
+ const handlers = yield* entity.protocol.toHandlersContext(buildHandlers).pipe(Effect.provide(context.pipe(Context.add(CurrentAddress, address), Context.add(CurrentRunnerAddress, options.runnerAddress), Context.add(KeepAliveLatch, keepAliveLatch), Context.add(Scope.Scope, scope))), Effect.locally(FiberRef.currentLogAnnotations, HashMap.empty()));
69
73
  const server = yield* RpcServer.makeNoSerialization(entity.protocol, {
70
74
  spanPrefix: `${entity.type}(${address.entityId})`,
71
75
  spanAttributes: {
@@ -183,6 +187,7 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
183
187
  }), Effect.catchAllCause(onDefect));
184
188
  }
185
189
  const state = {
190
+ scope,
186
191
  address,
187
192
  write(clientId, message) {
188
193
  if (writeRef.state.current._tag !== "Acquired") {
@@ -191,7 +196,9 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
191
196
  return writeRef.state.current.value(clientId, message);
192
197
  },
193
198
  activeRequests,
194
- lastActiveCheck: clock.unsafeCurrentTimeMillis()
199
+ lastActiveCheck: clock.unsafeCurrentTimeMillis(),
200
+ keepAliveLatch,
201
+ keepAliveEnabled: false
195
202
  };
196
203
  // During shutdown, signal that no more messages will be processed
197
204
  // and wait for the fiber to complete.
@@ -237,10 +244,27 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
237
244
  address: message.envelope.address
238
245
  }));
239
246
  }
240
- const rpc = entity.protocol.requests.get(message.envelope.tag);
247
+ const rpc = entityRpcs.get(message.envelope.tag);
241
248
  if (!storageEnabled && Context.get(rpc.annotations, Persisted)) {
242
249
  return Effect.dieMessage("EntityManager.sendLocal: Cannot process a persisted message without MessageStorage");
243
250
  }
251
+ // Cluster internal RPCs
252
+ // keep-alive RPC
253
+ if (rpc._tag === KeepAliveRpc._tag) {
254
+ const msg = message;
255
+ const reply = Effect.suspend(() => Effect.orDie(retryRespond(4, msg.respond(new Reply.WithExit({
256
+ requestId: message.envelope.requestId,
257
+ id: snowflakeGen.unsafeNext(),
258
+ exit: Exit.void
259
+ })))));
260
+ if (server.keepAliveEnabled) return reply;
261
+ server.keepAliveEnabled = true;
262
+ server.keepAliveLatch.unsafeClose();
263
+ return server.keepAliveLatch.whenOpen(Effect.suspend(() => {
264
+ server.keepAliveEnabled = false;
265
+ return reply;
266
+ })).pipe(Effect.forkIn(server.scope), Effect.asVoid);
267
+ }
244
268
  if (mailboxCapacity !== "unbounded" && server.activeRequests.size >= mailboxCapacity) {
245
269
  return Effect.fail(new MailboxFull({
246
270
  address: message.envelope.address
@@ -286,7 +310,7 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
286
310
  }
287
311
  }), FiberRef.currentLogAnnotations, HashMap.empty());
288
312
  }
289
- const decodeMessage = Schema.decode(makeMessageSchema(entity));
313
+ const decodeMessage = makeMessageDecode(entity, entityRpcs);
290
314
  const runFork = Runtime.runFork(yield* Effect.runtime().pipe(Effect.interruptible));
291
315
  return identity({
292
316
  interruptShard: shardId => Effect.suspend(function loop() {
@@ -362,24 +386,31 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (entity, buildHandl
362
386
  });
363
387
  });
364
388
  const defaultRetryPolicy = /*#__PURE__*/Schedule.exponential(500, 1.5).pipe(/*#__PURE__*/Schedule.union(/*#__PURE__*/Schedule.spaced("10 seconds")));
365
- const makeMessageSchema = entity => {
366
- const requests = Arr.empty();
367
- for (const rpc of entity.protocol.requests.values()) {
368
- requests.push(Schema.TaggedStruct("IncomingRequest", {
369
- envelope: Schema.transform(Schema.Struct({
370
- ...Envelope.PartialEncodedRequestFromSelf.fields,
371
- tag: Schema.Literal(rpc._tag),
372
- payload: rpc.payloadSchema
373
- }), Envelope.RequestFromSelf, {
374
- decode: encoded => Envelope.makeRequest(encoded),
375
- encode: identity
376
- }),
377
- lastSentReply: Schema.OptionFromSelf(Reply.Reply(rpc))
378
- }));
379
- }
380
- return Schema.Union(...requests, Schema.TaggedStruct("IncomingEnvelope", {
381
- envelope: Schema.Union(Schema.typeSchema(Envelope.AckChunk), Schema.typeSchema(Envelope.Interrupt))
382
- }));
389
+ const makeMessageDecode = (entity, entityRpcs) => {
390
+ const decodeRequest = (message, rpc) => {
391
+ const payload = Schema.decode(rpc.payloadSchema)(message.envelope.payload);
392
+ const lastSentReply = Option.isSome(message.lastSentReply) ? Effect.asSome(Schema.decode(Reply.Reply(rpc))(message.lastSentReply.value)) : Effect.succeedNone;
393
+ return Effect.flatMap(payload, payload => Effect.map(lastSentReply, lastSentReply => ({
394
+ _tag: "IncomingRequest",
395
+ envelope: {
396
+ ...message.envelope,
397
+ payload
398
+ },
399
+ lastSentReply
400
+ })));
401
+ };
402
+ return message => {
403
+ if (message._tag === "IncomingEnvelope") {
404
+ return Effect.succeed(message);
405
+ }
406
+ const rpc = entityRpcs.get(message.envelope.tag);
407
+ if (!rpc) {
408
+ return Effect.fail(new ParseResult.ParseError({
409
+ issue: new ParseResult.Unexpected(message, `Unknown tag ${message.envelope.tag} for entity type ${entity.type}`)
410
+ }));
411
+ }
412
+ return decodeRequest(message, rpc);
413
+ };
383
414
  };
384
415
  const retryRespond = (times, effect) => times === 0 ? effect : Effect.catchAll(effect, () => Effect.delay(retryRespond(times - 1, effect), 200));
385
416
  //# sourceMappingURL=entityManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entityManager.js","names":["RequestId","RpcServer","Arr","Cause","Context","Duration","Effect","Equal","Exit","FiberRef","identity","HashMap","Metric","Option","Runtime","Schedule","Schema","Scope","AlreadyProcessingMessage","EntityNotAssignedToRunner","MailboxFull","MalformedMessage","ClusterMetrics","Persisted","Uninterruptible","CurrentAddress","CurrentRunnerAddress","Request","Envelope","Message","MessageStorage","Reply","ShardingConfig","Snowflake","EntityReaper","joinAllDiscard","internalInterruptors","ResourceMap","ResourceRef","make","fnUntraced","entity","buildHandlers","options","config","snowflakeGen","Generator","managerScope","scope","storageEnabled","storage","noop","mailboxCapacity","entityMailboxCapacity","clock","context","retryDriver","driver","defectRetryPolicy","andThen","defaultRetryPolicy","activeServers","Map","serverCloseLatches","processedRequestIds","Set","entities","address","sharding","hasShardId","shardId","endLatch","makeLatch","addFinalizerExit","get","unsafeOpen","delete","void","activeRequests","defectRequestIds","writeRef","from","isShuttingDown","handlers","protocol","toHandlersContext","pipe","provide","add","runnerAddress","locally","currentLogAnnotations","empty","server","makeNoSerialization","spanPrefix","type","entityId","spanAttributes","concurrency","disableFatalDefects","onFromServer","response","_tag","request","requestId","sentReply","rpc","annotations","isFailure","exit","isInterrupted","forServer","write","message","envelope","id","tag","payload","lastSentChunk","forkIn","unregisterReplyHandler","retryRespond","suspend","respond","WithExit","unsafeNext","flatMap","size","state","lastActiveCheck","unsafeCurrentTimeMillis","orDie","sequence","reply","Chunk","values","some","onDefect","die","defect","open","extend","addFinalizer","sync","length","cause","has","effect","unsafeRebuild","Array","keys","logError","ignore","next","annotateLogs","module","runner","catchAllCause","clientId","current","await","value","withFiberRuntime","fiber","set","unsafeMakeLatch","interruptible","timeoutOption","entityTerminationTimeout","reaper","maxIdleTime","toMillis","entityMaxIdleTime","Number","isFinite","register","servers","gauge","tagged","unsafeUpdate","BigInt","sleep","forever","sendLocal","entry","fail","envelopeId","requests","dieMessage","lastSentReply","match","onNone","onSome","isSome","replyId","interruptors","decodeMessage","decode","makeMessageSchema","runFork","runtime","interruptShard","loop","fibers","forEach","symbol","push","removeIgnore","latch","isProcessingFor","excludeReplies","undefined","clearProcessed","clear","send","matchEffect","onFailure","ReplyWithContext","onSuccess","decoded","IncomingEnvelope","IncomingRequestLocal","activeEntityCount","exponential","union","spaced","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":[]}
1
+ {"version":3,"file":"entityManager.js","names":["RequestId","RpcServer","Arr","Cause","Context","Duration","Effect","Equal","Exit","FiberRef","identity","HashMap","Metric","Option","ParseResult","Runtime","Schedule","Schema","Scope","AlreadyProcessingMessage","EntityNotAssignedToRunner","MailboxFull","MalformedMessage","ClusterMetrics","Persisted","Uninterruptible","CurrentAddress","CurrentRunnerAddress","KeepAliveLatch","KeepAliveRpc","Request","Message","MessageStorage","Reply","ShardingConfig","Snowflake","EntityReaper","joinAllDiscard","internalInterruptors","ResourceMap","ResourceRef","make","fnUntraced","entity","buildHandlers","options","config","snowflakeGen","Generator","managerScope","scope","storageEnabled","storage","noop","mailboxCapacity","entityMailboxCapacity","clock","context","retryDriver","driver","defectRetryPolicy","andThen","defaultRetryPolicy","entityRpcs","Map","protocol","requests","set","_tag","activeServers","serverCloseLatches","processedRequestIds","Set","entities","address","sharding","hasShardId","shardId","endLatch","unsafeMakeLatch","keepAliveLatch","addFinalizerExit","get","unsafeOpen","delete","void","activeRequests","defectRequestIds","writeRef","from","isShuttingDown","handlers","toHandlersContext","pipe","provide","add","runnerAddress","locally","currentLogAnnotations","empty","server","makeNoSerialization","spanPrefix","type","entityId","spanAttributes","concurrency","disableFatalDefects","onFromServer","response","request","requestId","sentReply","rpc","annotations","isFailure","exit","isInterrupted","forServer","write","message","envelope","id","tag","payload","lastSentChunk","forkIn","unregisterReplyHandler","retryRespond","suspend","respond","WithExit","unsafeNext","flatMap","size","state","lastActiveCheck","unsafeCurrentTimeMillis","orDie","sequence","reply","Chunk","values","some","onDefect","die","defect","open","extend","addFinalizer","sync","length","cause","has","effect","unsafeRebuild","Array","keys","logError","ignore","next","annotateLogs","module","runner","catchAllCause","clientId","current","await","value","keepAliveEnabled","withFiberRuntime","fiber","interruptible","timeoutOption","entityTerminationTimeout","reaper","maxIdleTime","toMillis","entityMaxIdleTime","Number","isFinite","register","servers","gauge","tagged","unsafeUpdate","BigInt","sleep","forever","sendLocal","entry","fail","envelopeId","dieMessage","msg","unsafeClose","whenOpen","asVoid","lastSentReply","match","onNone","onSome","isSome","replyId","interruptors","decodeMessage","makeMessageDecode","runFork","runtime","interruptShard","loop","fibers","forEach","symbol","push","removeIgnore","latch","isProcessingFor","excludeReplies","undefined","clearProcessed","clear","send","matchEffect","onFailure","ReplyWithContext","onSuccess","decoded","IncomingEnvelope","IncomingRequestLocal","activeEntityCount","exponential","union","spaced","decodeRequest","decode","payloadSchema","asSome","succeedNone","map","succeed","ParseError","issue","Unexpected","times","catchAll","delay"],"sources":["../../../src/internal/entityManager.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/cluster",
3
- "version": "0.52.11",
3
+ "version": "0.53.0",
4
4
  "description": "Unified interfaces for common cluster-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -12,10 +12,10 @@
12
12
  "homepage": "https://effect.website",
13
13
  "peerDependencies": {
14
14
  "@effect/platform": "^0.93.3",
15
- "@effect/rpc": "^0.72.1",
15
+ "@effect/rpc": "^0.72.2",
16
16
  "@effect/sql": "^0.48.0",
17
- "@effect/workflow": "^0.12.5",
18
- "effect": "^3.19.4"
17
+ "@effect/workflow": "^0.13.0",
18
+ "effect": "^3.19.5"
19
19
  },
20
20
  "publishConfig": {
21
21
  "provenance": true
@@ -7,14 +7,14 @@ import { DurableDeferred } from "@effect/workflow"
7
7
  import * as Activity from "@effect/workflow/Activity"
8
8
  import * as DurableClock from "@effect/workflow/DurableClock"
9
9
  import * as Workflow from "@effect/workflow/Workflow"
10
- import { WorkflowEngine, WorkflowInstance } from "@effect/workflow/WorkflowEngine"
10
+ import { makeUnsafe, WorkflowEngine, WorkflowInstance } from "@effect/workflow/WorkflowEngine"
11
11
  import * as Arr from "effect/Array"
12
12
  import * as Cause from "effect/Cause"
13
13
  import * as Context from "effect/Context"
14
14
  import * as DateTime from "effect/DateTime"
15
15
  import * as Duration from "effect/Duration"
16
16
  import * as Effect from "effect/Effect"
17
- import type * as Exit from "effect/Exit"
17
+ import * as Exit from "effect/Exit"
18
18
  import * as Fiber from "effect/Fiber"
19
19
  import * as FiberId from "effect/FiberId"
20
20
  import * as Layer from "effect/Layer"
@@ -35,6 +35,7 @@ import { EntityId } from "./EntityId.js"
35
35
  import { EntityType } from "./EntityType.js"
36
36
  import { MessageStorage } from "./MessageStorage.js"
37
37
  import type { WithExitEncoded } from "./Reply.js"
38
+ import * as Reply from "./Reply.js"
38
39
  import * as Sharding from "./Sharding.js"
39
40
  import * as Snowflake from "./Snowflake.js"
40
41
 
@@ -252,11 +253,9 @@ export const make = Effect.gen(function*() {
252
253
  yield* sharding.reset(requestId.value)
253
254
  }, Effect.scoped)
254
255
 
255
- return WorkflowEngine.of({
256
- register(workflow, execute) {
257
- // eslint-disable-next-line @typescript-eslint/no-this-alias
258
- const engine = this
259
- return Effect.suspend(() =>
256
+ const engine = makeUnsafe({
257
+ register: (workflow, execute) =>
258
+ Effect.suspend(() =>
260
259
  sharding.registerEntity(
261
260
  ensureEntity(workflow),
262
261
  Effect.gen(function*() {
@@ -277,8 +276,8 @@ export const make = Effect.gen(function*() {
277
276
  return parent ? ensureSuccess(sendResumeParent(parent)) : Effect.void
278
277
  }
279
278
  return engine.deferredResult(InterruptSignal).pipe(
280
- Effect.flatMap((maybeResult) => {
281
- if (Option.isNone(maybeResult)) {
279
+ Effect.flatMap((maybeExit) => {
280
+ if (maybeExit === undefined) {
282
281
  return Effect.void
283
282
  }
284
283
  instance.suspended = false
@@ -354,10 +353,9 @@ export const make = Effect.gen(function*() {
354
353
  }
355
354
  })
356
355
  ) as Effect.Effect<void, never, Scope.Scope>
357
- )
358
- },
356
+ ),
359
357
 
360
- execute: ({ discard, executionId, parent, payload, workflow }) => {
358
+ execute: (workflow, { discard, executionId, parent, payload }) => {
361
359
  ensureEntity(workflow)
362
360
  return RcMap.get(clients, workflow.name).pipe(
363
361
  Effect.flatMap((make) =>
@@ -376,7 +374,7 @@ export const make = Effect.gen(function*() {
376
374
  )
377
375
  },
378
376
 
379
- poll: Effect.fnUntraced(function*({ executionId, workflow }) {
377
+ poll: Effect.fnUntraced(function*(workflow, executionId) {
380
378
  const entity = ensureEntity(workflow)
381
379
  const exitSchema = Rpc.exitSchema(entity.protocol.requests.get("run")!)
382
380
  const oreply = yield* requestReply({
@@ -395,7 +393,7 @@ export const make = Effect.gen(function*() {
395
393
  }, Effect.orDie),
396
394
 
397
395
  interrupt: Effect.fnUntraced(
398
- function*(this: WorkflowEngine["Type"], workflow, executionId) {
396
+ function*(workflow, executionId) {
399
397
  ensureEntity(workflow)
400
398
  const oreply = yield* requestReply({
401
399
  workflow,
@@ -411,11 +409,11 @@ export const make = Effect.gen(function*() {
411
409
  return
412
410
  }
413
411
 
414
- yield* this.deferredDone({
412
+ yield* engine.deferredDone(InterruptSignal, {
415
413
  workflowName: workflow.name,
416
414
  executionId,
417
415
  deferredName: InterruptSignal.name,
418
- exit: { _tag: "Success", value: void 0 }
416
+ exit: Exit.void
419
417
  })
420
418
  },
421
419
  Effect.retry({
@@ -429,7 +427,7 @@ export const make = Effect.gen(function*() {
429
427
  resume: (workflow, executionId) => ensureSuccess(resume(workflow, executionId)),
430
428
 
431
429
  activityExecute: Effect.fnUntraced(
432
- function*({ activity, attempt }) {
430
+ function*(activity, attempt) {
433
431
  const runtime = yield* Effect.runtime<WorkflowInstance>()
434
432
  const context = runtime.context
435
433
  const instance = Context.get(context, WorkflowInstance)
@@ -466,7 +464,6 @@ export const make = Effect.gen(function*() {
466
464
 
467
465
  deferredResult: (deferred) =>
468
466
  WorkflowInstance.pipe(
469
- Effect.tap((instance) => Effect.annotateCurrentSpan("executionId", instance.executionId)),
470
467
  Effect.flatMap((instance) =>
471
468
  requestReply({
472
469
  workflow: instance.workflow,
@@ -476,11 +473,16 @@ export const make = Effect.gen(function*() {
476
473
  id: deferred.name
477
474
  })
478
475
  ),
479
- Effect.map(Option.map((reply) =>
480
- reply.exit._tag === "Success"
481
- ? reply.exit.value as any as Schema.ExitEncoded<unknown, unknown, unknown>
482
- : reply.exit
483
- )),
476
+ Effect.map((oreply) => {
477
+ if (Option.isNone(oreply)) {
478
+ return undefined
479
+ }
480
+ const reply = oreply.value
481
+ const decoded = decodeDeferredWithExit(reply as any)
482
+ return decoded.exit._tag === "Success"
483
+ ? decoded.exit.value
484
+ : decoded.exit
485
+ }),
484
486
  Effect.retry({
485
487
  while: (e) => e._tag === "PersistenceError",
486
488
  times: 3,
@@ -502,13 +504,13 @@ export const make = Effect.gen(function*() {
502
504
  Effect.scoped
503
505
  ),
504
506
 
505
- scheduleClock(options) {
507
+ scheduleClock(workflow, options) {
506
508
  const client = clockClient(options.executionId)
507
509
  return DateTime.now.pipe(
508
510
  Effect.flatMap((now) =>
509
511
  client.run({
510
512
  name: options.clock.name,
511
- workflowName: options.workflow.name,
513
+ workflowName: workflow.name,
512
514
  wakeUp: DateTime.addDuration(now, options.clock.duration)
513
515
  }, { discard: true })
514
516
  ),
@@ -516,6 +518,8 @@ export const make = Effect.gen(function*() {
516
518
  )
517
519
  }
518
520
  })
521
+
522
+ return engine
519
523
  })
520
524
 
521
525
  const retryPolicy = Schedule.exponential(200, 1.5).pipe(
@@ -569,11 +573,11 @@ const makeWorkflowEntity = (workflow: Workflow.Any) =>
569
573
  ActivityRpc
570
574
  ]).annotateContext(workflow.annotations)
571
575
 
572
- const ExitUnknown = Schema.encodedSchema(Schema.Exit({
576
+ const ExitUnknown = Schema.Exit({
573
577
  success: Schema.Unknown,
574
578
  failure: Schema.Unknown,
575
579
  defect: Schema.Defect
576
- }))
580
+ })
577
581
 
578
582
  const DeferredRpc = Rpc.make("deferred", {
579
583
  payload: {
@@ -586,6 +590,8 @@ const DeferredRpc = Rpc.make("deferred", {
586
590
  .annotate(ClusterSchema.Persisted, true)
587
591
  .annotate(ClusterSchema.Uninterruptible, true)
588
592
 
593
+ const decodeDeferredWithExit = Schema.decodeSync(Reply.WithExit.schema(DeferredRpc))
594
+
589
595
  const ResumeRpc = Rpc.make("resume", {
590
596
  payload: {},
591
597
  primaryKey: () => ""
@@ -628,11 +634,11 @@ const ClockEntityLayer = ClockEntity.toLayer(Effect.gen(function*() {
628
634
  return {
629
635
  run(request) {
630
636
  const deferred = DurableClock.make({ name: request.payload.name, duration: Duration.zero }).deferred
631
- return ensureSuccess(engine.deferredDone({
637
+ return ensureSuccess(engine.deferredDone(deferred, {
632
638
  workflowName: request.payload.workflowName,
633
639
  executionId,
634
640
  deferredName: deferred.name,
635
- exit: { _tag: "Success", value: void 0 }
641
+ exit: Exit.void
636
642
  }))
637
643
  }
638
644
  }
package/src/Entity.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import type * as Rpc from "@effect/rpc/Rpc"
4
+ import * as Headers from "@effect/platform/Headers"
5
+ import * as Rpc from "@effect/rpc/Rpc"
5
6
  import * as RpcClient from "@effect/rpc/RpcClient"
6
7
  import * as RpcGroup from "@effect/rpc/RpcGroup"
7
8
  import * as RpcServer from "@effect/rpc/RpcServer"
@@ -25,12 +26,14 @@ import { Scope } from "effect/Scope"
25
26
  import type * as Stream from "effect/Stream"
26
27
  import type { AlreadyProcessingMessage, MailboxFull, PersistenceError } from "./ClusterError.js"
27
28
  import { ShardGroup } from "./ClusterSchema.js"
29
+ import * as ClusterSchema from "./ClusterSchema.js"
28
30
  import { EntityAddress } from "./EntityAddress.js"
29
31
  import type { EntityId } from "./EntityId.js"
30
32
  import { EntityType } from "./EntityType.js"
31
33
  import * as Envelope from "./Envelope.js"
32
34
  import { hashString } from "./internal/hash.js"
33
35
  import { ResourceMap } from "./internal/resourceMap.js"
36
+ import * as Message from "./Message.js"
34
37
  import type * as Reply from "./Reply.js"
35
38
  import { RunnerAddress } from "./RunnerAddress.js"
36
39
  import * as ShardId from "./ShardId.js"
@@ -584,3 +587,66 @@ export const makeTestClient: <Type extends string, Rpcs extends Rpc.Any, LA, LE,
584
587
 
585
588
  return (entityId: string) => map.get(entityId)
586
589
  })
590
+
591
+ /**
592
+ * @since 1.0.0
593
+ * @category Keep alive
594
+ */
595
+ export const keepAlive: (
596
+ enabled: boolean
597
+ ) => Effect.Effect<
598
+ void,
599
+ never,
600
+ Sharding | CurrentAddress
601
+ > = Effect.fnUntraced(function*(enabled: boolean) {
602
+ const olatch = yield* Effect.serviceOption(KeepAliveLatch)
603
+ if (olatch._tag === "None") return
604
+ if (!enabled) {
605
+ yield* olatch.value.open
606
+ return
607
+ }
608
+ const sharding = yield* shardingTag
609
+ const address = yield* CurrentAddress
610
+ const requestId = yield* sharding.getSnowflake
611
+ const span = yield* Effect.orDie(Effect.currentSpan)
612
+ yield* Effect.orDie(sharding.sendOutgoing(
613
+ new Message.OutgoingRequest({
614
+ rpc: KeepAliveRpc,
615
+ context: Context.empty() as any,
616
+ envelope: Envelope.makeRequest({
617
+ requestId,
618
+ address,
619
+ tag: KeepAliveRpc._tag,
620
+ payload: void 0,
621
+ headers: Headers.empty,
622
+ traceId: span.traceId,
623
+ spanId: span.spanId,
624
+ sampled: span.sampled
625
+ }),
626
+ lastReceivedReply: Option.none(),
627
+ respond: () => Effect.void
628
+ }),
629
+ true
630
+ ))
631
+ }, (effect, enabled) =>
632
+ Effect.withSpan(
633
+ effect,
634
+ "Entity/keepAlive",
635
+ { attributes: { enabled }, captureStackTrace: false }
636
+ ))
637
+
638
+ /**
639
+ * @since 1.0.0
640
+ * @category Keep alive
641
+ */
642
+ export const KeepAliveRpc = Rpc.make("Cluster/Entity/keepAlive")
643
+ .annotate(ClusterSchema.Persisted, true)
644
+ .annotate(ClusterSchema.Uninterruptible, true)
645
+
646
+ /**
647
+ * @since 1.0.0
648
+ * @category Keep alive
649
+ */
650
+ export class KeepAliveLatch extends Context.Tag(
651
+ "effect/cluster/Entity/KeepAliveLatch"
652
+ )<KeepAliveLatch, Effect.Latch>() {}