Fix sql-preprocessor leading to deadlocks in parallel requests

This commit is contained in:
2022-12-22 16:51:04 +01:00
parent 0112d681ac
commit 984470b47d
3 changed files with 94 additions and 63 deletions

View File

@@ -17,6 +17,7 @@ import (
type Database struct {
db sq.DB
pp *dbtools.DBPreprocessor
}
func NewDatabase(conf server.Config) (*Database, error) {
@@ -38,11 +39,16 @@ func NewDatabase(conf server.Config) (*Database, error) {
qqdb := sq.NewDB(xdb)
scndb := &Database{qqdb}
qqdb.AddListener(dbtools.DBLogger{})
qqdb.AddListener(dbtools.NewDBPreprocessor(scndb.db))
pp, err := dbtools.NewDBPreprocessor(qqdb)
if err != nil {
return nil, err
}
qqdb.AddListener(pp)
scndb := &Database{db: qqdb, pp: pp}
return scndb, nil
}
@@ -64,6 +70,11 @@ func (db *Database) Migrate(ctx context.Context) error {
return err
}
err = db.pp.Init(ctx)
if err != nil {
return err
}
return nil
} else if currschema == 1 {