ソースを参照

Fix SQLite concurrency problems by using BEGIN IMMEDIATE (#10368)

* Test locking immediate for SQLite3

* fix url field separator

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: zeripath <art27@cantab.net>
tags/v1.10.5
guillep2k 4年前
コミット
4a2d23981d
コミッターのメールアドレスに関連付けられたアカウントが存在しません

+ 1
- 1
integrations/migration-test/migration_test.go ファイルの表示

err := os.MkdirAll(path.Dir(setting.Database.Path), os.ModePerm) err := os.MkdirAll(path.Dir(setting.Database.Path), os.ModePerm)
assert.NoError(t, err) assert.NoError(t, err)


db, err := sql.Open("sqlite3", fmt.Sprintf("file:%s?cache=shared&mode=rwc&_busy_timeout=%d", setting.Database.Path, setting.Database.Timeout))
db, err := sql.Open("sqlite3", fmt.Sprintf("file:%s?cache=shared&mode=rwc&_busy_timeout=%d&_txlock=immediate", setting.Database.Path, setting.Database.Timeout))
assert.NoError(t, err) assert.NoError(t, err)
defer db.Close() defer db.Close()



+ 1
- 1
models/unit_tests.go ファイルの表示

// CreateTestEngine creates a memory database and loads the fixture data from fixturesDir // CreateTestEngine creates a memory database and loads the fixture data from fixturesDir
func CreateTestEngine(fixturesDir string) error { func CreateTestEngine(fixturesDir string) error {
var err error var err error
x, err = xorm.NewEngine("sqlite3", "file::memory:?cache=shared")
x, err = xorm.NewEngine("sqlite3", "file::memory:?cache=shared&_txlock=immediate")
if err != nil { if err != nil {
return err return err
} }

+ 1
- 1
modules/setting/database.go ファイルの表示

if err := os.MkdirAll(path.Dir(Database.Path), os.ModePerm); err != nil { if err := os.MkdirAll(path.Dir(Database.Path), os.ModePerm); err != nil {
return "", fmt.Errorf("Failed to create directories: %v", err) return "", fmt.Errorf("Failed to create directories: %v", err)
} }
connStr = fmt.Sprintf("file:%s?cache=shared&mode=rwc&_busy_timeout=%d", Database.Path, Database.Timeout)
connStr = fmt.Sprintf("file:%s?cache=shared&mode=rwc&_busy_timeout=%d&_txlock=immediate", Database.Path, Database.Timeout)
default: default:
return "", fmt.Errorf("Unknown database type: %s", Database.Type) return "", fmt.Errorf("Unknown database type: %s", Database.Type)
} }

読み込み中…
キャンセル
保存