mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 10:44:12 +01:00 
			
		
		
		
	Fix sqlite3 test (#32622)
This commit is contained in:
		
							parent
							
								
									c363bd06e9
								
							
						
					
					
						commit
						5d57c287fb
					
				@ -144,6 +144,18 @@ func TestAPICreateIssue(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
func TestAPICreateIssueParallel(t *testing.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"
 | 
			
		||||
 | 
			
		||||
	repoBefore := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user