Execution configuration reference
echo.labstack.com/pro v0.2.0. See the task guide for setup examples.
Required fields
Section titled “Required fields”JournalConfig:Namespace,StoreandPolicies.MiddlewareConfig: a constructedJournal, anOperation, and theIdentityandReplayCheckcallbacks.- Every instance: matching namespace limits and
BudgetShards, which the store saves. - Separate response limits:
MiddlewareConfig.MaxResponseBytesfor live HTTP output andJournalConfig.MaxResultBytesfor stored results.
Uncertain operations never expire; an operator must resolve them.
execution.JournalConfig
Section titled “execution.JournalConfig”Import echo.labstack.com/pro/execution.
execution.JournalConfig · execution/journal.go:21 · echo.labstack.com/[email protected]
JournalConfig configures a Journal. New copies Policies and their slices. Store remains caller-owned and must outlive the Journal. New starts no goroutines. Callbacks must honor their context and support concurrent calls for different attempts and operator calls. The limit fields form the namespace Limits.
| Field | Type | Description | Defaults / requirements | Source |
|---|---|---|---|---|
Namespace | string | Namespace is required: 1–64 UTF-8 bytes without control characters. | Namespace is required: 1–64 UTF-8 bytes without control characters. | execution/journal.go:23 |
Store | Store | Store is required, retained and caller-owned; it must satisfy Store cancellation, copying and concurrency requirements. | Store is required, retained and caller-owned; it must satisfy Store cancellation, copying and concurrency requirements. | execution/journal.go:26 |
Policies | map[string]Policy | Policies requires 1–1024 named policies; New copies the map and nested slices. | Policies requires 1–1024 named policies; New copies the map and nested slices. | execution/journal.go:29 |
OpTimeout | time.Duration | OpTimeout defaults to 5s; valid range 1s–30s. | OpTimeout defaults to 5s; valid range 1s–30s. | execution/journal.go:31 |
CompleteTimeout | time.Duration | CompleteTimeout defaults to 10s; valid range 1s–30s. | CompleteTimeout defaults to 10s; valid range 1s–30s. | execution/journal.go:33 |
ReconcileTimeout | time.Duration | ReconcileTimeout defaults to 30s; valid range 1s–5m. | ReconcileTimeout defaults to 30s; valid range 1s–5m. | execution/journal.go:35 |
ReconcileLease | time.Duration | ReconcileLease defaults to 1m; valid range 2s–10m. It must exceed ReconcileTimeout + OpTimeout. | ReconcileLease defaults to 1m; valid range 2s–10m. | execution/journal.go:38 |
MaxResultBytes | int | MaxResultBytes defaults to 64 KiB (1 byte–1 MiB); MaxUnresolvedPerTenant defaults to 1000 and must be positive. | MaxResultBytes defaults to 64 KiB (1 byte–1 MiB); MaxUnresolvedPerTenant defaults to 1000 and must be positive. | execution/journal.go:41 |
MaxUnresolvedPerTenant | int | MaxResultBytes defaults to 64 KiB (1 byte–1 MiB); MaxUnresolvedPerTenant defaults to 1000 and must be positive. | MaxResultBytes defaults to 64 KiB (1 byte–1 MiB); MaxUnresolvedPerTenant defaults to 1000 and must be positive. | execution/journal.go:41 |
MaxNamespaceRecords | int64 | MaxNamespaceRecords defaults to 5,000,000 and MaxNamespaceBytes to 20 GiB; both must be positive after defaults. | MaxNamespaceRecords defaults to 5,000,000 and MaxNamespaceBytes to 20 GiB; both must be positive after defaults. | execution/journal.go:44 |
MaxNamespaceBytes | int64 | MaxNamespaceRecords defaults to 5,000,000 and MaxNamespaceBytes to 20 GiB; both must be positive after defaults. | MaxNamespaceRecords defaults to 5,000,000 and MaxNamespaceBytes to 20 GiB; both must be positive after defaults. | execution/journal.go:44 |
BudgetShards | int | BudgetShards defaults to 16; valid range 1–256. | BudgetShards defaults to 16; valid range 1–256. | execution/journal.go:46 |
Redact | func(context.Context, Key, Result) (Result, error) | Redact optionally transforms copied results before storage; nil preserves them. Redact, RedactEvidence, OnTransition and OnError run synchronously. Attempt methods hold the attempt mutex while invoking callbacks. This includes Intent, Resend, Renew, Release, Complete, Fail, FailedProven, Uncertain, RecordSendTiming and finalization in Do. Return promptly. Calling the same Attempt, or waiting for work that calls it, deadlocks. Redacting stored results and diagnostics is the application's responsibility. | Redact optionally transforms copied results before storage; nil preserves them. | execution/journal.go:54 |
RedactEvidence | func(context.Context, Evidence) (Evidence, error) | RedactEvidence can rewrite recorded diagnostics before storage. If nil, diagnostics are stored unchanged. The Redact callback rules also apply. | If nil, diagnostics are stored unchanged. | execution/journal.go:57 |
OnTransition | func(context.Context, Transition) | OnTransition observes committed records and cannot change the commit. Nil disables it. The Redact callback rules also apply. | Nil disables it. | execution/journal.go:60 |
OnError | func(context.Context, error) | OnError observes errors without replacing the operation's answer. Nil disables it. The Redact callback rules also apply. | Nil disables it. | execution/journal.go:63 |
| Type | Source |
|---|---|
func New(cfg JournalConfig) (*Journal, error) | execution/journal.go:85 |
execution.MiddlewareConfig
Section titled “execution.MiddlewareConfig”Import echo.labstack.com/pro/execution.
execution.MiddlewareConfig · execution/http.go:27 · echo.labstack.com/[email protected]
MiddlewareConfig protects one configured operation. Callbacks run synchronously and must not retain c. Header slices are copied during construction. Journal and callbacks remain caller-owned. Constructed middleware supports concurrent requests; all callbacks must be concurrency safe and honor request cancellation. It starts no goroutines that outlive a request.
| Field | Type | Description | Defaults / requirements | Source |
|---|---|---|---|---|
Journal | *Journal | Journal is required, retained and caller-owned. | Journal is required, retained and caller-owned. | execution/http.go:29 |
Identity | func(*echo.Context) (tenant, subject string, err error) | Identity is required and resolves trusted tenant and subject per request. | Identity is required and resolves trusted tenant and subject per request. | execution/http.go:32 |
Operation | string | Operation must name a configured ExternalMode policy; empty is invalid. | Operation must name a configured ExternalMode policy; empty is invalid. | execution/http.go:35 |
ReplayCheck | func(*echo.Context) error | ReplayCheck is required and authorizes current access on every invocation. | ReplayCheck is required and authorizes current access on every invocation. | execution/http.go:38 |
ClassifyStatus | func(int) State | ClassifyStatus maps an HTTP status to Completed or Failed. If it returns an empty state, or is nil, the handler must call Classify. | If it returns an empty state, or is nil, the handler must call Classify. | execution/http.go:41 |
Header | string | Header defaults to Idempotency-Key and must be a valid HTTP field name. | Header defaults to Idempotency-Key and must be a valid HTTP field name. | execution/http.go:44 |
Fingerprint | func(context.Context, *http.Request, string, map[string]string, FingerprintSpec, int64) ([32]byte, error) | Fingerprint defaults to FingerprintHTTP for built-in HTTP profiles; custom profiles require a callback with FingerprintHTTP's bounds and cancellation requirements. | Fingerprint defaults to FingerprintHTTP for built-in HTTP profiles; custom profiles require a callback with FingerprintHTTP's bounds and cancellation requirements. | execution/http.go:48 |
MaxFingerprintBytes | int64 | MaxFingerprintBytes defaults to 1 MiB; valid range 1 byte–8 MiB. | MaxFingerprintBytes defaults to 1 MiB; valid range 1 byte–8 MiB. | execution/http.go:50 |
MaxResponseBytes | int | MaxResponseBytes defaults to 1 MiB; valid range 1 byte–8 MiB. | MaxResponseBytes defaults to 1 MiB; valid range 1 byte–8 MiB. | execution/http.go:52 |
ReplayHeaders | []string | ReplayHeaders is copied; nil selects Content-Type, nonnil empty selects none. At most 64 distinct allowed HTTP field names fit; hop-by-hop, framing, Set-Cookie and Idempotent-Replayed fields are forbidden. | ReplayHeaders is copied; nil selects Content-Type, nonnil empty selects none. | execution/http.go:57 |
NotExecuted | func(*echo.Context) | NotExecuted runs once whenever the handler does not run, including validation failures and refusals. Nil disables it. | Nil disables it. | execution/http.go:60 |
ProblemHandler | func(*echo.Context, Problem) error | ProblemHandler optionally renders execution problems; nil uses RFC 9457. | ProblemHandler optionally renders execution problems; nil uses RFC 9457. | execution/http.go:63 |
OnError | func(context.Context, error) | OnError optionally observes storage/finalization and transport failures without changing the answer; nil is silent. | OnError optionally observes storage/finalization and transport failures without changing the answer; nil is silent. | execution/http.go:66 |
| Type | Source |
|---|---|
func (cfg MiddlewareConfig) ToMiddleware() (echo.MiddlewareFunc, error) | execution/http.go:260 |
execution.ReconcileSchedulerConfig
Section titled “execution.ReconcileSchedulerConfig”Import echo.labstack.com/pro/execution.
execution.ReconcileSchedulerConfig · execution/scheduler.go:51 · echo.labstack.com/[email protected]
ReconcileSchedulerConfig configures a reconciliation scheduler. Authorization callbacks receive a child context bounded by the journal's OpTimeout. The Operator, Store, Logger and callbacks stay caller-owned. Keep them usable until Run and any PendingReconcile.Run retry finish. Reconciler and Completion callbacks are retained. Callbacks run serially within one scheduler but must tolerate other schedulers and manual recovery in the same namespace.
| Field | Type | Description | Defaults / requirements | Source |
|---|---|---|---|---|
Operator | *Operator | Operator is required and retained; its journal's Store must implement ScheduledReconcileStore. | Operator is required and retained; its journal's Store must implement ScheduledReconcileStore. | execution/scheduler.go:54 |
Scopes | map[string]ScheduledReconciler | Scopes is copied and requires 1–1024 registered policy scopes, rather than operation aliases. | Scopes is copied and requires 1–1024 registered policy scopes, rather than operation aliases. | execution/scheduler.go:58 |
PollInterval | time.Duration | PollInterval defaults to 30s; valid range 1s–1h, measured after each pass. It is not a recovery-latency guarantee. | PollInterval defaults to 30s; valid range 1s–1h, measured after each pass. | execution/scheduler.go:62 |
PageSize | int | PageSize defaults to 25; valid range 1–100 examined records per pass. | PageSize defaults to 25; valid range 1–100 examined records per pass. | execution/scheduler.go:64 |
AuthorizeNamespace | func(context.Context, string) error | AuthorizeNamespace is required and retained; it runs before each ListUncertain. Errors stop Run. | AuthorizeNamespace is required and retained; it runs before each ListUncertain. | execution/scheduler.go:68 |
AuthorizeTarget | func(context.Context, ReconcileTarget) (bool, error) | AuthorizeTarget is required and retained; it runs before preparing each candidate. False skips the target; errors stop Run. | AuthorizeTarget is required and retained; it runs before preparing each candidate. | execution/scheduler.go:71 |
Logger | *slog.Logger | Logger is retained and caller-owned; nil is silent. It receives only bounded categories, never refs, principal data or error text. | Logger is retained and caller-owned; nil is silent. | execution/scheduler.go:75 |
| Type | Source |
|---|---|
func NewReconcileScheduler(cfg ReconcileSchedulerConfig) (*ReconcileScheduler, error) | execution/scheduler.go:100 |
executionadmin.Config
Section titled “executionadmin.Config”Import echo.labstack.com/pro/execution/executionadmin.
executionadmin.Config · execution/executionadmin/panel.go:35 · echo.labstack.com/[email protected]
Config configures the panel. The Operator, its Store, and the Reconciler and Completion callbacks stay caller-owned and must be safe for concurrent use. Keep them usable for the panel's whole lifetime, including retries of retained pending reconcile handles. New starts no goroutines. Reconciler and Completion honor context cancellation. Lookup keys contain the authorized tenant, subject and scope from the body. Use admin.Config.Authorize to narrow authorization.
| Field | Type | Description | Defaults / requirements | Source |
|---|---|---|---|---|
Operator | *execution.Operator | Operator is required, retained and must come from Journal.Operator. | Operator is required, retained and must come from Journal.Operator. | execution/executionadmin/panel.go:37 |
Reconciler | execution.Reconciler | Reconciler is optional and retained; nil disables reconciliation. It may send only after ReconcileClaim.Resend grants a permit. | Reconciler is optional and retained; nil disables reconciliation. | execution/executionadmin/panel.go:40 |
Completion | execution.Completion | Completion is optional and retained; nonnil requires Reconciler. | Completion is optional and retained; nonnil requires Reconciler. | execution/executionadmin/panel.go:42 |
EnableResolve | bool | EnableResolve opts into destructive resolution; default false. | EnableResolve opts into destructive resolution; default false. | execution/executionadmin/panel.go:44 |
MaxPending | int | MaxPending defaults to 128 (1–1000); at the cap new reconciles are refused and ambiguous handles are never evicted. | MaxPending defaults to 128 (1–1000); at the cap new reconciles are refused and ambiguous handles are never evicted. | execution/executionadmin/panel.go:47 |
| Type | Source |
|---|---|
func New(cfg Config) (*Panel, error) | execution/executionadmin/panel.go:92 |
pgstore.StoreConfig
Section titled “pgstore.StoreConfig”Import echo.labstack.com/pro/execution/pgstore.
pgstore.StoreConfig · execution/pgstore/store.go:53 · echo.labstack.com/[email protected]
StoreConfig selects a schema and optionally binds an instance to one namespace. Namespace, when supplied, makes New check its persisted shard count and caps against Limits; Begin must use those same caps. With no Namespace, Begin checks its own Limits against the persisted namespace. The caller's pgx query mode is never changed. An earlier caller deadline or cancellation still ends migration first, and statements keep the one-second lock timeout. New validates MigrateTimeout and rejects out-of-range values. New and Store operations do not use it as their deadline.
| Field | Type | Description | Defaults / requirements | Source |
|---|---|---|---|---|
Schema | string | Schema defaults to public; valid identifiers are 1–63 UTF-8 bytes without NUL or "$$". Namespace is optional; when set it is 1–64 UTF-8 bytes without controls and binds New to the namespace caps. | Schema defaults to public; valid identifiers are 1–63 UTF-8 bytes without NUL or "$$". Namespace is optional; when set it is 1–64 UTF-8 bytes without controls and binds New to the namespace caps. | execution/pgstore/store.go:57 |
Namespace | string | Schema defaults to public; valid identifiers are 1–63 UTF-8 bytes without NUL or "$$". Namespace is optional; when set it is 1–64 UTF-8 bytes without controls and binds New to the namespace caps. | Schema defaults to public; valid identifiers are 1–63 UTF-8 bytes without NUL or "$$". Namespace is optional; when set it is 1–64 UTF-8 bytes without controls and binds New to the namespace caps. | execution/pgstore/store.go:57 |
Limits | execution.Limits | Limits selects namespace caps; zero fields select execution.Limits defaults. | Limits selects namespace caps; zero fields select execution.Limits defaults. | execution/pgstore/store.go:60 |
MigrateTimeout | time.Duration | MigrateTimeout bounds all of Migrate: pool acquisition, DDL, catalog validation and COMMIT. It defaults to 1m; valid range 1s–1h. | It defaults to 1m; valid range 1s–1h. | execution/pgstore/store.go:63 |
| Type | Source |
|---|---|
func New(ctx context.Context, pool *pgxpool.Pool, cfg StoreConfig) (*Store, error) | execution/pgstore/store.go:542 |
pgstore.TxRunnerConfig
Section titled “pgstore.TxRunnerConfig”Import echo.labstack.com/pro/execution/pgstore.
pgstore.TxRunnerConfig · execution/pgstore/transactional.go:24 · echo.labstack.com/[email protected]
TxRunnerConfig configures a TxRunner. An empty policy Scope defaults to the operation name and aliases sharing a scope must share one safety policy. A Journal and TxRunner sharing a namespace and scope must use the same normalized safety policy. Each invocation checks retained records.
| Field | Type | Description | Defaults / requirements | Source |
|---|---|---|---|---|
Namespace | string | Namespace is required: 1–64 UTF-8 bytes without control characters. | Namespace is required: 1–64 UTF-8 bytes without control characters. | execution/pgstore/transactional.go:26 |
Policies | map[string]execution.Policy | Policies requires 1–1024 TransactionalMode policies; the map and slices are copied. | Policies requires 1–1024 TransactionalMode policies; the map and slices are copied. | execution/pgstore/transactional.go:29 |
Limits | execution.Limits | Limits zero fields select execution.Limits defaults; caps must match a namespace-bound Store. | Limits zero fields select execution.Limits defaults; caps must match a namespace-bound Store. | execution/pgstore/transactional.go:32 |
OpTimeout | time.Duration | OpTimeout defaults to 5s; valid range 1–30s, for starting or finishing an operation, including COMMIT. | OpTimeout defaults to 5s; valid range 1–30s, for starting or finishing an operation, including COMMIT. | execution/pgstore/transactional.go:36 |
TxTimeout | time.Duration | TxTimeout bounds the total call; defaults to 30s, valid range 1–60s, shortened by the caller deadline. | TxTimeout bounds the total call; defaults to 30s, valid range 1–60s, shortened by the caller deadline. | execution/pgstore/transactional.go:39 |
CleanupTimeout | time.Duration | CleanupTimeout defaults to 5s; valid range 1–30s, for detached rollback. | CleanupTimeout defaults to 5s; valid range 1–30s, for detached rollback. | execution/pgstore/transactional.go:42 |
Redact | func(context.Context, execution.Key, execution.Result) (execution.Result, error) | Redact is retained, must be safe for concurrent use and must honor ctx. Nil preserves the copied result. It runs once on the operation's first commit. It receives the key's tenant and subject; Value is empty. | Nil preserves the copied result. It receives the key's tenant and subject; Value is empty. | execution/pgstore/transactional.go:47 |
| Type | Source |
|---|---|
func NewTxRunner(store *Store, cfg TxRunnerConfig) (*TxRunner, error) | execution/pgstore/transactional.go:104 |
Public policy aliases
Section titled “Public policy aliases”execution.Policy, Effect, Limits and FingerprintSpec are type aliases used by JournalConfig and MiddlewareConfig.
execution.Policy · execution/types.go:78 · echo.labstack.com/[email protected]
Policy declares effects and their safety rules. New owns copied slices. Zero tunables select Lease=1 minute, ResultRetention=24 hours, KeyRetention=7 days. Effects require explicit timeouts. Backend selection comes only from the injected Store; a policy carries no storage selector. An empty fingerprint selects http/v1; nil Headers selects If-Match, If-None-Match, If-Modified-Since, If-Unmodified-Since, Content-Encoding and Content-Language, while an explicit empty slice selects none. An empty Mode selects ExternalMode; TransactionalMode requires no effects, a zero Lease and an empty ReconcilerVersion.
| Field | Type | Description | Defaults / requirements | Source |
|---|---|---|---|---|
SafetyVersion | string | SafetyVersion is required and versions the operation's safety rules. | SafetyVersion is required and versions the operation's safety rules. | execution/types.go:78 |
Scope | string | Scope empty defaults to the configured operation name in Journal.New. | Scope empty defaults to the configured operation name in Journal.New. | execution/types.go:78 |
ReconcilerVersion | string | ReconcilerVersion is required for external mode and empty for transactional mode. | ReconcilerVersion is required for external mode and empty for transactional mode. | execution/types.go:78 |
Effects | []Effect | Effects requires 1–8 entries in external mode; transactional mode requires none. | Effects requires 1–8 entries in external mode; transactional mode requires none. | execution/types.go:78 |
Fingerprint | FingerprintSpec | Fingerprint at zero selects http/v1 with its default header set. | Fingerprint at zero selects http/v1 with its default header set. | execution/types.go:78 |
Lease | time.Duration | Lease defaults to 1m in external mode; transactional mode requires zero. | Lease defaults to 1m in external mode; transactional mode requires zero. | execution/types.go:78 |
ResultRetention | time.Duration | ResultRetention defaults to 24h and must be positive. | ResultRetention defaults to 24h and must be positive. | execution/types.go:78 |
KeyRetention | time.Duration | KeyRetention defaults to 7 days and must be at least ResultRetention. | KeyRetention defaults to 7 days and must be at least ResultRetention. | execution/types.go:78 |
Mode | Mode | Mode empty selects ExternalMode; TransactionalMode is explicit. | Mode empty selects ExternalMode; TransactionalMode is explicit. | execution/types.go:78 |
execution.Effect · execution/types.go:41 · echo.labstack.com/[email protected]
Effect names an immutable provider and defines request replay rules.
| Field | Type | Description | Defaults / requirements | Source |
|---|---|---|---|---|
Name | string | Name and Provider are required. Name identifies the effect. Provider names the external service whose replay rules apply. | Name and Provider are required. | execution/types.go:41 |
Provider | string | Name and Provider are required. Name identifies the effect. Provider names the external service whose replay rules apply. | Name and Provider are required. | execution/types.go:41 |
ReplayWindow | time.Duration | ReplayWindow at zero declares no provider replay window; nonzero must exceed RequestTimeout plus 5m. | ReplayWindow at zero declares no provider replay window; nonzero must exceed RequestTimeout plus 5m. | execution/types.go:41 |
RequestTimeout | time.Duration | RequestTimeout is required, positive and at most 5m. It must be a whole number of microseconds. | RequestTimeout is required, positive and at most 5m. | execution/types.go:41 |
execution.Limits · execution/types.go:88 · echo.labstack.com/[email protected]
Limits are immutable per namespace; zero values select documented defaults.
| Field | Type | Description | Defaults / requirements | Source |
|---|---|---|---|---|
MaxResultBytes | int | MaxResultBytes defaults to 64 KiB; valid range 1 byte–1 MiB. | MaxResultBytes defaults to 64 KiB; valid range 1 byte–1 MiB. | execution/types.go:88 |
MaxUnresolvedPerTenant | int | MaxUnresolvedPerTenant defaults to 1000 and must be positive. | MaxUnresolvedPerTenant defaults to 1000 and must be positive. | execution/types.go:88 |
MaxNamespaceRecords | int64 | MaxNamespaceRecords defaults to 5000000 and must be positive. | MaxNamespaceRecords defaults to 5000000 and must be positive. | execution/types.go:88 |
MaxNamespaceBytes | int64 | MaxNamespaceBytes defaults to 20 GiB of logical charges and must be positive. | MaxNamespaceBytes defaults to 20 GiB of logical charges and must be positive. | execution/types.go:88 |
BudgetShards | int | BudgetShards defaults to 16; valid range 1–256. | BudgetShards defaults to 16; valid range 1–256. | execution/types.go:88 |
execution.FingerprintSpec · execution/fingerprint.go:24 · echo.labstack.com/[email protected]
FingerprintSpec describes the request fields included in the safety digest. Built-in profiles are "http/v1" and "http/v1+json", with Version "v1". Custom profiles require Version and CustomVersion. ConfigDigest hashes application settings that change operation behavior. Nil Headers selects If-Match, If-None-Match, If-Modified-Since, If-Unmodified-Since, Content-Encoding and Content-Language. An explicit empty slice selects none. Callers retain ownership of Headers.
| Field | Type | Description | Defaults / requirements | Source |
|---|---|---|---|---|
Profile | string | Profile empty selects http/v1 during policy construction. | Profile empty selects http/v1 during policy construction. | execution/fingerprint.go:24 |
Version | string | Version defaults to v1 when Profile is defaulted; custom profiles require it explicitly. | Version defaults to v1 when Profile is defaulted; custom profiles require it explicitly. | execution/fingerprint.go:24 |
Headers | []string | Headers nil selects If-Match, If-None-Match, If-Modified-Since, If-Unmodified-Since, Content-Encoding and Content-Language. An explicit empty slice selects none. | Headers nil selects If-Match, If-None-Match, If-Modified-Since, If-Unmodified-Since, Content-Encoding and Content-Language. An explicit empty slice selects none. | execution/fingerprint.go:24 |
CustomVersion | string | CustomVersion is required for custom profiles and empty for built-in profiles. | CustomVersion is required for custom profiles and empty for built-in profiles. | execution/fingerprint.go:24 |
ConfigDigest | [32]byte | ConfigDigest is optional; zero contributes a zero digest. Set it to a hash of application settings that change operation behavior. Changing it makes stored operations return operation_policy_changed. | ConfigDigest is optional; zero contributes a zero digest. | execution/fingerprint.go:24 |
HTTP and retention limits
Section titled “HTTP and retention limits”| Setting | Default or limit |
|---|---|
MiddlewareConfig.Header | Idempotency-Key |
ParseKey | One field line, at most 300 bytes; RFC 8941 Item String without parameters or a bare token |
MiddlewareConfig.MaxFingerprintBytes | 1 MiB by default; at most 8 MiB |
MiddlewareConfig.MaxResponseBytes | 1 MiB by default; at most 8 MiB |
JournalConfig.MaxResultBytes | 64 KiB by default; at most 1 MiB |
Policy.ResultRetention | 24 hours by default |
Policy.KeyRetention | Seven days by default; unresolved records do not expire automatically |
Keep the store open until requests, recovery calls and the scheduler have stopped.
Error types
Section titled “Error types”Business failures use *execution.FailureError; uncertain external effects
use *execution.AmbiguityError. The execution mode type is execution.Mode.