@effect/cluster 0.37.1 → 0.38.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/ClusterCron/package.json +6 -0
- package/dist/cjs/ClusterCron.js +86 -0
- package/dist/cjs/ClusterCron.js.map +1 -0
- package/dist/cjs/ClusterSchema.js +9 -1
- package/dist/cjs/ClusterSchema.js.map +1 -1
- package/dist/cjs/ClusterWorkflowEngine.js +99 -78
- package/dist/cjs/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cjs/Entity.js +6 -1
- package/dist/cjs/Entity.js.map +1 -1
- package/dist/cjs/EntityAddress.js +8 -1
- package/dist/cjs/EntityAddress.js.map +1 -1
- package/dist/cjs/MessageStorage.js +6 -4
- package/dist/cjs/MessageStorage.js.map +1 -1
- package/dist/cjs/Runner.js +15 -0
- package/dist/cjs/Runner.js.map +1 -1
- package/dist/cjs/RunnerAddress.js +8 -1
- package/dist/cjs/RunnerAddress.js.map +1 -1
- package/dist/cjs/Runners.js +5 -0
- package/dist/cjs/Runners.js.map +1 -1
- package/dist/cjs/ShardId.js +75 -7
- package/dist/cjs/ShardId.js.map +1 -1
- package/dist/cjs/ShardManager.js +63 -43
- package/dist/cjs/ShardManager.js.map +1 -1
- package/dist/cjs/ShardStorage.js +45 -36
- package/dist/cjs/ShardStorage.js.map +1 -1
- package/dist/cjs/Sharding.js +45 -37
- package/dist/cjs/Sharding.js.map +1 -1
- package/dist/cjs/ShardingConfig.js +9 -2
- package/dist/cjs/ShardingConfig.js.map +1 -1
- package/dist/cjs/Singleton.js +2 -2
- package/dist/cjs/Singleton.js.map +1 -1
- package/dist/cjs/SingletonAddress.js +2 -2
- package/dist/cjs/SingletonAddress.js.map +1 -1
- package/dist/cjs/SqlMessageStorage.js +32 -27
- package/dist/cjs/SqlMessageStorage.js.map +1 -1
- package/dist/cjs/SqlShardStorage.js +14 -14
- package/dist/cjs/SqlShardStorage.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/internal/entityManager.js +2 -1
- package/dist/cjs/internal/entityManager.js.map +1 -1
- package/dist/cjs/internal/shardManager.js +138 -37
- package/dist/cjs/internal/shardManager.js.map +1 -1
- package/dist/dts/ClusterCron.d.ts +37 -0
- package/dist/dts/ClusterCron.d.ts.map +1 -0
- package/dist/dts/ClusterSchema.d.ts +8 -0
- package/dist/dts/ClusterSchema.d.ts.map +1 -1
- package/dist/dts/ClusterWorkflowEngine.d.ts +4 -4
- package/dist/dts/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/dts/Entity.d.ts +10 -0
- package/dist/dts/Entity.d.ts.map +1 -1
- package/dist/dts/EntityAddress.d.ts +9 -3
- package/dist/dts/EntityAddress.d.ts.map +1 -1
- package/dist/dts/MessageStorage.d.ts +3 -3
- package/dist/dts/MessageStorage.d.ts.map +1 -1
- package/dist/dts/Runner.d.ts +15 -0
- 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/Runners.d.ts.map +1 -1
- package/dist/dts/ShardId.d.ts +60 -6
- package/dist/dts/ShardId.d.ts.map +1 -1
- package/dist/dts/ShardManager.d.ts +13 -13
- package/dist/dts/ShardManager.d.ts.map +1 -1
- package/dist/dts/ShardStorage.d.ts +11 -14
- package/dist/dts/ShardStorage.d.ts.map +1 -1
- package/dist/dts/Sharding.d.ts +4 -2
- package/dist/dts/Sharding.d.ts.map +1 -1
- package/dist/dts/ShardingConfig.d.ts +32 -6
- package/dist/dts/ShardingConfig.d.ts.map +1 -1
- package/dist/dts/Singleton.d.ts +3 -1
- package/dist/dts/Singleton.d.ts.map +1 -1
- package/dist/dts/SingletonAddress.d.ts +4 -3
- package/dist/dts/SingletonAddress.d.ts.map +1 -1
- package/dist/dts/SqlMessageStorage.d.ts +3 -2
- 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/esm/ClusterCron.js +77 -0
- package/dist/esm/ClusterCron.js.map +1 -0
- package/dist/esm/ClusterSchema.js +7 -0
- package/dist/esm/ClusterSchema.js.map +1 -1
- package/dist/esm/ClusterWorkflowEngine.js +99 -78
- package/dist/esm/ClusterWorkflowEngine.js.map +1 -1
- package/dist/esm/Entity.js +6 -1
- package/dist/esm/Entity.js.map +1 -1
- package/dist/esm/EntityAddress.js +8 -1
- package/dist/esm/EntityAddress.js.map +1 -1
- package/dist/esm/MessageStorage.js +6 -4
- package/dist/esm/MessageStorage.js.map +1 -1
- package/dist/esm/Runner.js +15 -0
- package/dist/esm/Runner.js.map +1 -1
- package/dist/esm/RunnerAddress.js +8 -1
- package/dist/esm/RunnerAddress.js.map +1 -1
- package/dist/esm/Runners.js +5 -0
- package/dist/esm/Runners.js.map +1 -1
- package/dist/esm/ShardId.js +73 -6
- package/dist/esm/ShardId.js.map +1 -1
- package/dist/esm/ShardManager.js +64 -45
- package/dist/esm/ShardManager.js.map +1 -1
- package/dist/esm/ShardStorage.js +44 -36
- package/dist/esm/ShardStorage.js.map +1 -1
- package/dist/esm/Sharding.js +45 -37
- package/dist/esm/Sharding.js.map +1 -1
- package/dist/esm/ShardingConfig.js +9 -2
- package/dist/esm/ShardingConfig.js.map +1 -1
- package/dist/esm/Singleton.js +2 -2
- package/dist/esm/Singleton.js.map +1 -1
- package/dist/esm/SingletonAddress.js +2 -2
- package/dist/esm/SingletonAddress.js.map +1 -1
- package/dist/esm/SqlMessageStorage.js +32 -27
- package/dist/esm/SqlMessageStorage.js.map +1 -1
- package/dist/esm/SqlShardStorage.js +14 -14
- 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 +2 -1
- package/dist/esm/internal/entityManager.js.map +1 -1
- package/dist/esm/internal/shardManager.js +136 -36
- package/dist/esm/internal/shardManager.js.map +1 -1
- package/package.json +13 -5
- package/src/ClusterCron.ts +129 -0
- package/src/ClusterSchema.ts +9 -0
- package/src/ClusterWorkflowEngine.ts +93 -58
- package/src/Entity.ts +20 -1
- package/src/EntityAddress.ts +11 -1
- package/src/MessageStorage.ts +12 -7
- package/src/Runner.ts +18 -0
- package/src/RunnerAddress.ts +9 -1
- package/src/Runners.ts +5 -0
- package/src/ShardId.ts +81 -11
- package/src/ShardManager.ts +74 -45
- package/src/ShardStorage.ts +51 -47
- package/src/Sharding.ts +45 -39
- package/src/ShardingConfig.ts +36 -7
- package/src/Singleton.ts +5 -2
- package/src/SingletonAddress.ts +2 -2
- package/src/SqlMessageStorage.ts +36 -30
- package/src/SqlShardStorage.ts +15 -15
- package/src/index.ts +5 -0
- package/src/internal/entityManager.ts +2 -1
- package/src/internal/shardManager.ts +158 -52
@@ -4,6 +4,7 @@
|
|
4
4
|
import * as Equal from "effect/Equal";
|
5
5
|
import * as Hash from "effect/Hash";
|
6
6
|
import * as Schema from "effect/Schema";
|
7
|
+
import { ShardId } from "./ShardId.js";
|
7
8
|
/**
|
8
9
|
* @since 1.0.0
|
9
10
|
* @category Address
|
@@ -15,13 +16,13 @@ export declare const TypeId: unique symbol;
|
|
15
16
|
*/
|
16
17
|
export type TypeId = typeof TypeId;
|
17
18
|
declare const SingletonAddress_base: Schema.Class<SingletonAddress, {
|
18
|
-
shardId:
|
19
|
+
shardId: typeof ShardId;
|
19
20
|
name: typeof Schema.NonEmptyTrimmedString;
|
20
21
|
}, Schema.Struct.Encoded<{
|
21
|
-
shardId:
|
22
|
+
shardId: typeof ShardId;
|
22
23
|
name: typeof Schema.NonEmptyTrimmedString;
|
23
24
|
}>, never, {
|
24
|
-
readonly shardId:
|
25
|
+
readonly shardId: ShardId;
|
25
26
|
} & {
|
26
27
|
readonly name: string;
|
27
28
|
}, {}, {}>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SingletonAddress.d.ts","sourceRoot":"","sources":["../../src/SingletonAddress.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;
|
1
|
+
{"version":3,"file":"SingletonAddress.d.ts","sourceRoot":"","sources":["../../src/SingletonAddress.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,MAAuD,CAAA;AAEnF;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;;;;;;;;;;;;AAElC;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,qBAGpC;IACA;;OAEG;IACH,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAU;IAC3B;;OAEG;IACH,CAAC,IAAI,CAAC,MAAM,CAAC;IAGb;;OAEG;IACH,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO;CAGhD"}
|
@@ -10,6 +10,7 @@ import * as Option from "effect/Option";
|
|
10
10
|
import { PersistenceError } from "./ClusterError.js";
|
11
11
|
import * as MessageStorage from "./MessageStorage.js";
|
12
12
|
import type * as Reply from "./Reply.js";
|
13
|
+
import { ShardId } from "./ShardId.js";
|
13
14
|
import type { ShardingConfig } from "./ShardingConfig.js";
|
14
15
|
import * as Snowflake from "./Snowflake.js";
|
15
16
|
/**
|
@@ -31,9 +32,9 @@ export declare const make: (options?: {
|
|
31
32
|
readonly id: string;
|
32
33
|
}) => Effect.Effect<Option.Option<Snowflake.Snowflake>, PersistenceError>;
|
33
34
|
readonly registerReplyHandler: <R extends import("@effect/rpc/Rpc").Any>(message: import("./Message.js").OutgoingRequest<R> | import("./Message.js").IncomingRequest<R>) => Effect.Effect<void>;
|
34
|
-
readonly unprocessedMessages: (shardIds: Iterable<
|
35
|
+
readonly unprocessedMessages: (shardIds: Iterable<ShardId>) => Effect.Effect<Array<import("./Message.js").Incoming<any>>, PersistenceError>;
|
35
36
|
readonly unprocessedMessagesById: <R extends import("@effect/rpc/Rpc").Any>(messageIds: Iterable<Snowflake.Snowflake>) => Effect.Effect<Array<import("./Message.js").Incoming<R>>, PersistenceError>;
|
36
|
-
readonly resetShards: (shardIds: Iterable<
|
37
|
+
readonly resetShards: (shardIds: Iterable<ShardId>) => Effect.Effect<void, PersistenceError>;
|
37
38
|
readonly resetAddress: (address: import("./EntityAddress.js").EntityAddress) => Effect.Effect<void, PersistenceError>;
|
38
39
|
readonly clearAddress: (address: import("./EntityAddress.js").EntityAddress) => Effect.Effect<void, PersistenceError>;
|
39
40
|
}, SqlError, Snowflake.Generator | SqlClient.SqlClient>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SqlMessageStorage.d.ts","sourceRoot":"","sources":["../../src/SqlMessageStorage.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAA;AAElD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAI3C;;;GAGG;AACH,eAAO,MAAM,IAAI;sBACG,MAAM,GAAG,SAAS;;;;;;;;;;;;;;;;;;;
|
1
|
+
{"version":3,"file":"SqlMessageStorage.d.ts","sourceRoot":"","sources":["../../src/SqlMessageStorage.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAA;AAElD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAI3C;;;GAGG;AACH,eAAO,MAAM,IAAI;sBACG,MAAM,GAAG,SAAS;;;;;;;;;;;;;;;;;;;uDA2xBhB,CAAA;AAEtB;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAC7B,cAAc,CAAC,cAAc,EAC7B,QAAQ,EACR,SAAS,CAAC,SAAS,GAAG,cAAc,CAGrC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,SAAS;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;CACvD,KAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,EAAE,SAAS,CAAC,SAAS,GAAG,cAAc,CAG1F,CAAA"}
|
@@ -14,7 +14,7 @@ import * as ShardStorage from "./ShardStorage.js";
|
|
14
14
|
export declare const make: (options?: {
|
15
15
|
readonly prefix?: string | undefined;
|
16
16
|
} | undefined) => Effect.Effect<{
|
17
|
-
readonly getAssignments: Effect.Effect<
|
17
|
+
readonly getAssignments: Effect.Effect<Array<[import("./ShardId.js").ShardId, import("effect/Option").Option<import("./RunnerAddress.js").RunnerAddress>]>, PersistenceError>;
|
18
18
|
readonly saveAssignments: (assignments: Iterable<readonly [import("./ShardId.js").ShardId, import("effect/Option").Option<import("./RunnerAddress.js").RunnerAddress>]>) => Effect.Effect<void, PersistenceError>;
|
19
19
|
readonly getRunners: Effect.Effect<Array<[import("./RunnerAddress.js").RunnerAddress, import("./Runner.js").Runner]>, PersistenceError>;
|
20
20
|
readonly saveRunners: (runners: Iterable<readonly [import("./RunnerAddress.js").RunnerAddress, import("./Runner.js").Runner]>) => Effect.Effect<void, PersistenceError>;
|
package/dist/dts/index.d.ts
CHANGED
package/dist/dts/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA;AAEnE;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,yBAAyB,MAAM,gCAAgC,CAAA;AAE3E;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA;AAEnE;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,yBAAyB,MAAM,gCAAgC,CAAA;AAE3E;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA"}
|
@@ -0,0 +1,77 @@
|
|
1
|
+
/**
|
2
|
+
* @since 1.0.0
|
3
|
+
*/
|
4
|
+
import * as Rpc from "@effect/rpc/Rpc";
|
5
|
+
import * as Cron from "effect/Cron";
|
6
|
+
import * as DateTime from "effect/DateTime";
|
7
|
+
import * as Duration from "effect/Duration";
|
8
|
+
import * as Effect from "effect/Effect";
|
9
|
+
import * as Layer from "effect/Layer";
|
10
|
+
import * as Option from "effect/Option";
|
11
|
+
import * as PrimaryKey from "effect/PrimaryKey";
|
12
|
+
import * as Schedule from "effect/Schedule";
|
13
|
+
import * as Schema from "effect/Schema";
|
14
|
+
import * as ClusterSchema from "./ClusterSchema.js";
|
15
|
+
import { Persisted, Uninterruptible } from "./ClusterSchema.js";
|
16
|
+
import * as DeliverAt from "./DeliverAt.js";
|
17
|
+
import * as Entity from "./Entity.js";
|
18
|
+
import * as Singleton from "./Singleton.js";
|
19
|
+
/**
|
20
|
+
* @since 1.0.0
|
21
|
+
* @category Constructors
|
22
|
+
*/
|
23
|
+
export const make = options => {
|
24
|
+
const CronEntity = Entity.make(`ClusterCron/${options.name}`, [Rpc.make("run", {
|
25
|
+
payload: CronPayload
|
26
|
+
}).annotate(Persisted, true).annotate(Uninterruptible, true)]).annotate(ClusterSchema.ShardGroup, () => options.shardGroup ?? "default");
|
27
|
+
const InitialRun = Singleton.make(`ClusterCron/${options.name}`, Effect.gen(function* () {
|
28
|
+
const client = (yield* CronEntity.client)("initial");
|
29
|
+
const now = yield* DateTime.now;
|
30
|
+
const next = Cron.next(options.cron, now);
|
31
|
+
yield* client.run({
|
32
|
+
dateTime: DateTime.unsafeFromDate(next)
|
33
|
+
}, {
|
34
|
+
discard: true
|
35
|
+
});
|
36
|
+
}), {
|
37
|
+
shardGroup: options.shardGroup
|
38
|
+
});
|
39
|
+
const skipIfOlderThan = Option.fromNullable(options.skipIfOlderThan).pipe(Option.map(Duration.decode), Option.getOrElse(() => Duration.days(1)));
|
40
|
+
const effect = Effect.fnUntraced(function* (dateTime) {
|
41
|
+
const now = yield* DateTime.now;
|
42
|
+
if (DateTime.lessThan(dateTime, DateTime.subtractDuration(now, skipIfOlderThan))) {
|
43
|
+
return;
|
44
|
+
}
|
45
|
+
return yield* options.execute;
|
46
|
+
}, Effect.orDie);
|
47
|
+
const EntityLayer = CronEntity.toLayer(Effect.gen(function* () {
|
48
|
+
const makeClient = yield* CronEntity.client;
|
49
|
+
return {
|
50
|
+
run(request) {
|
51
|
+
return Effect.ensuring(effect(request.payload.dateTime), Effect.gen(function* () {
|
52
|
+
const now = yield* DateTime.now;
|
53
|
+
const next = DateTime.unsafeFromDate(Cron.next(options.cron, options.calculateNextRunFromPrevious ? request.payload.dateTime : now));
|
54
|
+
const client = makeClient(DateTime.formatIso(next));
|
55
|
+
return yield* client.run({
|
56
|
+
dateTime: next
|
57
|
+
}, {
|
58
|
+
discard: true
|
59
|
+
});
|
60
|
+
}).pipe(Effect.sandbox, Effect.retry(retryPolicy), Effect.orDie));
|
61
|
+
}
|
62
|
+
};
|
63
|
+
}));
|
64
|
+
return Layer.merge(InitialRun, EntityLayer);
|
65
|
+
};
|
66
|
+
const retryPolicy = /*#__PURE__*/Schedule.exponential(200, 1.5).pipe(/*#__PURE__*/Schedule.union(/*#__PURE__*/Schedule.spaced("1 minute")));
|
67
|
+
class CronPayload extends /*#__PURE__*/Schema.Class("@effect/cluster/ClusterCron/CronPayload")({
|
68
|
+
dateTime: Schema.DateTimeUtc
|
69
|
+
}) {
|
70
|
+
[PrimaryKey.symbol]() {
|
71
|
+
return "";
|
72
|
+
}
|
73
|
+
[DeliverAt.symbol]() {
|
74
|
+
return this.dateTime;
|
75
|
+
}
|
76
|
+
}
|
77
|
+
//# sourceMappingURL=ClusterCron.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ClusterCron.js","names":["Rpc","Cron","DateTime","Duration","Effect","Layer","Option","PrimaryKey","Schedule","Schema","ClusterSchema","Persisted","Uninterruptible","DeliverAt","Entity","Singleton","make","options","CronEntity","name","payload","CronPayload","annotate","ShardGroup","shardGroup","InitialRun","gen","client","now","next","cron","run","dateTime","unsafeFromDate","discard","skipIfOlderThan","fromNullable","pipe","map","decode","getOrElse","days","effect","fnUntraced","lessThan","subtractDuration","execute","orDie","EntityLayer","toLayer","makeClient","request","ensuring","calculateNextRunFromPrevious","formatIso","sandbox","retry","retryPolicy","merge","exponential","union","spaced","Class","DateTimeUtc","symbol"],"sources":["../../src/ClusterCron.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
@@ -17,4 +17,11 @@ export class Persisted extends /*#__PURE__*/Context.Reference()("@effect/cluster
|
|
17
17
|
export class Uninterruptible extends /*#__PURE__*/Context.Reference()("@effect/cluster/ClusterSchema/Uninterruptible", {
|
18
18
|
defaultValue: constFalse
|
19
19
|
}) {}
|
20
|
+
/**
|
21
|
+
* @since 1.0.0
|
22
|
+
* @category Annotations
|
23
|
+
*/
|
24
|
+
export class ShardGroup extends /*#__PURE__*/Context.Reference()("@effect/cluster/ClusterSchema/ShardGroup", {
|
25
|
+
defaultValue: () => _ => "default"
|
26
|
+
}) {}
|
20
27
|
//# sourceMappingURL=ClusterSchema.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ClusterSchema.js","names":["Context","constFalse","Persisted","Reference","defaultValue","Uninterruptible"],"sources":["../../src/ClusterSchema.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,SAASC,UAAU,QAAQ,iBAAiB;
|
1
|
+
{"version":3,"file":"ClusterSchema.js","names":["Context","constFalse","Persisted","Reference","defaultValue","Uninterruptible","ShardGroup","_"],"sources":["../../src/ClusterSchema.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,SAASC,UAAU,QAAQ,iBAAiB;AAG5C;;;;AAIA,OAAM,MAAOC,SAAU,sBAAQF,OAAO,CAACG,SAAS,EAAa,CAAC,yCAAyC,EAAE;EACvGC,YAAY,EAAEH;CACf,CAAC;AAEF;;;;AAIA,OAAM,MAAOI,eACX,sBAAQL,OAAO,CAACG,SAAS,EAAmB,CAAC,+CAA+C,EAAE;EAC5FC,YAAY,EAAEH;CACf,CAAC;AAGJ;;;;AAIA,OAAM,MAAOK,UAAW,sBAAQN,OAAO,CAACG,SAAS,EAAc,CAAC,0CAA0C,EAAE;EAC1GC,YAAY,EAAEA,CAAA,KAAuCG,CAAC,IAAK;CAC5D,CAAC","ignoreList":[]}
|
@@ -2,6 +2,7 @@
|
|
2
2
|
* @since 1.0.0
|
3
3
|
*/
|
4
4
|
import * as Rpc from "@effect/rpc/Rpc";
|
5
|
+
import { DurableDeferred } from "@effect/workflow";
|
5
6
|
import * as Activity from "@effect/workflow/Activity";
|
6
7
|
import * as DurableClock from "@effect/workflow/DurableClock";
|
7
8
|
import * as Workflow from "@effect/workflow/Workflow";
|
@@ -23,9 +24,7 @@ import * as Entity from "./Entity.js";
|
|
23
24
|
import { EntityAddress } from "./EntityAddress.js";
|
24
25
|
import { EntityId } from "./EntityId.js";
|
25
26
|
import { EntityType } from "./EntityType.js";
|
26
|
-
import * as Message from "./Message.js";
|
27
27
|
import { MessageStorage } from "./MessageStorage.js";
|
28
|
-
import * as Reply from "./Reply.js";
|
29
28
|
import * as Sharding from "./Sharding.js";
|
30
29
|
import * as Snowflake from "./Snowflake.js";
|
31
30
|
/**
|
@@ -35,7 +34,7 @@ import * as Snowflake from "./Snowflake.js";
|
|
35
34
|
export const make = /*#__PURE__*/Effect.gen(function* () {
|
36
35
|
const sharding = yield* Sharding.Sharding;
|
37
36
|
const storage = yield* MessageStorage;
|
38
|
-
const
|
37
|
+
const workflows = new Map();
|
39
38
|
const entities = new Map();
|
40
39
|
const activities = new Map();
|
41
40
|
const activityLatches = new Map();
|
@@ -52,11 +51,12 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
|
|
52
51
|
const clockClient = yield* ClockEntity.client;
|
53
52
|
const deferredClient = yield* DeferredEntity.client;
|
54
53
|
const requestIdFor = Effect.fnUntraced(function* (options) {
|
54
|
+
const shardGroup = Context.get(options.workflow.annotations, ClusterSchema.ShardGroup)(options.executionId);
|
55
55
|
const entityId = EntityId.make(options.executionId);
|
56
56
|
const address = new EntityAddress({
|
57
57
|
entityType: EntityType.make(options.entityType),
|
58
58
|
entityId,
|
59
|
-
shardId: sharding.getShardId(entityId)
|
59
|
+
shardId: sharding.getShardId(entityId, shardGroup)
|
60
60
|
});
|
61
61
|
return yield* storage.requestIdForPrimaryKey({
|
62
62
|
address,
|
@@ -77,6 +77,7 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
|
|
77
77
|
});
|
78
78
|
const resetActivityAttempt = Effect.fnUntraced(function* (options) {
|
79
79
|
const requestId = yield* requestIdFor({
|
80
|
+
workflow: options.workflow,
|
80
81
|
entityType: `Workflow/${options.workflow.name}`,
|
81
82
|
executionId: options.executionId,
|
82
83
|
tag: "activity",
|
@@ -88,45 +89,78 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
|
|
88
89
|
times: 3,
|
89
90
|
schedule: Schedule.exponential(250)
|
90
91
|
}), Effect.orDie);
|
92
|
+
const clearClock = Effect.fnUntraced(function* (options) {
|
93
|
+
const shardGroup = Context.get(options.workflow.annotations, ClusterSchema.ShardGroup)(options.executionId);
|
94
|
+
const entityId = EntityId.make(options.executionId);
|
95
|
+
const shardId = sharding.getShardId(entityId, shardGroup);
|
96
|
+
const clockAddress = new EntityAddress({
|
97
|
+
entityType: ClockEntity.type,
|
98
|
+
entityId,
|
99
|
+
shardId
|
100
|
+
});
|
101
|
+
yield* storage.clearAddress(clockAddress);
|
102
|
+
});
|
91
103
|
return WorkflowEngine.of({
|
92
|
-
register
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
const
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
104
|
+
register(workflow, execute) {
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
106
|
+
const engine = this;
|
107
|
+
return Effect.suspend(() => {
|
108
|
+
if (entities.has(workflow.name)) {
|
109
|
+
return Effect.dieMessage(`Workflow ${workflow.name} already registered`);
|
110
|
+
}
|
111
|
+
const entity = makeWorkflowEntity(workflow);
|
112
|
+
workflows.set(workflow.name, workflow);
|
113
|
+
entities.set(workflow.name, entity);
|
114
|
+
return sharding.registerEntity(entity, Effect.gen(function* () {
|
115
|
+
const address = yield* Entity.CurrentAddress;
|
116
|
+
const executionId = address.entityId;
|
117
|
+
return {
|
118
|
+
run: request => {
|
119
|
+
const instance = WorkflowInstance.of({
|
120
|
+
workflow,
|
121
|
+
executionId,
|
122
|
+
suspended: false
|
123
|
+
});
|
124
|
+
return execute(request.payload, executionId).pipe(Effect.onExit(() => {
|
125
|
+
if (!instance.suspended) {
|
126
|
+
return Effect.void;
|
127
|
+
}
|
128
|
+
return engine.deferredResult(InterruptSignal).pipe(Effect.flatMap(maybeResult => {
|
129
|
+
if (Option.isNone(maybeResult)) {
|
130
|
+
return Effect.void;
|
131
|
+
}
|
132
|
+
instance.suspended = false;
|
133
|
+
return Effect.zipRight(Effect.ignore(clearClock({
|
134
|
+
workflow,
|
135
|
+
executionId
|
136
|
+
})), Effect.interrupt);
|
137
|
+
}), Effect.orDie);
|
138
|
+
}), Effect.scoped, Workflow.intoResult, Effect.provideService(WorkflowInstance, instance));
|
139
|
+
},
|
140
|
+
activity: Effect.fnUntraced(function* (request) {
|
141
|
+
const activityId = `${executionId}/${request.payload.name}`;
|
142
|
+
let entry = activities.get(activityId);
|
143
|
+
while (!entry) {
|
144
|
+
const latch = Effect.unsafeMakeLatch();
|
145
|
+
activityLatches.set(activityId, latch);
|
146
|
+
yield* latch.await;
|
147
|
+
entry = activities.get(activityId);
|
148
|
+
}
|
149
|
+
const contextMap = new Map(entry.context.unsafeMap);
|
150
|
+
contextMap.set(Activity.CurrentAttempt.key, request.payload.attempt);
|
151
|
+
contextMap.set(WorkflowInstance.key, WorkflowInstance.of({
|
152
|
+
workflow,
|
153
|
+
executionId,
|
154
|
+
suspended: false
|
155
|
+
}));
|
156
|
+
return yield* entry.activity.executeEncoded.pipe(Workflow.intoResult, Effect.provide(Context.unsafeMake(contextMap)), Effect.ensuring(Effect.sync(() => {
|
157
|
+
activities.delete(activityId);
|
158
|
+
})));
|
159
|
+
}, Rpc.fork)
|
160
|
+
};
|
161
|
+
}));
|
162
|
+
});
|
163
|
+
},
|
130
164
|
execute: ({
|
131
165
|
discard,
|
132
166
|
executionId,
|
@@ -137,6 +171,7 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
|
|
137
171
|
})), Effect.orDie, Effect.scoped),
|
138
172
|
interrupt: Effect.fnUntraced(function* (workflow, executionId) {
|
139
173
|
const requestId = yield* requestIdFor({
|
174
|
+
workflow,
|
140
175
|
entityType: `Workflow/${workflow.name}`,
|
141
176
|
executionId,
|
142
177
|
tag: "run",
|
@@ -150,45 +185,27 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
|
|
150
185
|
if (Option.isSome(nonSuspendedReply)) {
|
151
186
|
return;
|
152
187
|
}
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
entityType: DeferredEntity.type,
|
162
|
-
entityId,
|
163
|
-
shardId
|
164
|
-
});
|
165
|
-
const clockAddress = new EntityAddress({
|
166
|
-
entityType: ClockEntity.type,
|
167
|
-
entityId,
|
168
|
-
shardId
|
188
|
+
yield* this.deferredDone({
|
189
|
+
workflowName: workflow.name,
|
190
|
+
executionId,
|
191
|
+
deferred: InterruptSignal,
|
192
|
+
exit: {
|
193
|
+
_tag: "Success",
|
194
|
+
value: void 0
|
195
|
+
}
|
169
196
|
});
|
170
|
-
if (Option.isNone(reply)) {
|
171
|
-
yield* sharding.sendOutgoing(Message.OutgoingEnvelope.interrupt({
|
172
|
-
address: workflowAddress,
|
173
|
-
id: snowflakeGen.unsafeNext(),
|
174
|
-
requestId: requestId.value
|
175
|
-
}), true);
|
176
|
-
} else {
|
177
|
-
yield* sharding.reset(requestId.value);
|
178
|
-
}
|
179
|
-
yield* storage.saveReply(Reply.ReplyWithContext.interrupt({
|
180
|
-
id: snowflakeGen.unsafeNext(),
|
181
|
-
requestId: requestId.value
|
182
|
-
}));
|
183
|
-
yield* storage.clearAddress(deferredAddress);
|
184
|
-
yield* storage.clearAddress(clockAddress);
|
185
197
|
}, Effect.retry({
|
186
198
|
while: e => e._tag === "PersistenceError",
|
187
199
|
times: 3,
|
188
200
|
schedule: Schedule.exponential(250)
|
189
201
|
}), Effect.orDie),
|
190
202
|
resume: Effect.fnUntraced(function* (workflowName, executionId) {
|
203
|
+
const workflow = workflows.get(workflowName);
|
204
|
+
if (!workflow) {
|
205
|
+
return yield* Effect.dieMessage(`WorkflowEngine.resume: ${workflowName} not registered`);
|
206
|
+
}
|
191
207
|
const maybeReply = yield* requestReply({
|
208
|
+
workflow,
|
192
209
|
entityType: `Workflow/${workflowName}`,
|
193
210
|
executionId,
|
194
211
|
tag: "run",
|
@@ -240,6 +257,7 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
|
|
240
257
|
}
|
241
258
|
}, Effect.scoped),
|
242
259
|
deferredResult: deferred => WorkflowInstance.pipe(Effect.flatMap(instance => requestReply({
|
260
|
+
workflow: instance.workflow,
|
243
261
|
entityType: DeferredEntity.type,
|
244
262
|
executionId: instance.executionId,
|
245
263
|
tag: "set",
|
@@ -274,6 +292,8 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
|
|
274
292
|
}
|
275
293
|
});
|
276
294
|
});
|
295
|
+
const retryPolicy = /*#__PURE__*/Schedule.exponential(200, 1.5).pipe(/*#__PURE__*/Schedule.union(/*#__PURE__*/Schedule.spaced("1 minute")));
|
296
|
+
const ensureSuccess = effect => effect.pipe(Effect.sandbox, Effect.retry(retryPolicy), Effect.orDie);
|
277
297
|
const ActivityRpc = /*#__PURE__*/Rpc.make("activity", {
|
278
298
|
payload: {
|
279
299
|
name: Schema.String,
|
@@ -295,7 +315,7 @@ const makeWorkflowEntity = workflow => Entity.make(`Workflow/${workflow.name}`,
|
|
295
315
|
success: workflow.successSchema,
|
296
316
|
error: workflow.errorSchema
|
297
317
|
})
|
298
|
-
}), ActivityRpc]).annotateRpcs(ClusterSchema.Persisted, true).annotateRpcs(ClusterSchema.Uninterruptible, true);
|
318
|
+
}), ActivityRpc]).annotateContext(workflow.annotations).annotateRpcs(ClusterSchema.Persisted, true).annotateRpcs(ClusterSchema.Uninterruptible, true);
|
299
319
|
const activityPrimaryKey = (activity, attempt) => `${activity}/${attempt}`;
|
300
320
|
const ExitUnknown = /*#__PURE__*/Schema.encodedSchema(/*#__PURE__*/Schema.Exit({
|
301
321
|
success: Schema.Unknown,
|
@@ -327,7 +347,7 @@ const DeferredEntityLayer = /*#__PURE__*/DeferredEntity.toLayer(/*#__PURE__*/Eff
|
|
327
347
|
const executionId = address.entityId;
|
328
348
|
const client = (yield* DeferredEntity.client)(executionId);
|
329
349
|
return {
|
330
|
-
set: request => Effect.as(
|
350
|
+
set: request => Effect.as(ensureSuccess(client.resume(request.payload, {
|
331
351
|
discard: true
|
332
352
|
})), request.payload.exit),
|
333
353
|
resume: request => engine.resume(request.payload.workflowName, executionId)
|
@@ -358,7 +378,7 @@ const ClockEntityLayer = /*#__PURE__*/ClockEntity.toLayer(/*#__PURE__*/Effect.ge
|
|
358
378
|
name: request.payload.name,
|
359
379
|
duration: Duration.zero
|
360
380
|
}).deferred;
|
361
|
-
return engine.deferredDone({
|
381
|
+
return ensureSuccess(engine.deferredDone({
|
362
382
|
workflowName: request.payload.workflowName,
|
363
383
|
executionId,
|
364
384
|
deferred,
|
@@ -366,13 +386,14 @@ const ClockEntityLayer = /*#__PURE__*/ClockEntity.toLayer(/*#__PURE__*/Effect.ge
|
|
366
386
|
_tag: "Success",
|
367
387
|
value: void 0
|
368
388
|
}
|
369
|
-
});
|
389
|
+
}));
|
370
390
|
}
|
371
391
|
};
|
372
392
|
}));
|
393
|
+
const InterruptSignal = /*#__PURE__*/DurableDeferred.make("Workflow/InterruptSignal");
|
373
394
|
/**
|
374
395
|
* @since 1.0.0
|
375
396
|
* @category Layers
|
376
397
|
*/
|
377
|
-
export const layer = /*#__PURE__*/DeferredEntityLayer.pipe(/*#__PURE__*/Layer.merge(ClockEntityLayer), /*#__PURE__*/Layer.provideMerge(/*#__PURE__*/Layer.scoped(WorkflowEngine, make))
|
398
|
+
export const layer = /*#__PURE__*/DeferredEntityLayer.pipe(/*#__PURE__*/Layer.merge(ClockEntityLayer), /*#__PURE__*/Layer.provideMerge(/*#__PURE__*/Layer.scoped(WorkflowEngine, make)));
|
378
399
|
//# sourceMappingURL=ClusterWorkflowEngine.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ClusterWorkflowEngine.js","names":["Rpc","Activity","DurableClock","Workflow","WorkflowEngine","WorkflowInstance","Arr","Context","DateTime","Duration","Effect","Layer","Option","PrimaryKey","RcMap","Schedule","Schema","ClusterSchema","DeliverAt","Entity","EntityAddress","EntityId","EntityType","Message","MessageStorage","Reply","Sharding","Snowflake","make","gen","sharding","storage","snowflakeGen","Generator","entities","Map","activities","activityLatches","clients","lookup","fnUntraced","workflowName","entity","get","dieMessage","client","idleTimeToLive","clockClient","ClockEntity","deferredClient","DeferredEntity","requestIdFor","options","entityId","executionId","address","entityType","shardId","getShardId","requestIdForPrimaryKey","tag","id","replyForRequestId","requestId","replies","repliesForUnfiltered","last","pipe","filter","reply","_tag","map","requestReply","isNone","none","value","resetActivityAttempt","workflow","name","activityPrimaryKey","activity","attempt","reset","retry","times","schedule","exponential","orDie","of","register","execute","suspend","has","makeWorkflowEntity","set","registerEntity","CurrentAddress","run","request","payload","intoResult","provideService","suspended","activityId","entry","latch","unsafeMakeLatch","await","contextMap","context","unsafeMap","CurrentAttempt","key","executeEncoded","provide","unsafeMake","ensuring","sync","delete","fork","discard","flatMap","scoped","interrupt","nonSuspendedReply","exit","isSome","workflowAddress","deferredAddress","type","clockAddress","sendOutgoing","OutgoingEnvelope","unsafeNext","saveReply","ReplyWithContext","clearAddress","while","e","resume","maybeReply","maybeSuspended","activityExecute","instance","release","result","deferredResult","deferred","deferredDone","scheduleClock","now","clock","wakeUp","addDuration","duration","ActivityRpc","String","Number","primaryKey","success","Result","Unknown","error","payloadSchema","fields","successSchema","errorSchema","annotateRpcs","Persisted","Uninterruptible","ExitUnknown","encodedSchema","Exit","failure","defect","Defect","DeferredEntityLayer","toLayer","engine","as","ClockPayload","Class","DateTimeUtcFromNumber","symbol","annotate","ClockEntityLayer","zero","layer","merge","provideMerge","layerGenerator"],"sources":["../../src/ClusterWorkflowEngine.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"ClusterWorkflowEngine.js","names":["Rpc","DurableDeferred","Activity","DurableClock","Workflow","WorkflowEngine","WorkflowInstance","Arr","Context","DateTime","Duration","Effect","Layer","Option","PrimaryKey","RcMap","Schedule","Schema","ClusterSchema","DeliverAt","Entity","EntityAddress","EntityId","EntityType","MessageStorage","Sharding","Snowflake","make","gen","sharding","storage","workflows","Map","entities","activities","activityLatches","clients","lookup","fnUntraced","workflowName","entity","get","dieMessage","client","idleTimeToLive","clockClient","ClockEntity","deferredClient","DeferredEntity","requestIdFor","options","shardGroup","workflow","annotations","ShardGroup","executionId","entityId","address","entityType","shardId","getShardId","requestIdForPrimaryKey","tag","id","replyForRequestId","requestId","replies","repliesForUnfiltered","last","pipe","filter","reply","_tag","map","requestReply","isNone","none","value","resetActivityAttempt","name","activityPrimaryKey","activity","attempt","reset","retry","times","schedule","exponential","orDie","clearClock","clockAddress","type","clearAddress","of","register","execute","engine","suspend","has","makeWorkflowEntity","set","registerEntity","CurrentAddress","run","request","instance","suspended","payload","onExit","void","deferredResult","InterruptSignal","flatMap","maybeResult","zipRight","ignore","interrupt","scoped","intoResult","provideService","activityId","entry","latch","unsafeMakeLatch","await","contextMap","context","unsafeMap","CurrentAttempt","key","executeEncoded","provide","unsafeMake","ensuring","sync","delete","fork","discard","nonSuspendedReply","exit","isSome","deferredDone","deferred","while","e","resume","maybeReply","maybeSuspended","activityExecute","release","result","scheduleClock","now","clock","wakeUp","addDuration","duration","retryPolicy","union","spaced","ensureSuccess","effect","sandbox","ActivityRpc","String","Number","primaryKey","success","Result","Unknown","error","payloadSchema","fields","successSchema","errorSchema","annotateContext","annotateRpcs","Persisted","Uninterruptible","ExitUnknown","encodedSchema","Exit","failure","defect","Defect","DeferredEntityLayer","toLayer","as","ClockPayload","Class","DateTimeUtcFromNumber","symbol","annotate","ClockEntityLayer","zero","layer","merge","provideMerge"],"sources":["../../src/ClusterWorkflowEngine.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/Entity.js
CHANGED
@@ -13,6 +13,7 @@ import * as Mailbox from "effect/Mailbox";
|
|
13
13
|
import * as Option from "effect/Option";
|
14
14
|
import * as Predicate from "effect/Predicate";
|
15
15
|
import { Scope } from "effect/Scope";
|
16
|
+
import { ShardGroup } from "./ClusterSchema.js";
|
16
17
|
import { EntityAddress } from "./EntityAddress.js";
|
17
18
|
import { EntityType } from "./EntityType.js";
|
18
19
|
import * as Envelope from "./Envelope.js";
|
@@ -54,6 +55,9 @@ const Proto = {
|
|
54
55
|
annotateRpcsContext(context) {
|
55
56
|
return fromRpcGroup(this.type, this.protocol.annotateRpcsContext(context));
|
56
57
|
},
|
58
|
+
getShardId(entityId) {
|
59
|
+
return Effect.map(shardingTag, sharding => sharding.getShardId(entityId, this.getShardGroup(entityId)));
|
60
|
+
},
|
57
61
|
get client() {
|
58
62
|
return shardingTag.pipe(Effect.flatMap(sharding => sharding.makeClient(this)));
|
59
63
|
},
|
@@ -126,6 +130,7 @@ protocol) => {
|
|
126
130
|
const self = Object.create(Proto);
|
127
131
|
self.type = EntityType.make(type);
|
128
132
|
self.protocol = protocol;
|
133
|
+
self.getShardGroup = Context.get(protocol.annotations, ShardGroup);
|
129
134
|
return self;
|
130
135
|
};
|
131
136
|
/**
|
@@ -187,7 +192,7 @@ const shardingTag = /*#__PURE__*/Context.GenericTag("@effect/cluster/Sharding");
|
|
187
192
|
*/
|
188
193
|
export const makeTestClient = /*#__PURE__*/Effect.fnUntraced(function* (entity, layer) {
|
189
194
|
const config = yield* ShardingConfig;
|
190
|
-
const makeShardId = entityId => ShardId.make(Math.abs(hashString(entityId) % config.
|
195
|
+
const makeShardId = entityId => ShardId.make(entity.getShardGroup(entityId), Math.abs(hashString(entityId) % config.shardsPerGroup) + 1);
|
191
196
|
const snowflakeGen = yield* Snowflake.makeGenerator;
|
192
197
|
const runnerAddress = new RunnerAddress({
|
193
198
|
host: "localhost",
|