Modify sync transaction behaviour (#2758)

This now uses a transaction per stream, so that errors in one stream
don't propagate to another, and we therefore no longer need to do hacks
to reopen a new transaction after aborting a failed one.
This commit is contained in:
Neil Alexander 2022-10-03 11:38:20 +01:00 committed by GitHub
parent d4710217f8
commit d32f60249d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 155 additions and 91 deletions

View file

@ -29,7 +29,6 @@ import (
type DatabaseTransaction interface {
sqlutil.Transaction
Reset() (err error)
SharedUsers
MaxStreamPositionForPDUs(ctx context.Context) (types.StreamPosition, error)

View file

@ -31,19 +31,6 @@ func (d *DatabaseTransaction) Rollback() error {
return d.txn.Rollback()
}
func (d *DatabaseTransaction) Reset() (err error) {
if d.txn == nil {
return nil
}
if err = d.txn.Rollback(); err != nil {
return err
}
if d.txn, err = d.DB.BeginTx(d.ctx, nil); err != nil {
return err
}
return
}
func (d *DatabaseTransaction) MaxStreamPositionForPDUs(ctx context.Context) (types.StreamPosition, error) {
id, err := d.OutputEvents.SelectMaxEventID(ctx, d.txn)
if err != nil {