mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Fix sqlite3 test (#32622)
This commit is contained in:
		| @@ -144,6 +144,18 @@ func TestAPICreateIssue(t *testing.T) { | |||||||
|  |  | ||||||
| func TestAPICreateIssueParallel(t *testing.T) { | func TestAPICreateIssueParallel(t *testing.T) { | ||||||
| 	defer tests.PrepareTestEnv(t)() | 	defer tests.PrepareTestEnv(t)() | ||||||
|  |  | ||||||
|  | 	// FIXME: There seems to be a bug in github.com/mattn/go-sqlite3 with sqlite_unlock_notify, when doing concurrent writes to the same database, | ||||||
|  | 	// some requests may get stuck in "go-sqlite3.(*SQLiteRows).Next", "go-sqlite3.(*SQLiteStmt).exec" and "go-sqlite3.unlock_notify_wait", | ||||||
|  | 	// because the "unlock_notify_wait" never returns and the internal lock never gets releases. | ||||||
|  | 	// | ||||||
|  | 	// The trigger is: a previous test created issues and made the real issue indexer queue start processing, then this test does concurrent writing. | ||||||
|  | 	// Adding this "Sleep" makes go-sqlite3 "finish" some internal operations before concurrent writes and then won't get stuck. | ||||||
|  | 	// To reproduce: make a new test run these 2 tests enough times: | ||||||
|  | 	// > func TestBug() { for i := 0; i < 100; i++ { testAPICreateIssue(t); testAPICreateIssueParallel(t) } } | ||||||
|  | 	// Usually the test gets stuck in fewer than 10 iterations without this "sleep". | ||||||
|  | 	time.Sleep(time.Second) | ||||||
|  |  | ||||||
| 	const body, title = "apiTestBody", "apiTestTitle" | 	const body, title = "apiTestBody", "apiTestTitle" | ||||||
|  |  | ||||||
| 	repoBefore := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | 	repoBefore := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user