Entity configuration
[entity]
[entity.batch]
[entity.batch]
chunk_size = 512
large_threshold = 512
prepare_blocking_threshold = 128
max_concurrent_chunks = 4
max_concurrent_chunk_writes = 4
async_side_effect_threshold = 1
The entities one chunk of a large batch holds.
The batch size from which a batch is split into chunks of entity.batch.chunk_size. A smaller batch runs as one.
The batch size from which entities are prepared on the blocking thread pool rather than on the request's own task.
The most chunks of a batch prepared at once.
The most chunks of a batch written to the database at once.
The smallest batch whose notifications and temporal history are deferred to background workers when the client sends Prefer: respond-async; a smaller batch runs them before it is answered. At 1, every batch that sends the preference defers them. A batch without the preference, or one scoped to a Snapshot, always runs them before it is answered.
[entity.side_effects]
Prefer: respond-async batch leaves for a worker.[entity.side_effects]
batch_size = 32
stuck_after_attempts = 5
The most jobs one pass claims. The pass replays them one after another before the worker claims again.
Failed attempts from which a job that keeps failing is reported stuck, logged and counted on each further failure. It is never dropped, since it holds the notifications of a write the broker already accepted, and it keeps being retried, never waiting longer than entity.side_effects.queue.max_retry_interval.
[entity.side_effects.queue]
entity.side_effects.queue.retry_interval up to entity.side_effects.queue.max_retry_interval, however often it fails, and is never dropped.[entity.side_effects.queue]
poll_interval = "1s"
max_poll_interval = "30s"
lease_timeout = "30s"
retry_interval = "2s"
max_retry_interval = "5m"
How soon an idle worker polls again once a commit's wake has been handled: the floor of its idle backoff. A commit in the same broker process wakes the worker at once.
The longest the idle backoff grows to while no commit wakes the worker. Also how soon a job committed by another broker process is picked up.
How long a claim keeps a job from every other worker. A worker that dies leaves its jobs unclaimable for the rest of the term. It is applied in whole seconds, rounded down.
The delay before a failed job's first retry. Each later retry waits twice as long as the one before, up to the longest retry delay.
The longest a retry delay grows to.
[entity.side_effects.retention]
[entity.side_effects.retention]
dead_letter_after = "7days"
sweep_interval = "5m"
How long a job whose stored changes cannot be read back is kept, as a record of a batch whose notifications were never raised. A job that succeeds is removed by its own replay, and one that fails is retried for as long as it fails.
How often dead-lettered jobs older than entity.side_effects.retention.dead_letter_after are removed.
[entity.spatial_index]
[entity.spatial_index]
consistency = "watermark"
rebuild_interval = "30m"
How the index is kept consistent with the database. "commit-synchronous" saves a read per geo query but is exact only when a single broker process writes the database.
How often each tenant's index is rebuilt from the database. The first rebuild runs when the tenant is loaded, and until it completes the database evaluates every geo query. Later rebuilds drop entities deleted since and, under "commit-synchronous", bring in writes from other broker processes.