Skip to main content

LoadOptions

When transacting or querying on your decider you can supply a load option to opt into different load guarantees.

RequireLoad​

This is the default load option, always obtaining the latest state from the store

const decider = this.resolve(id)
return decider.transact(decide, LoadOption.RequireLoad)

RequireLeader​

Request that the stream be loaded with a quorum read / from a leader connection

const decider = this.resolve(id)
return decider.transact(decide, LoadOption.RequireLeader)

MaxStale(ms)​

If the cache contains a state from the stream that was read less than ms milliseconds ago that state will be used without fetching more events from the stream.

const decider = this.resolve(id)
// tolerate 50s of staleness
return decider.transact(decide, LoadOption.MaxStale(50000))

AnyCachedValue​

If the cache contains any state from the stream, that state will be used without fetching more events from the stream.

const decider = this.resolve(id)
// Note: equivalent to LoadOption.MaxStale(Number.MAX_SAFE_INTEGER)
return decider.transact(decide, LoadOption.AnyCachedValue)

AssumeEmpty​

Instead of loading the stream, the empty state is supplied to the handler. Useful to avoid a read roundtrip if you believe there is a good chance that the value in the cache will be correct (if not, the append will trigger a reload due to a concurrency conflict during the sync)

const decider = this.resolve(id)
return decider.transact(decide, LoadOption.AssumeEmpty)