]> source.dussan.org Git - gitea.git/commitdiff
Fix SQLite concurrency problems by using BEGIN IMMEDIATE (#10368) (#10493)
authorguillep2k <18600385+guillep2k@users.noreply.github.com>
Thu, 27 Feb 2020 02:30:57 +0000 (23:30 -0300)
committerGitHub <noreply@github.com>
Thu, 27 Feb 2020 02:30:57 +0000 (23:30 -0300)
integrations/migration-test/migration_test.go
models/unit_tests.go
modules/setting/database.go

index c274d482da1477233e2e4100438c7e9304b5678e..00f38fb127db43f429caa7a864d66689f6fdb3cc 100644 (file)
@@ -126,7 +126,7 @@ func restoreOldDB(t *testing.T, version string) bool {
                err := os.MkdirAll(path.Dir(setting.Database.Path), os.ModePerm)
                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)
                defer db.Close()
 
index eb4da37fe5132b0c91d29f4250975897596285d3..dccb8db838d4ded5293ce5e88d65de4fbf6a8c5c 100644 (file)
@@ -84,7 +84,7 @@ func MainTest(m *testing.M, pathToGiteaRoot string) {
 
 func createTestEngine(fixturesDir string) 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 {
                return err
        }
index 8c49ba3c5a179d15abc6b3b5174bf968bb77fe1b..b01dd647a1c37b43462d8318019abae015e58ccd 100644 (file)
@@ -124,7 +124,7 @@ func DBConnStr() (string, error) {
                if err := os.MkdirAll(path.Dir(Database.Path), os.ModePerm); err != nil {
                        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:
                return "", fmt.Errorf("Unknown database type: %s", Database.Type)
        }