Add knob to tweak _busy_timeout
In SQLite3 we may need to set a busy_timeout in the case of instances with high load. This change adds a knob that allows users to set a timeout if a database is locked for writing by another routine. Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
This commit is contained in:
parent
e0e60d42c8
commit
6814b69a09
3 changed files with 19 additions and 2 deletions
|
|
@ -551,7 +551,8 @@ func (d *Database) Validate() error {
|
|||
|
||||
// SQLite is the config entry for the sqlite3 section
|
||||
type SQLite struct {
|
||||
DBFile string `toml:"db_file" json:"db-file"`
|
||||
DBFile string `toml:"db_file" json:"db-file"`
|
||||
BusyTimeoutSeconds int `toml:"busy_timeout_seconds" json:"busy-timeout-seconds"`
|
||||
}
|
||||
|
||||
func (s *SQLite) Validate() error {
|
||||
|
|
@ -571,7 +572,12 @@ func (s *SQLite) Validate() error {
|
|||
}
|
||||
|
||||
func (s *SQLite) ConnectionString() (string, error) {
|
||||
return fmt.Sprintf("%s?_journal_mode=WAL&_foreign_keys=ON", s.DBFile), nil
|
||||
connectionString := fmt.Sprintf("%s?_journal_mode=WAL&_foreign_keys=ON", s.DBFile)
|
||||
if s.BusyTimeoutSeconds > 0 {
|
||||
timeout := s.BusyTimeoutSeconds * 1000
|
||||
connectionString = fmt.Sprintf("%s&_busy_timeout=%d", connectionString, timeout)
|
||||
}
|
||||
return connectionString, nil
|
||||
}
|
||||
|
||||
// MySQL is the config entry for the mysql section
|
||||
|
|
|
|||
|
|
@ -389,6 +389,12 @@ func TestGormParams(t *testing.T) {
|
|||
require.Equal(t, SQLiteBackend, dbType)
|
||||
require.Equal(t, filepath.Join(dir, "garm.db?_journal_mode=WAL&_foreign_keys=ON"), uri)
|
||||
|
||||
cfg.SQLite.BusyTimeoutSeconds = 5
|
||||
dbType, uri, err = cfg.GormParams()
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, SQLiteBackend, dbType)
|
||||
require.Equal(t, filepath.Join(dir, "garm.db?_journal_mode=WAL&_foreign_keys=ON&_busy_timeout=5000"), uri)
|
||||
|
||||
cfg.DbBackend = MySQLBackend
|
||||
cfg.MySQL = getMySQLDefaultConfig()
|
||||
cfg.SQLite = SQLite{}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue