Options Reference
This page is part of the documentation for Orleans.Lattice 9.9.0 (release line 9.9), built 2026-10-04. It is also published as markdown, with every table and list, at options-reference.md, and llms.txt lists every page.Part of Configuration.
| Option | Type | Default | Safe to change after data exists? |
|---|---|---|---|
ActivationReadyTimeout |
TimeSpan |
15 seconds | Yes (on next seed) |
AdmissionAdvisoryBytes |
long? |
null (advisory dry-run off) |
Yes |
AdmissionAdvisoryLiveKeys |
long? |
null (advisory dry-run off) |
Yes |
AtomicActionRetention |
TimeSpan |
48 hours | Yes (global; read from the default options) |
AtomicWriteRetention |
TimeSpan |
48 hours | Yes |
AutoSplitEnabled |
bool |
true |
Yes |
AutoSplitMinTreeAge |
TimeSpan |
60 seconds | Yes |
BackgroundDrainLeavesPerPass |
int |
64 | Yes |
BackgroundDrainMaxDuration |
TimeSpan |
10 seconds | Yes |
CacheTtl |
TimeSpan |
TimeSpan.Zero (refresh on every cross-silo read) |
Yes |
CompactionLeafBatchSize |
int |
64 | Yes |
CompactionShardTickInterval |
TimeSpan |
500 milliseconds | Yes |
CompactionTriggerCooldown |
TimeSpan |
5 minutes | Yes |
ConsolidationDrainBatchSize |
int |
1024 | Yes |
ConsolidationDrainLeavesPerPass |
int |
16 | Yes |
CursorIdleTtl |
TimeSpan |
48 hours | Yes |
DefaultLockLeaseDuration |
TimeSpan |
30 seconds | Yes (global; read from the default options) |
DiagnosticsCacheTtl |
TimeSpan |
5 seconds | Yes |
DigestCoalescingWindowMs |
int |
5 (measured sweet spot) | Yes (on each leaf's next activation) |
DigestPublishTimeout |
TimeSpan |
15 seconds | Yes (on each node's next activation) |
DirtyLeafFlushIntervalMs |
int |
50 (ms) | Yes |
EventStreamProviderName |
string |
"Default" |
Yes (on next publish) |
HotShardConsolidationSkewRatio |
double |
1.15 | Yes |
HotShardMinShardEntries |
int |
1024 | Yes |
HotShardMinSkewRatio |
double |
1.5 | Yes |
HotShardOpsPerSecondThreshold |
int |
200 | Yes |
HotShardSampleInterval |
TimeSpan |
30 seconds | Yes |
HotShardSplitCooldown |
TimeSpan |
2 minutes | Yes |
KeysPageSize |
int |
512 | Yes |
LeafAccessModelFlushIntervalMs |
int |
30000 (ms) | Yes (on next activation) |
LeafCachePreWarmCount |
int |
8 (enabled) | Yes (on next activation) |
LeafHydrationResidentBytes |
long |
1 MiB | Yes (on next activation) |
LeafPartialHydrationEnabled |
bool |
true |
Yes (on next activation) |
LeafProjectionRetention |
TimeSpan |
7 days | Yes |
LeafRetirementRetryDeadline |
TimeSpan |
2 seconds | Yes |
LeafSnapshotBinaryEncodingEnabled |
bool |
true |
Yes (write side only; reads are always dual) |
LeafSnapshotMargin |
double |
0.30 | Yes |
LeafSnapshotMaxCoverageLagSeconds |
int |
300 | Yes |
LeafSnapshotReClassifyEveryNCheckpoints |
int |
64 | Yes |
LeafSnapshotSegmentBytes |
long |
4 MiB | Yes (next capture; set it globally - see below) |
MaintainProjectionDigest |
bool |
true |
Yes |
MaterialiserCheckpointEntries |
int |
5000 | Yes |
MaterialiserCheckpointInterval |
TimeSpan |
5 seconds | Yes |
MaxAtomicActionArgsBytes |
int |
32 KiB (32 768) | Yes (global; read from the default options) |
MaxAtomicActionSteps |
int |
64 | Yes (global; read from the default options) |
MaxCacheValueBytes |
long? |
null (unbounded mirror) |
Yes |
MaxConcurrentAutoSplits |
int |
2 | Yes |
MaxClusterConcurrentAutoSplits |
int? |
null (gate disabled) |
Yes |
MaxConcurrentDrains |
int |
4 | Yes |
MaxConcurrentMigrations |
int |
4 | Yes |
MaxConcurrentShardConsolidations |
int |
1 | Yes |
MaxConcurrentSnapshotBaselineFolds |
int |
4 | Yes |
MaxConcurrentSnapshotCaptures |
int |
4 | Yes |
MaxConcurrentStorageUsageSurfaces |
int |
16 | Yes |
MaxConcurrentStorageUsageTrees |
int |
8 | Yes (cluster-wide; read from the default options) |
MaxCursorSnapshotPinTtl |
TimeSpan |
7 days | Yes |
MaxDurableUnresolvedReplayWork |
int |
1 024 | Yes |
MaxEstimatedBytes |
long? |
null (unbounded) |
Yes |
MaxKeyLength |
int? |
null (unbounded) |
Yes |
MaxLeafBytes |
long |
64 MiB | Yes (on next activation) |
MaxLeafEntriesBeforeForcedCompaction |
int |
0 (disabled) | Yes |
MaxLeafReplayEntries |
int |
10 000 | Yes |
MaxLiveKeys |
long? |
null (unbounded) |
Yes |
MaxLockLeaseDuration |
TimeSpan |
5 minutes | Yes (global; read from the default options) |
MaxLeavesPerScanPage |
int |
64 | Yes |
MaxPhysicalShardsPerTree |
int |
256 | Yes |
MaxPinnedSagaDecisions |
int |
100 000 | Yes |
MaxScanPageDuration |
TimeSpan |
5 seconds | Yes |
MaxScanPageStallDuration |
TimeSpan? |
null (derived from ResponseTimeout) |
Yes |
MaxScanRetries |
int |
3 | Yes |
MaxSnapshotReplayEntries |
long |
10 000 000 | Yes |
MaxValueSizeBytes |
int? |
null (unbounded) |
Yes |
MinTombstoneRatioForCompaction |
double |
0.0 (disabled) | Yes |
OptimisticShardRootPointReads |
bool |
true |
Yes (on next activation) |
PrefetchEntriesScan |
bool |
false |
Yes |
PrefetchKeysScan |
bool |
false |
Yes |
ProjectionRebuildPolicy |
ProjectionRebuildPolicy |
SnapshotThenWal |
Yes |
PublishEvents |
bool |
false |
Yes |
QueueCapacity |
int? |
null (unbounded) |
Yes |
RetryPolicy |
ILatticeRetryPolicy? |
null (no retry) |
Yes |
ShardForwardTimeout |
TimeSpan |
15 seconds | Yes (on each shard root's next activation) |
ShardHealingBackpressureOpsPerSecond |
double |
200.0 | Yes (on next sweep) |
ShardHealingCooldown |
TimeSpan |
5 minutes | Yes (on next sweep) |
ShardHealingEnabled |
bool |
true |
Yes (off on next sweep; on at the next sweep or keepalive tick, or at the next healing bootstrap if healing never started) |
ShardHealingInterval |
TimeSpan |
30 seconds | Yes (on next activation) |
EmptyTreeProbeBudget |
TimeSpan |
10 seconds | Yes (on next reshard or resize) |
ShedSnapshotOpensWhenSaturated |
bool |
true |
Yes |
SnapshotBaselineTtl |
TimeSpan |
6 hours | Yes |
SnapshotLeafIdleTtl |
TimeSpan |
30 minutes | Yes (currently inert: no code path reads it) |
SoftDeleteDuration |
TimeSpan |
72 hours | Yes |
SplitDrainBatchSize |
int |
1024 | Yes |
StarvationDriveBudget |
TimeSpan |
5 minutes | Yes (on each leaf's next activation) |
StorageUsageCacheTtl |
TimeSpan |
10 seconds | Yes |
StorageUsagePollInterval |
TimeSpan |
15 seconds | Yes (global; read once when each silo's poller starts) |
StorageUsageDeepPollInterval |
TimeSpan |
TimeSpan.Zero (disabled) |
Yes (global; read once when each silo's poller starts) |
StorageUsageRollupBudget |
TimeSpan |
20 seconds | Yes (cluster-wide; read from the default options) |
TombstoneGracePeriod |
TimeSpan |
24 hours | Yes |
TxDecisionRetention |
TimeSpan |
60 seconds | Yes |
TxRegistryAdmissionBudgetBytes |
long? |
768 KiB | Yes |
TxRegistryShardCount |
int |
1 | Yes (global; read from the default options; see the opt-in note) |
VersionVectorRetention |
TimeSpan |
InfiniteTimeSpan (disabled) |
Yes |
WalAppendDispatchTimeout |
TimeSpan |
30 seconds | Yes |
WalBytePressureReclaimTarget |
double |
0.8 | Yes |
WalDrainBudget |
TimeSpan |
75 seconds | Yes |
WalMaxBatchBytes |
long |
4 MiB | Yes |
WalMaxBatchEntries |
int |
100 | Yes |
WalFlushPreflightTimeout |
TimeSpan |
5 seconds | Yes |
WalFlushTimeout |
TimeSpan |
15 seconds | Yes |
WalGcInterval |
TimeSpan |
1 hour (band ceiling) | Yes (global; read once when the scheduler starts) |
WalGcMinInterval |
TimeSpan |
30 seconds (band floor) | Yes (global; read once when the scheduler starts) |
WalGcStartupDelay |
TimeSpan |
30 seconds | Yes (global; read once when the scheduler starts) |
WalMaterialiserMaxConcurrentReplays |
int |
0 (auto = the lesser of Environment.ProcessorCount and the container CPU grant) |
Yes (on next silo start; set it globally - see below) |
WalMaterialiserPinFlushIntervalMs |
int |
250 | Yes (global; read from the default options) |
WalMaterialiserPinBuckets |
int |
1 (floor; the store splits itself above it) | Yes (global; read from the default options; see the rolling-upgrade note) |
WalMaterialiserPinShards |
int |
8 | No (durable-store migration; see below) |
WalMaterialiserPinShedCeiling |
TimeSpan? |
null (disarmed) |
Yes (global; read from the default options) |
WalMaxPendingBatches |
int |
16 | Yes |
WalAppendCoalescingInFlightThreshold |
int |
4 | Yes |
WalBatchedSingleEntryAppends |
bool |
true |
Yes |
WalMaxRetainedBytes |
long? |
null (disabled) |
Yes |
WalDurabilityHoldCeilingBytes |
long? |
256 MiB | Yes |
WalPartitions |
int |
8 | No (per-tree, pinned at first registration) |
WalRetention |
TimeSpan? |
null (disabled) |
Yes |
WalReplayPermitQueueDepthPerPermit |
int |
4 | Yes |
WalReplayPermitMaxQueueWait |
TimeSpan |
5 seconds | Yes |
WalReplayMaxRecordsPerTurn |
int |
256 | Yes |
WalReplaySliceBudget |
int |
256 | Yes |
WalSaturationAcuteOnly |
bool |
true |
Yes (set it globally - see below) |
WalSaturationDispatchTimeoutThreshold |
int |
1 | Yes (global; read from the default options) |
WalSaturationFlushLatencySampleWindows |
int |
3 | Yes (global; read from the default options) |
WalSaturationFlushLatencyThreshold |
TimeSpan? |
null (disabled) |
Yes (the classifier reads the default options; a per-tree value sets only that tree's trip threshold - see below) |
WalSaturationMaterialiserLagSampleWindows |
int |
3 | Yes (global; read from the default options) |
WalSaturationMaterialiserLagThreshold |
TimeSpan? |
30 seconds | Yes (global; read from the default options) |
WalDrainLagConsumerFreshness |
TimeSpan |
5 minutes | Yes (global; read from the default options) |
WalDrainLagHolderLogInterval |
TimeSpan? |
10 minutes | Yes (global; read from the default options) |
WalSaturationMaterialiserPinLatencySampleWindows |
int |
3 | Yes (global; read from the default options) |
WalSaturationMaterialiserPinLatencyThreshold |
TimeSpan? |
null (disabled) |
Yes (global; read from the default options) |
WalSaturationProviderFailureRateThreshold |
int |
1 | Yes (global; read from the default options) |
WalSaturationRecoveryWindow |
TimeSpan |
1 second | Yes (global; read from the default options) |
WalSaturationRecoveryReleaseBatch |
int |
16 | Yes (global; read from the default options) |
WalSaturationSampleInterval |
TimeSpan |
200 milliseconds | Yes (global; read once at silo start) |
WalSaturationThrottledRatio |
double |
0.75 | Yes (global; read from the default options) |
WalAdmissionSaturationWaitBudget |
TimeSpan |
5 seconds | Yes |
SetManyFanOutBudget |
TimeSpan |
Timeout.InfiniteTimeSpan (unbounded) |
Yes |
SetManyEnvelopeBudget |
TimeSpan |
Timeout.InfiniteTimeSpan (unbounded) |
Yes |
WalAdmissionSaturationCallBudget |
TimeSpan |
Timeout.InfiniteTimeSpan (unbounded) |
Yes |
WalThrottledAdmissionPace |
TimeSpan |
25 milliseconds | Yes |
WalStorageProvider |
Func<string, IWalStorageProvider>? |
null (DI default) |
Yes |