ClusterSchema
The ClusterSchema module collects the annotations that add cluster behavior to RPC protocols and entity definitions. These annotations describe how requests are persisted, handled in transactions, interrupted, traced, and routed to shard groups without changing the request or response schema.
Predicates
isUninterruptibleForClient
Signature
declare function isUninterruptibleForClient(context: Context<never>): boolean;isUninterruptibleForServer
Returns whether the Uninterruptible annotation applies to server-side request handling for the provided context.
Details
Returns true only when Uninterruptible is true or "server".
See
Uninterruptiblefor the annotation values interpreted by this helperisUninterruptibleForClientfor the client-side counterpart
Signature
declare function isUninterruptibleForServer(context: Context<never>): boolean;Services
ClientTracingEnabled
Annotation that controls whether client-side cluster request tracing is enabled.
Details
The default value is true.
Signature
declare const ClientTracingEnabled: Reference<boolean>;Context reference for deriving request annotations from a cluster request.
When to use
Use to customize server-side request annotations based on the decoded request value.
Gotchas
This only applies to requests handled by the entity, not to the generated client.
Signature
declare const Dynamic: Reference<
(annotations: Context<never>, request: Request<AnyWithProps>) => Context<never>
>;Annotation that marks whether a cluster request should be persisted in mailbox storage.
Details
The default value is false.
Signature
declare const Persisted: Reference<boolean>;ShardGroup
Annotation that selects the shard group for an entity id.
Details
By default, every entity id is assigned to the "default" shard group.
Signature
declare const ShardGroup: Reference<
(entityId: string & Brand<"~effect/cluster/EntityId">) => string
>;Uninterruptible
Annotation that controls whether a cluster request is treated as uninterruptible.
Details
Use true for both client and server handling, "client" for client-side handling only, "server" for server-side handling only, or false to allow interruption.
Signature
declare const Uninterruptible: Reference<boolean | "server" | "client">;WithTransaction
Annotation that marks whether request handling should be wrapped in the configured message storage transaction.
When to use
Use when you need server-side request handling or storage work wrapped in the storage transaction.
Details
The default value is false. When true, entity handling wraps server writes with the configured storage transaction.
Gotchas
This annotation has transactional behavior only when the configured MessageStorage implements it.
Signature
declare const WithTransaction: Reference<boolean>;
Returns whether the
Uninterruptibleannotation applies to client-side request handling for the provided context.When to use
Use when you need client-side cluster request handling to decide whether to ignore an interrupt.
Details
Returns
truewhenUninterruptibleistrueor"client", andfalsefor"server"or the defaultfalse.See
Uninterruptiblefor the annotation values interpreted by this helperisUninterruptibleForServerfor the server-side counterpart