@effect/cluster 0.36.3 → 0.37.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/ClusterWorkflowEngine/package.json +6 -0
- package/dist/cjs/ClusterSchema.js +9 -1
- package/dist/cjs/ClusterSchema.js.map +1 -1
- package/dist/cjs/ClusterWorkflowEngine.js +386 -0
- package/dist/cjs/ClusterWorkflowEngine.js.map +1 -0
- package/dist/cjs/Envelope.js +14 -4
- package/dist/cjs/Envelope.js.map +1 -1
- package/dist/cjs/Message.js +22 -2
- package/dist/cjs/Message.js.map +1 -1
- package/dist/cjs/MessageStorage.js +59 -21
- package/dist/cjs/MessageStorage.js.map +1 -1
- package/dist/cjs/Reply.js +15 -0
- package/dist/cjs/Reply.js.map +1 -1
- package/dist/cjs/Runners.js +2 -2
- package/dist/cjs/Runners.js.map +1 -1
- package/dist/cjs/Sharding.js +23 -8
- package/dist/cjs/Sharding.js.map +1 -1
- package/dist/cjs/Snowflake.js +2 -2
- package/dist/cjs/Snowflake.js.map +1 -1
- package/dist/cjs/SqlMessageStorage.js +36 -12
- package/dist/cjs/SqlMessageStorage.js.map +1 -1
- package/dist/cjs/SqlShardStorage.js +6 -6
- package/dist/cjs/SqlShardStorage.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/internal/entityManager.js +4 -4
- package/dist/cjs/internal/entityManager.js.map +1 -1
- package/dist/dts/ClusterSchema.d.ts +7 -0
- package/dist/dts/ClusterSchema.d.ts.map +1 -1
- package/dist/dts/ClusterWorkflowEngine.d.ts +48 -0
- package/dist/dts/ClusterWorkflowEngine.d.ts.map +1 -0
- package/dist/dts/Envelope.d.ts +9 -0
- package/dist/dts/Envelope.d.ts.map +1 -1
- package/dist/dts/Message.d.ts +11 -1
- package/dist/dts/Message.d.ts.map +1 -1
- package/dist/dts/MessageStorage.d.ts +56 -0
- package/dist/dts/MessageStorage.d.ts.map +1 -1
- package/dist/dts/Reply.d.ts +7 -0
- package/dist/dts/Reply.d.ts.map +1 -1
- package/dist/dts/ShardStorage.d.ts +1 -1
- package/dist/dts/Sharding.d.ts +9 -0
- package/dist/dts/Sharding.d.ts.map +1 -1
- package/dist/dts/SqlMessageStorage.d.ts +10 -1
- package/dist/dts/SqlMessageStorage.d.ts.map +1 -1
- package/dist/dts/SqlShardStorage.d.ts +1 -1
- package/dist/dts/index.d.ts +4 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/resourceMap.d.ts +1 -1
- package/dist/dts/internal/resourceMap.d.ts.map +1 -1
- package/dist/dts/internal/resourceRef.d.ts +1 -1
- package/dist/dts/internal/resourceRef.d.ts.map +1 -1
- package/dist/esm/ClusterSchema.js +7 -0
- package/dist/esm/ClusterSchema.js.map +1 -1
- package/dist/esm/ClusterWorkflowEngine.js +378 -0
- package/dist/esm/ClusterWorkflowEngine.js.map +1 -0
- package/dist/esm/Envelope.js +12 -3
- package/dist/esm/Envelope.js.map +1 -1
- package/dist/esm/Message.js +20 -1
- package/dist/esm/Message.js.map +1 -1
- package/dist/esm/MessageStorage.js +59 -21
- package/dist/esm/MessageStorage.js.map +1 -1
- package/dist/esm/Reply.js +15 -0
- package/dist/esm/Reply.js.map +1 -1
- package/dist/esm/Runners.js +2 -2
- package/dist/esm/Runners.js.map +1 -1
- package/dist/esm/Sharding.js +24 -9
- package/dist/esm/Sharding.js.map +1 -1
- package/dist/esm/Snowflake.js +2 -2
- package/dist/esm/Snowflake.js.map +1 -1
- package/dist/esm/SqlMessageStorage.js +36 -12
- package/dist/esm/SqlMessageStorage.js.map +1 -1
- package/dist/esm/SqlShardStorage.js +6 -6
- package/dist/esm/SqlShardStorage.js.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/entityManager.js +5 -5
- package/dist/esm/internal/entityManager.js.map +1 -1
- package/package.json +14 -5
- package/src/ClusterSchema.ts +10 -0
- package/src/ClusterWorkflowEngine.ts +475 -0
- package/src/Envelope.ts +17 -3
- package/src/Message.ts +24 -2
- package/src/MessageStorage.ts +122 -22
- package/src/Reply.ts +18 -0
- package/src/Runners.ts +2 -2
- package/src/Sharding.ts +45 -9
- package/src/Snowflake.ts +2 -2
- package/src/SqlMessageStorage.ts +74 -16
- package/src/SqlShardStorage.ts +6 -6
- package/src/index.ts +5 -0
- package/src/internal/entityManager.ts +6 -4
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"entityManager.js","names":["RequestId","RpcServer","Arr","Cause","Context","Duration","Effect","Exit","FiberRef","identity","HashMap","Metric","Option","Schedule","Schema","Scope","AlreadyProcessingMessage","EntityNotAssignedToRunner","MailboxFull","MalformedMessage","ClusterMetrics","Persisted","CurrentAddress","CurrentRunnerAddress","Request","Envelope","Message","MessageStorage","Reply","ShardingConfig","Snowflake","EntityReaper","internalInterruptors","ResourceMap","ResourceRef","make","fnUntraced","entity","buildHandlers","options","config","snowflakeGen","Generator","managerScope","scope","storageEnabled","storage","noop","mailboxCapacity","entityMailboxCapacity","clock","context","activeServers","Map","entities","address","sharding","isShutdown","endLatch","makeLatch","addFinalizer","ignore","resetAddress","activeRequests","defectRequestIds","writeRef","from","isShuttingDown","handlers","protocol","toHandlersContext","pipe","provide","add","runnerAddress","locally","currentLogAnnotations","empty","server","makeNoSerialization","spanPrefix","type","entityId","concurrency","onFromServer","response","_tag","request","get","requestId","void","sentReply","rpc","annotations","isInterrupted","exit","retryRespond","suspend","message","respond","WithExit","id","unsafeNext","flatMap","delete","size","state","lastActiveCheck","unsafeCurrentTimeMillis","orDie","sequence","reply","Chunk","values","lastSentChunk","some","effect","unsafeRebuild","Array","keys","logError","die","defect","andThen","tapErrorCause","retry","spaced","annotateLogs","module","runner","open","extend","sync","write","envelope","tag","payload","mailboxGauge","mailboxSize","tagged","clientId","current","await","value","withFiberRuntime","fiber","interruptible","timeoutOption","entityTerminationTimeout","set","reaper","maxIdleTime","toMillis","entityMaxIdleTime","Number","isFinite","register","servers","gauge","unsafeUpdate","BigInt","sleep","forever","forkIn","sendLocal","entry","fail","envelopeId","requests","dieMessage","lastSentReply","match","onNone","onSome","isSome","replyId","interruptors","interruptShard","shardId","loop","toInterrupt","Set","forEach","removeIgnore","discard","decodeMessage","decode","makeMessageSchema","isProcessingFor","undefined","excludeReplies","send","matchEffect","onFailure","cause","ReplyWithContext","onSuccess","decoded","IncomingEnvelope","IncomingRequestLocal","activeEntityCount","push","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","Exit","FiberRef","identity","HashMap","Metric","Option","Schedule","Schema","Scope","AlreadyProcessingMessage","EntityNotAssignedToRunner","MailboxFull","MalformedMessage","ClusterMetrics","Persisted","Uninterruptible","CurrentAddress","CurrentRunnerAddress","Request","Envelope","Message","MessageStorage","Reply","ShardingConfig","Snowflake","EntityReaper","internalInterruptors","ResourceMap","ResourceRef","make","fnUntraced","entity","buildHandlers","options","config","snowflakeGen","Generator","managerScope","scope","storageEnabled","storage","noop","mailboxCapacity","entityMailboxCapacity","clock","context","activeServers","Map","entities","address","sharding","isShutdown","endLatch","makeLatch","addFinalizer","ignore","resetAddress","activeRequests","defectRequestIds","writeRef","from","isShuttingDown","handlers","protocol","toHandlersContext","pipe","provide","add","runnerAddress","locally","currentLogAnnotations","empty","server","makeNoSerialization","spanPrefix","type","entityId","concurrency","onFromServer","response","_tag","request","get","requestId","void","sentReply","rpc","annotations","isInterrupted","exit","retryRespond","suspend","message","respond","WithExit","id","unsafeNext","flatMap","delete","size","state","lastActiveCheck","unsafeCurrentTimeMillis","orDie","sequence","reply","Chunk","values","lastSentChunk","some","effect","unsafeRebuild","Array","keys","logError","die","defect","andThen","tapErrorCause","retry","spaced","annotateLogs","module","runner","open","extend","sync","write","envelope","tag","payload","mailboxGauge","mailboxSize","tagged","clientId","current","await","value","withFiberRuntime","fiber","interruptible","timeoutOption","entityTerminationTimeout","set","reaper","maxIdleTime","toMillis","entityMaxIdleTime","Number","isFinite","register","servers","gauge","unsafeUpdate","BigInt","sleep","forever","forkIn","sendLocal","entry","fail","envelopeId","requests","dieMessage","lastSentReply","match","onNone","onSome","isSome","replyId","interruptors","interruptShard","shardId","loop","toInterrupt","Set","forEach","removeIgnore","discard","decodeMessage","decode","makeMessageSchema","isProcessingFor","undefined","excludeReplies","send","matchEffect","onFailure","cause","ReplyWithContext","onSuccess","decoded","IncomingEnvelope","IncomingRequestLocal","activeEntityCount","push","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":[]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@effect/cluster",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.37.0",
|
4
4
|
"description": "Unified interfaces for common cluster-specific services",
|
5
5
|
"license": "MIT",
|
6
6
|
"repository": {
|
@@ -11,10 +11,11 @@
|
|
11
11
|
"sideEffects": [],
|
12
12
|
"homepage": "https://effect.website",
|
13
13
|
"peerDependencies": {
|
14
|
-
"@effect/platform": "^0.84.
|
15
|
-
"@effect/rpc": "^0.61.
|
16
|
-
"@effect/sql": "^0.37.
|
17
|
-
"effect": "^
|
14
|
+
"@effect/platform": "^0.84.4",
|
15
|
+
"@effect/rpc": "^0.61.4",
|
16
|
+
"@effect/sql": "^0.37.4",
|
17
|
+
"@effect/workflow": "^0.1.0",
|
18
|
+
"effect": "^3.16.3"
|
18
19
|
},
|
19
20
|
"publishConfig": {
|
20
21
|
"provenance": true
|
@@ -44,6 +45,11 @@
|
|
44
45
|
"import": "./dist/esm/ClusterSchema.js",
|
45
46
|
"default": "./dist/cjs/ClusterSchema.js"
|
46
47
|
},
|
48
|
+
"./ClusterWorkflowEngine": {
|
49
|
+
"types": "./dist/dts/ClusterWorkflowEngine.d.ts",
|
50
|
+
"import": "./dist/esm/ClusterWorkflowEngine.js",
|
51
|
+
"default": "./dist/cjs/ClusterWorkflowEngine.js"
|
52
|
+
},
|
47
53
|
"./DeliverAt": {
|
48
54
|
"types": "./dist/dts/DeliverAt.d.ts",
|
49
55
|
"import": "./dist/esm/DeliverAt.js",
|
@@ -221,6 +227,9 @@
|
|
221
227
|
"ClusterSchema": [
|
222
228
|
"./dist/dts/ClusterSchema.d.ts"
|
223
229
|
],
|
230
|
+
"ClusterWorkflowEngine": [
|
231
|
+
"./dist/dts/ClusterWorkflowEngine.d.ts"
|
232
|
+
],
|
224
233
|
"DeliverAt": [
|
225
234
|
"./dist/dts/DeliverAt.d.ts"
|
226
235
|
],
|
package/src/ClusterSchema.ts
CHANGED
@@ -11,3 +11,13 @@ import { constFalse } from "effect/Function"
|
|
11
11
|
export class Persisted extends Context.Reference<Persisted>()("@effect/cluster/ClusterSchema/Persisted", {
|
12
12
|
defaultValue: constFalse
|
13
13
|
}) {}
|
14
|
+
|
15
|
+
/**
|
16
|
+
* @since 1.0.0
|
17
|
+
* @category Annotations
|
18
|
+
*/
|
19
|
+
export class Uninterruptible
|
20
|
+
extends Context.Reference<Uninterruptible>()("@effect/cluster/ClusterSchema/Uninterruptible", {
|
21
|
+
defaultValue: constFalse
|
22
|
+
})
|
23
|
+
{}
|
@@ -0,0 +1,475 @@
|
|
1
|
+
/**
|
2
|
+
* @since 1.0.0
|
3
|
+
*/
|
4
|
+
import * as Rpc from "@effect/rpc/Rpc"
|
5
|
+
import * as Activity from "@effect/workflow/Activity"
|
6
|
+
import * as DurableClock from "@effect/workflow/DurableClock"
|
7
|
+
import * as Workflow from "@effect/workflow/Workflow"
|
8
|
+
import { WorkflowEngine, WorkflowInstance } from "@effect/workflow/WorkflowEngine"
|
9
|
+
import * as Arr from "effect/Array"
|
10
|
+
import * as Context from "effect/Context"
|
11
|
+
import * as DateTime from "effect/DateTime"
|
12
|
+
import * as Duration from "effect/Duration"
|
13
|
+
import * as Effect from "effect/Effect"
|
14
|
+
import * as Layer from "effect/Layer"
|
15
|
+
import * as Option from "effect/Option"
|
16
|
+
import * as PrimaryKey from "effect/PrimaryKey"
|
17
|
+
import * as RcMap from "effect/RcMap"
|
18
|
+
import * as Schedule from "effect/Schedule"
|
19
|
+
import * as Schema from "effect/Schema"
|
20
|
+
import * as ClusterSchema from "./ClusterSchema.js"
|
21
|
+
import * as DeliverAt from "./DeliverAt.js"
|
22
|
+
import * as Entity from "./Entity.js"
|
23
|
+
import { EntityAddress } from "./EntityAddress.js"
|
24
|
+
import { EntityId } from "./EntityId.js"
|
25
|
+
import { EntityType } from "./EntityType.js"
|
26
|
+
import * as Message from "./Message.js"
|
27
|
+
import { MessageStorage } from "./MessageStorage.js"
|
28
|
+
import * as Reply from "./Reply.js"
|
29
|
+
import type { WithExitEncoded } from "./Reply.js"
|
30
|
+
import * as Sharding from "./Sharding.js"
|
31
|
+
import * as Snowflake from "./Snowflake.js"
|
32
|
+
|
33
|
+
/**
|
34
|
+
* @since 1.0.0
|
35
|
+
* @category Constructors
|
36
|
+
*/
|
37
|
+
export const make = Effect.gen(function*() {
|
38
|
+
const sharding = yield* Sharding.Sharding
|
39
|
+
const storage = yield* MessageStorage
|
40
|
+
const snowflakeGen = yield* Snowflake.Generator
|
41
|
+
|
42
|
+
const entities = new Map<
|
43
|
+
string,
|
44
|
+
Entity.Entity<
|
45
|
+
| Rpc.Rpc<"run", Schema.Struct<{}>, Schema.Schema<Workflow.Result<any, any>>>
|
46
|
+
| Rpc.Rpc<
|
47
|
+
"activity",
|
48
|
+
Schema.Struct<{ name: typeof Schema.String; attempt: typeof Schema.Number }>,
|
49
|
+
Schema.Schema<Workflow.Result<any, any>>
|
50
|
+
>
|
51
|
+
>
|
52
|
+
>()
|
53
|
+
const activities = new Map<string, {
|
54
|
+
readonly activity: Activity.Any
|
55
|
+
readonly context: Context.Context<any>
|
56
|
+
}>()
|
57
|
+
const activityLatches = new Map<string, Effect.Latch>()
|
58
|
+
const clients = yield* RcMap.make({
|
59
|
+
lookup: Effect.fnUntraced(function*(workflowName: string) {
|
60
|
+
const entity = entities.get(workflowName)
|
61
|
+
if (!entity) {
|
62
|
+
return yield* Effect.dieMessage(`Workflow ${workflowName} not registered`)
|
63
|
+
}
|
64
|
+
return yield* entity.client
|
65
|
+
}),
|
66
|
+
idleTimeToLive: "5 minutes"
|
67
|
+
})
|
68
|
+
const clockClient = yield* ClockEntity.client
|
69
|
+
const deferredClient = yield* DeferredEntity.client
|
70
|
+
|
71
|
+
const requestIdFor = Effect.fnUntraced(function*(options: {
|
72
|
+
readonly entityType: string
|
73
|
+
readonly executionId: string
|
74
|
+
readonly tag: string
|
75
|
+
readonly id: string
|
76
|
+
}) {
|
77
|
+
const entityId = EntityId.make(options.executionId)
|
78
|
+
const address = new EntityAddress({
|
79
|
+
entityType: EntityType.make(options.entityType),
|
80
|
+
entityId,
|
81
|
+
shardId: sharding.getShardId(entityId)
|
82
|
+
})
|
83
|
+
return yield* storage.requestIdForPrimaryKey({ address, tag: options.tag, id: options.id })
|
84
|
+
})
|
85
|
+
|
86
|
+
const replyForRequestId = Effect.fnUntraced(function*(requestId: Snowflake.Snowflake) {
|
87
|
+
const replies = yield* storage.repliesForUnfiltered([requestId])
|
88
|
+
return Arr.last(replies).pipe(
|
89
|
+
Option.filter((reply) => reply._tag === "WithExit"),
|
90
|
+
Option.map((reply) =>
|
91
|
+
reply as WithExitEncoded<Rpc.Rpc<string, Schema.Struct<{}>, Schema.Schema<Workflow.Result<any, any>>>>
|
92
|
+
)
|
93
|
+
)
|
94
|
+
})
|
95
|
+
|
96
|
+
const requestReply = Effect.fnUntraced(function*(options: {
|
97
|
+
readonly entityType: string
|
98
|
+
readonly executionId: string
|
99
|
+
readonly tag: string
|
100
|
+
readonly id: string
|
101
|
+
}) {
|
102
|
+
const requestId = yield* requestIdFor(options)
|
103
|
+
if (Option.isNone(requestId)) {
|
104
|
+
return Option.none()
|
105
|
+
}
|
106
|
+
return yield* replyForRequestId(requestId.value)
|
107
|
+
})
|
108
|
+
|
109
|
+
const resetActivityAttempt = Effect.fnUntraced(
|
110
|
+
function*(options: {
|
111
|
+
readonly workflow: Workflow.Any
|
112
|
+
readonly executionId: string
|
113
|
+
readonly activity: Activity.Any
|
114
|
+
readonly attempt: number
|
115
|
+
}) {
|
116
|
+
const requestId = yield* requestIdFor({
|
117
|
+
entityType: `Workflow/${options.workflow.name}`,
|
118
|
+
executionId: options.executionId,
|
119
|
+
tag: "activity",
|
120
|
+
id: activityPrimaryKey(options.activity.name, options.attempt)
|
121
|
+
})
|
122
|
+
if (Option.isNone(requestId)) return
|
123
|
+
yield* sharding.reset(requestId.value)
|
124
|
+
},
|
125
|
+
Effect.retry({
|
126
|
+
times: 3,
|
127
|
+
schedule: Schedule.exponential(250)
|
128
|
+
}),
|
129
|
+
Effect.orDie
|
130
|
+
)
|
131
|
+
|
132
|
+
return WorkflowEngine.of({
|
133
|
+
register: (workflow, execute) =>
|
134
|
+
Effect.suspend(() => {
|
135
|
+
if (entities.has(workflow.name)) {
|
136
|
+
return Effect.dieMessage(`Workflow ${workflow.name} already registered`)
|
137
|
+
}
|
138
|
+
const entity = makeWorkflowEntity(workflow)
|
139
|
+
entities.set(workflow.name, entity as any)
|
140
|
+
return sharding.registerEntity(
|
141
|
+
entity,
|
142
|
+
Effect.gen(function*() {
|
143
|
+
const address = yield* Entity.CurrentAddress
|
144
|
+
const executionId = address.entityId
|
145
|
+
return {
|
146
|
+
run: (request: Entity.Request<any>) =>
|
147
|
+
execute(request.payload, executionId).pipe(
|
148
|
+
Workflow.intoResult,
|
149
|
+
Effect.provideService(
|
150
|
+
WorkflowInstance,
|
151
|
+
WorkflowInstance.of({
|
152
|
+
workflow,
|
153
|
+
executionId,
|
154
|
+
suspended: false
|
155
|
+
})
|
156
|
+
)
|
157
|
+
) as any,
|
158
|
+
activity: Effect.fnUntraced(function*(request: Entity.Request<any>) {
|
159
|
+
const activityId = `${executionId}/${request.payload.name}`
|
160
|
+
let entry = activities.get(activityId)
|
161
|
+
while (!entry) {
|
162
|
+
const latch = Effect.unsafeMakeLatch()
|
163
|
+
activityLatches.set(activityId, latch)
|
164
|
+
yield* latch.await
|
165
|
+
entry = activities.get(activityId)
|
166
|
+
}
|
167
|
+
const contextMap = new Map(entry.context.unsafeMap)
|
168
|
+
contextMap.set(Activity.CurrentAttempt.key, request.payload.attempt)
|
169
|
+
contextMap.set(
|
170
|
+
WorkflowInstance.key,
|
171
|
+
WorkflowInstance.of({
|
172
|
+
workflow,
|
173
|
+
executionId,
|
174
|
+
suspended: false
|
175
|
+
})
|
176
|
+
)
|
177
|
+
return yield* entry.activity.executeEncoded.pipe(
|
178
|
+
Workflow.intoResult,
|
179
|
+
Effect.provide(Context.unsafeMake(contextMap)),
|
180
|
+
Effect.ensuring(Effect.sync(() => {
|
181
|
+
activities.delete(activityId)
|
182
|
+
}))
|
183
|
+
)
|
184
|
+
}, Rpc.fork)
|
185
|
+
}
|
186
|
+
})
|
187
|
+
) as Effect.Effect<void>
|
188
|
+
}),
|
189
|
+
|
190
|
+
execute: ({ discard, executionId, payload, workflow }) =>
|
191
|
+
RcMap.get(clients, workflow.name).pipe(
|
192
|
+
Effect.flatMap((make) => make(executionId).run(payload, { discard })),
|
193
|
+
Effect.orDie,
|
194
|
+
Effect.scoped
|
195
|
+
),
|
196
|
+
|
197
|
+
interrupt: Effect.fnUntraced(
|
198
|
+
function*(workflow, executionId) {
|
199
|
+
const requestId = yield* requestIdFor({
|
200
|
+
entityType: `Workflow/${workflow.name}`,
|
201
|
+
executionId,
|
202
|
+
tag: "run",
|
203
|
+
id: ""
|
204
|
+
})
|
205
|
+
if (Option.isNone(requestId)) {
|
206
|
+
return
|
207
|
+
}
|
208
|
+
const reply = yield* replyForRequestId(requestId.value)
|
209
|
+
const nonSuspendedReply = reply.pipe(
|
210
|
+
Option.filter((reply) => reply.exit._tag !== "Success" || reply.exit.value._tag !== "Suspended")
|
211
|
+
)
|
212
|
+
if (Option.isSome(nonSuspendedReply)) {
|
213
|
+
return
|
214
|
+
}
|
215
|
+
|
216
|
+
const entityId = EntityId.make(executionId)
|
217
|
+
const shardId = sharding.getShardId(entityId)
|
218
|
+
const workflowAddress = new EntityAddress({
|
219
|
+
entityType: EntityType.make(`Workflow/${workflow.name}`),
|
220
|
+
entityId,
|
221
|
+
shardId
|
222
|
+
})
|
223
|
+
const deferredAddress = new EntityAddress({
|
224
|
+
entityType: DeferredEntity.type,
|
225
|
+
entityId,
|
226
|
+
shardId
|
227
|
+
})
|
228
|
+
const clockAddress = new EntityAddress({
|
229
|
+
entityType: ClockEntity.type,
|
230
|
+
entityId,
|
231
|
+
shardId
|
232
|
+
})
|
233
|
+
if (Option.isNone(reply)) {
|
234
|
+
yield* sharding.sendOutgoing(
|
235
|
+
Message.OutgoingEnvelope.interrupt({
|
236
|
+
address: workflowAddress,
|
237
|
+
id: snowflakeGen.unsafeNext(),
|
238
|
+
requestId: requestId.value
|
239
|
+
}),
|
240
|
+
true
|
241
|
+
)
|
242
|
+
} else {
|
243
|
+
yield* sharding.reset(requestId.value)
|
244
|
+
}
|
245
|
+
yield* storage.saveReply(Reply.ReplyWithContext.interrupt({
|
246
|
+
id: snowflakeGen.unsafeNext(),
|
247
|
+
requestId: requestId.value
|
248
|
+
}))
|
249
|
+
yield* storage.clearAddress(deferredAddress)
|
250
|
+
yield* storage.clearAddress(clockAddress)
|
251
|
+
},
|
252
|
+
Effect.retry({
|
253
|
+
while: (e) => e._tag === "PersistenceError",
|
254
|
+
times: 3,
|
255
|
+
schedule: Schedule.exponential(250)
|
256
|
+
}),
|
257
|
+
Effect.orDie
|
258
|
+
),
|
259
|
+
|
260
|
+
resume: Effect.fnUntraced(
|
261
|
+
function*(workflowName: string, executionId: string) {
|
262
|
+
const maybeReply = yield* requestReply({
|
263
|
+
entityType: `Workflow/${workflowName}`,
|
264
|
+
executionId,
|
265
|
+
tag: "run",
|
266
|
+
id: ""
|
267
|
+
})
|
268
|
+
const maybeSuspended = Option.filter(
|
269
|
+
maybeReply,
|
270
|
+
(reply) => reply.exit._tag === "Success" && reply.exit.value._tag === "Suspended"
|
271
|
+
)
|
272
|
+
if (Option.isNone(maybeSuspended)) return
|
273
|
+
yield* sharding.reset(Snowflake.Snowflake(maybeSuspended.value.requestId))
|
274
|
+
},
|
275
|
+
Effect.retry({
|
276
|
+
while: (e) => e._tag === "PersistenceError",
|
277
|
+
times: 3,
|
278
|
+
schedule: Schedule.exponential(250)
|
279
|
+
}),
|
280
|
+
Effect.orDie
|
281
|
+
),
|
282
|
+
|
283
|
+
activityExecute: Effect.fnUntraced(function*({ activity, attempt }) {
|
284
|
+
const context = yield* Effect.context<WorkflowInstance>()
|
285
|
+
const instance = Context.get(context, WorkflowInstance)
|
286
|
+
const activityId = `${instance.executionId}/${activity.name}`
|
287
|
+
activities.set(activityId, { activity, context })
|
288
|
+
const latch = activityLatches.get(activityId)
|
289
|
+
if (latch) {
|
290
|
+
yield* latch.release
|
291
|
+
activityLatches.delete(activityId)
|
292
|
+
}
|
293
|
+
const client = (yield* RcMap.get(clients, instance.workflow.name))(instance.executionId)
|
294
|
+
while (true) {
|
295
|
+
const result = yield* Effect.orDie(client.activity({ name: activity.name, attempt }))
|
296
|
+
// If the activity has suspended and did not execute, we need to resume
|
297
|
+
// it by resetting the attempt and re-executing.
|
298
|
+
if (result._tag === "Suspended" && activities.has(activityId)) {
|
299
|
+
yield* resetActivityAttempt({
|
300
|
+
workflow: instance.workflow,
|
301
|
+
executionId: instance.executionId,
|
302
|
+
activity,
|
303
|
+
attempt
|
304
|
+
})
|
305
|
+
continue
|
306
|
+
}
|
307
|
+
activities.delete(activityId)
|
308
|
+
return result
|
309
|
+
}
|
310
|
+
}, Effect.scoped),
|
311
|
+
|
312
|
+
deferredResult: (deferred) =>
|
313
|
+
WorkflowInstance.pipe(
|
314
|
+
Effect.flatMap((instance) =>
|
315
|
+
requestReply({
|
316
|
+
entityType: DeferredEntity.type,
|
317
|
+
executionId: instance.executionId,
|
318
|
+
tag: "set",
|
319
|
+
id: deferred.name
|
320
|
+
})
|
321
|
+
),
|
322
|
+
Effect.map(Option.map((reply) => reply.exit)),
|
323
|
+
Effect.retry({
|
324
|
+
while: (e) => e._tag === "PersistenceError",
|
325
|
+
times: 3,
|
326
|
+
schedule: Schedule.exponential(250)
|
327
|
+
}),
|
328
|
+
Effect.orDie
|
329
|
+
),
|
330
|
+
|
331
|
+
deferredDone({ deferred, executionId, exit, workflowName }) {
|
332
|
+
const client = deferredClient(executionId)
|
333
|
+
return Effect.orDie(client.set({
|
334
|
+
workflowName,
|
335
|
+
name: deferred.name,
|
336
|
+
exit
|
337
|
+
}))
|
338
|
+
},
|
339
|
+
|
340
|
+
scheduleClock(options) {
|
341
|
+
const client = clockClient(options.executionId)
|
342
|
+
return DateTime.now.pipe(
|
343
|
+
Effect.flatMap((now) =>
|
344
|
+
client.run({
|
345
|
+
name: options.clock.name,
|
346
|
+
workflowName: options.workflow.name,
|
347
|
+
wakeUp: DateTime.addDuration(now, options.clock.duration)
|
348
|
+
}, { discard: true })
|
349
|
+
),
|
350
|
+
Effect.orDie
|
351
|
+
)
|
352
|
+
}
|
353
|
+
})
|
354
|
+
})
|
355
|
+
|
356
|
+
const ActivityRpc = Rpc.make("activity", {
|
357
|
+
payload: {
|
358
|
+
name: Schema.String,
|
359
|
+
attempt: Schema.Number
|
360
|
+
},
|
361
|
+
primaryKey: ({ attempt, name }) => activityPrimaryKey(name, attempt),
|
362
|
+
success: Workflow.Result({
|
363
|
+
success: Schema.Unknown,
|
364
|
+
error: Schema.Unknown
|
365
|
+
})
|
366
|
+
})
|
367
|
+
|
368
|
+
const makeWorkflowEntity = (workflow: Workflow.Any) =>
|
369
|
+
Entity.make(`Workflow/${workflow.name}`, [
|
370
|
+
Rpc.make("run", {
|
371
|
+
payload: workflow.payloadSchema.fields,
|
372
|
+
primaryKey: () => "",
|
373
|
+
success: Workflow.Result({
|
374
|
+
success: workflow.successSchema,
|
375
|
+
error: workflow.errorSchema
|
376
|
+
})
|
377
|
+
}),
|
378
|
+
ActivityRpc
|
379
|
+
])
|
380
|
+
.annotateRpcs(ClusterSchema.Persisted, true)
|
381
|
+
.annotateRpcs(ClusterSchema.Uninterruptible, true)
|
382
|
+
|
383
|
+
const activityPrimaryKey = (activity: string, attempt: number) => `${activity}/${attempt}`
|
384
|
+
|
385
|
+
const ExitUnknown = Schema.encodedSchema(Schema.Exit({
|
386
|
+
success: Schema.Unknown,
|
387
|
+
failure: Schema.Unknown,
|
388
|
+
defect: Schema.Defect
|
389
|
+
}))
|
390
|
+
|
391
|
+
const DeferredEntity = Entity.make("Workflow/-/DurableDeferred", [
|
392
|
+
Rpc.make("set", {
|
393
|
+
payload: {
|
394
|
+
workflowName: Schema.String,
|
395
|
+
name: Schema.String,
|
396
|
+
exit: ExitUnknown
|
397
|
+
},
|
398
|
+
primaryKey: ({ name }) => name,
|
399
|
+
success: ExitUnknown
|
400
|
+
}),
|
401
|
+
Rpc.make("resume", {
|
402
|
+
payload: {
|
403
|
+
workflowName: Schema.String,
|
404
|
+
name: Schema.String
|
405
|
+
},
|
406
|
+
primaryKey: ({ name }) => name
|
407
|
+
})
|
408
|
+
])
|
409
|
+
.annotateRpcs(ClusterSchema.Persisted, true)
|
410
|
+
.annotateRpcs(ClusterSchema.Uninterruptible, true)
|
411
|
+
|
412
|
+
const DeferredEntityLayer = DeferredEntity.toLayer(Effect.gen(function*() {
|
413
|
+
const engine = yield* WorkflowEngine
|
414
|
+
const address = yield* Entity.CurrentAddress
|
415
|
+
const executionId = address.entityId
|
416
|
+
const client = (yield* DeferredEntity.client)(executionId)
|
417
|
+
return {
|
418
|
+
set: (request) =>
|
419
|
+
Effect.as(
|
420
|
+
Effect.orDie(client.resume(request.payload, { discard: true })),
|
421
|
+
request.payload.exit
|
422
|
+
),
|
423
|
+
resume: (request) => engine.resume(request.payload.workflowName, executionId)
|
424
|
+
}
|
425
|
+
}))
|
426
|
+
|
427
|
+
class ClockPayload extends Schema.Class<ClockPayload>(`Workflow/DurableClock/Run`)({
|
428
|
+
name: Schema.String,
|
429
|
+
workflowName: Schema.String,
|
430
|
+
wakeUp: Schema.DateTimeUtcFromNumber
|
431
|
+
}) {
|
432
|
+
[PrimaryKey.symbol]() {
|
433
|
+
return this.name
|
434
|
+
}
|
435
|
+
[DeliverAt.symbol]() {
|
436
|
+
return this.wakeUp
|
437
|
+
}
|
438
|
+
}
|
439
|
+
|
440
|
+
const ClockEntity = Entity.make("Workflow/-/DurableClock", [
|
441
|
+
Rpc.make("run", { payload: ClockPayload })
|
442
|
+
.annotate(ClusterSchema.Persisted, true)
|
443
|
+
.annotate(ClusterSchema.Uninterruptible, true)
|
444
|
+
])
|
445
|
+
|
446
|
+
const ClockEntityLayer = ClockEntity.toLayer(Effect.gen(function*() {
|
447
|
+
const engine = yield* WorkflowEngine
|
448
|
+
const address = yield* Entity.CurrentAddress
|
449
|
+
const executionId = address.entityId
|
450
|
+
return {
|
451
|
+
run(request) {
|
452
|
+
const deferred = DurableClock.make({ name: request.payload.name, duration: Duration.zero }).deferred
|
453
|
+
return engine.deferredDone({
|
454
|
+
workflowName: request.payload.workflowName,
|
455
|
+
executionId,
|
456
|
+
deferred,
|
457
|
+
exit: { _tag: "Success", value: void 0 }
|
458
|
+
})
|
459
|
+
}
|
460
|
+
}
|
461
|
+
}))
|
462
|
+
|
463
|
+
/**
|
464
|
+
* @since 1.0.0
|
465
|
+
* @category Layers
|
466
|
+
*/
|
467
|
+
export const layer: Layer.Layer<
|
468
|
+
WorkflowEngine,
|
469
|
+
never,
|
470
|
+
Sharding.Sharding | MessageStorage
|
471
|
+
> = DeferredEntityLayer.pipe(
|
472
|
+
Layer.merge(ClockEntityLayer),
|
473
|
+
Layer.provideMerge(Layer.scoped(WorkflowEngine, make)),
|
474
|
+
Layer.provide(Snowflake.layerGenerator)
|
475
|
+
)
|
package/src/Envelope.ts
CHANGED
@@ -346,7 +346,21 @@ export const primaryKey = <R extends Rpc.Any>(envelope: Envelope<R>): string | n
|
|
346
346
|
if (envelope._tag !== "Request" || !(Predicate.hasProperty(envelope.payload, PrimaryKey.symbol))) {
|
347
347
|
return null
|
348
348
|
}
|
349
|
-
|
350
|
-
|
351
|
-
|
349
|
+
return primaryKeyByAddress({
|
350
|
+
address: envelope.address,
|
351
|
+
tag: envelope.tag,
|
352
|
+
id: PrimaryKey.value(envelope.payload)
|
353
|
+
})
|
352
354
|
}
|
355
|
+
|
356
|
+
/**
|
357
|
+
* @since 1.0.0
|
358
|
+
* @category primary key
|
359
|
+
*/
|
360
|
+
export const primaryKeyByAddress = (options: {
|
361
|
+
readonly address: EntityAddress
|
362
|
+
readonly tag: string
|
363
|
+
readonly id: string
|
364
|
+
}): string =>
|
365
|
+
// hash the entity address to save space?
|
366
|
+
`${options.address.entityType}/${options.address.entityId}/${options.tag}/${options.id}`
|