SQLite has a query timeout. Hopefully fixes most 'database locked' errors (#1961)
* SQLite has a query timeout. Fixes 'database locked' errors
This commit is contained in:
		
					parent
					
						
							
								31b5e9177f
							
						
					
				
			
			
				commit
				
					
						bf48c8ebdd
					
				
			
		
					 2 changed files with 5 additions and 1 deletions
				
			
		
							
								
								
									
										2
									
								
								conf/app.ini
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								conf/app.ini
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -166,6 +166,8 @@ PASSWD =
 | 
				
			||||||
SSL_MODE = disable
 | 
					SSL_MODE = disable
 | 
				
			||||||
; For "sqlite3" and "tidb", use absolute path when you start as service
 | 
					; For "sqlite3" and "tidb", use absolute path when you start as service
 | 
				
			||||||
PATH = data/gitea.db
 | 
					PATH = data/gitea.db
 | 
				
			||||||
 | 
					; For "sqlite3" only. Query timeout
 | 
				
			||||||
 | 
					SQLITE_TIMEOUT = 500
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[indexer]
 | 
					[indexer]
 | 
				
			||||||
ISSUE_INDEXER_PATH = indexers/issues.bleve
 | 
					ISSUE_INDEXER_PATH = indexers/issues.bleve
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -66,6 +66,7 @@ var (
 | 
				
			||||||
	// DbCfg holds the database settings
 | 
						// DbCfg holds the database settings
 | 
				
			||||||
	DbCfg struct {
 | 
						DbCfg struct {
 | 
				
			||||||
		Type, Host, Name, User, Passwd, Path, SSLMode string
 | 
							Type, Host, Name, User, Passwd, Path, SSLMode string
 | 
				
			||||||
 | 
							Timeout                                       int
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// EnableSQLite3 use SQLite3
 | 
						// EnableSQLite3 use SQLite3
 | 
				
			||||||
| 
						 | 
					@ -151,6 +152,7 @@ func LoadConfigs() {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	DbCfg.SSLMode = sec.Key("SSL_MODE").String()
 | 
						DbCfg.SSLMode = sec.Key("SSL_MODE").String()
 | 
				
			||||||
	DbCfg.Path = sec.Key("PATH").MustString("data/gitea.db")
 | 
						DbCfg.Path = sec.Key("PATH").MustString("data/gitea.db")
 | 
				
			||||||
 | 
						DbCfg.Timeout = sec.Key("SQLITE_TIMEOUT").MustInt(500)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sec = setting.Cfg.Section("indexer")
 | 
						sec = setting.Cfg.Section("indexer")
 | 
				
			||||||
	setting.Indexer.IssuePath = sec.Key("ISSUE_INDEXER_PATH").MustString("indexers/issues.bleve")
 | 
						setting.Indexer.IssuePath = sec.Key("ISSUE_INDEXER_PATH").MustString("indexers/issues.bleve")
 | 
				
			||||||
| 
						 | 
					@ -220,7 +222,7 @@ func getEngine() (*xorm.Engine, error) {
 | 
				
			||||||
		if err := os.MkdirAll(path.Dir(DbCfg.Path), os.ModePerm); err != nil {
 | 
							if err := os.MkdirAll(path.Dir(DbCfg.Path), os.ModePerm); err != nil {
 | 
				
			||||||
			return nil, fmt.Errorf("Failed to create directories: %v", err)
 | 
								return nil, fmt.Errorf("Failed to create directories: %v", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		connStr = "file:" + DbCfg.Path + "?cache=shared&mode=rwc"
 | 
							connStr = fmt.Sprintf("file:%s?cache=shared&mode=rwc&_busy_timeout=%d", DbCfg.Path, DbCfg.Timeout)
 | 
				
			||||||
	case "tidb":
 | 
						case "tidb":
 | 
				
			||||||
		if !EnableTiDB {
 | 
							if !EnableTiDB {
 | 
				
			||||||
			return nil, errors.New("this binary version does not build support for TiDB")
 | 
								return nil, errors.New("this binary version does not build support for TiDB")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue