You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Right now, to commit a new version of a dataset the client must construct a Manifest correctly. This is a bit dangerous as serious issues could be caused by not constructing this correctly. In addition, manifests aren't easy to use to do conflict resolution on transactions.
We should switch to an API around transactions, that allow committing a transaction to a dataset, rather than a completely constructed state.
Then to commit a transaction, you could call either:
implDataset{/// Commit a transaction to an existing tablepubasyncfncommit(&mutself,transaction:Transaction,retry_config:RetryConfig,) -> Result<()>{ ...}/// Commit a new tablepubasyncfncommit_new(transaction:Transaction) -> Result<Self>{ ...}}
These methods could perform validation to make sure the transaction is correct, and can construct a valid manifest based on the state of the table. If a concurrent transaction beats the commit, then it could attempt to rebuild the manifest to create the next transaction, if that is allowed by conflict resolution algorithms.
The text was updated successfully, but these errors were encountered:
Right now, to commit a new version of a dataset the client must construct a Manifest correctly. This is a bit dangerous as serious issues could be caused by not constructing this correctly. In addition, manifests aren't easy to use to do conflict resolution on transactions.
We should switch to an API around transactions, that allow committing a transaction to a dataset, rather than a completely constructed state.
There could be a struct:
Then to commit a transaction, you could call either:
These methods could perform validation to make sure the transaction is correct, and can construct a valid manifest based on the state of the table. If a concurrent transaction beats the commit, then it could attempt to rebuild the manifest to create the next transaction, if that is allowed by conflict resolution algorithms.
The text was updated successfully, but these errors were encountered: