Skip to content

Latest commit

 

History

History
22 lines (20 loc) · 19.4 KB

metadata.md

File metadata and controls

22 lines (20 loc) · 19.4 KB

METADATA

Below is a table containing all the details for the property group: Metadata

Property Name Description Default Value Run CdkDeploy When Changed
sleeper.table.statestore.classname The name of the class used for the state store. The default is DynamoDBTransactionLogStateStore. Options are:
sleeper.statestore.transactionlog.DynamoDBTransactionLogStateStore
sleeper.statestore.transactionlog.DynamoDBTransactionLogStateStoreNoSnapshots
sleeper.statestore.transactionlog.DynamoDBTransactionLogStateStore false
sleeper.table.statestore.commit.async.enabled Overrides whether or not to apply state store updates asynchronously via the state store committer. Usually this is decided based on the state store implementation used by the Sleeper table, but other default behaviour can be set for the Sleeper instance.
This is separate from the properties that determine which state store updates will be done as asynchronous commits. Those properties will only be applied when asynchronous commits are enabled.
false
sleeper.table.statestore.committer.update.every.commit When using the transaction log state store, this sets whether to update from the transaction log before adding a transaction in the asynchronous state store committer.
If asynchronous commits are used for all or almost all state store updates, this can be false to avoid the extra queries.
If the state store is commonly updated directly outside of the asynchronous committer, this can be true to avoid conflicts and retries.
false false
sleeper.table.statestore.committer.update.every.batch When using the transaction log state store, this sets whether to update from the transaction log before adding a batch of transactions in the asynchronous state store committer. true false
sleeper.table.statestore.transactionlog.add.transaction.max.attempts The number of attempts to make when applying a transaction to the state store. 10 false
sleeper.table.statestore.transactionlog.add.transaction.first.retry.wait.ceiling.ms The maximum amount of time to wait before the first retry when applying a transaction to the state store. Full jitter will be applied so that the actual wait time will be a random period between 0 and this value. This ceiling will increase exponentially on further retries. See the below article.
https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/
200 false
sleeper.table.statestore.transactionlog.add.transaction.max.retry.wait.ceiling.ms The maximum amount of time to wait before any retry when applying a transaction to the state store. Full jitter will be applied so that the actual wait time will be a random period between 0 and this value. This restricts the exponential increase of the wait ceiling while retrying the transaction. See the below article.
https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/
30000 false
sleeper.table.statestore.transactionlog.files.snapshot.batch.size The number of elements to include per Arrow record batch in a snapshot derived from the transaction log, of the state of files in a Sleeper table. Each file includes some number of references on different partitions. Each reference will count for one element in a record batch, but a file cannot currently be split between record batches. A record batch may contain more file references than this if a single file overflows the batch. A file with no references counts as one element. 1000 false
sleeper.table.statestore.transactionlog.partitions.snapshot.batch.size The number of partitions to include per Arrow record batch in a snapshot derived from the transaction log, of the state of partitions in a Sleeper table. 1000 false
sleeper.table.statestore.transactionlog.time.between.snapshot.checks.seconds The number of seconds to wait after we've loaded a snapshot before looking for a new snapshot. This should relate to the rate at which new snapshots are created, configured in the instance property sleeper.statestore.transactionlog.snapshot.creation.lambda.period.seconds. 60 false
sleeper.table.statestore.transactionlog.time.between.transaction.checks.ms The number of milliseconds to wait after we've updated from the transaction log before checking for new transactions. The state visible to an instance of the state store can be out of date by this amount. This can avoid excessive queries by the same process, but can result in unwanted behaviour when using multiple state store objects. When adding a new transaction to update the state, this will be ignored and the state will be brought completely up to date. 0 false
sleeper.table.statestore.transactionlog.snapshot.load.min.transactions.ahead The minimum number of transactions that a snapshot must be ahead of the local state, before we load the snapshot instead of updating from the transaction log. 10 false
sleeper.table.statestore.transactionlog.snapshot.expiry.days The number of days that transaction log snapshots remain in the snapshot store before being deleted. 2 false
sleeper.table.statestore.transactionlog.delete.behind.snapshot.min.age.minutes The minimum age in minutes of a snapshot in order to allow deletion of transactions leading up to it. When deleting old transactions, there's a chance that processes may still read transactions starting from an older snapshot. We need to avoid deletion of any transactions associated with a snapshot that may still be used as the starting point for reading the log. 2 false
sleeper.table.statestore.transactionlog.delete.number.behind.latest.snapshot The minimum number of transactions that a transaction must be behind the latest snapshot before being deleted. This is the number of transactions that will be kept and protected from deletion, whenever old transactions are deleted. This includes the transaction that the latest snapshot was created against. Any transactions after the snapshot will never be deleted as they are still in active use.
This should be configured in relation to the property which determines whether a process will load the latest snapshot or instead seek through the transaction log, since we need to preserve transactions that may still be read:
sleeper.table.statestore.snapshot.load.min.transactions.ahead
The snapshot that will be considered the latest snapshot is configured by a property to set the minimum age for it to count for this:
sleeper.table.statestore.transactionlog.delete.behind.snapshot.min.age
200 false
sleeper.table.statestore.dynamo.consistent.reads This specifies whether queries and scans against DynamoDB tables used in the state stores are strongly consistent. false false