mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-11-04 10:01:05 +01:00 
			
		
		
		
	make configurable wal auto checkpoint (#2242)
This commit is contained in:
		
							parent
							
								
									dc17b4d378
								
							
						
					
					
						commit
						64bb56352f
					
				@ -168,6 +168,11 @@ database:
 | 
			
		||||
    # https://www.sqlite.org/wal.html
 | 
			
		||||
    write_ahead_log: true
 | 
			
		||||
 | 
			
		||||
    # Maximum number of WAL file frames before the WAL file is automatically checkpointed.
 | 
			
		||||
    # https://www.sqlite.org/c3ref/wal_autocheckpoint.html
 | 
			
		||||
    # Set to 0 to disable automatic checkpointing.
 | 
			
		||||
    wal_autocheckpoint: 1000
 | 
			
		||||
 | 
			
		||||
  # # Postgres config
 | 
			
		||||
  # Please note that using Postgres is highly discouraged as it is only supported for legacy reasons.
 | 
			
		||||
  # See database.type for more information.
 | 
			
		||||
 | 
			
		||||
@ -543,10 +543,10 @@ func openDB(cfg types.DatabaseConfig) (*gorm.DB, error) {
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if cfg.Sqlite.WriteAheadLog {
 | 
			
		||||
			if err := db.Exec(`
 | 
			
		||||
			if err := db.Exec(fmt.Sprintf(`
 | 
			
		||||
				PRAGMA journal_mode=WAL;
 | 
			
		||||
				PRAGMA wal_autocheckpoint=0;
 | 
			
		||||
				`).Error; err != nil {
 | 
			
		||||
				PRAGMA wal_autocheckpoint=%d;
 | 
			
		||||
				`, cfg.Sqlite.WALAutoCheckPoint)).Error; err != nil {
 | 
			
		||||
				return nil, fmt.Errorf("setting WAL mode: %w", err)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@ -105,6 +105,7 @@ type Nameservers struct {
 | 
			
		||||
type SqliteConfig struct {
 | 
			
		||||
	Path              string
 | 
			
		||||
	WriteAheadLog     bool
 | 
			
		||||
	WALAutoCheckPoint int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type PostgresConfig struct {
 | 
			
		||||
@ -271,6 +272,7 @@ func LoadConfig(path string, isFile bool) error {
 | 
			
		||||
	viper.SetDefault("database.postgres.conn_max_idle_time_secs", 3600)
 | 
			
		||||
 | 
			
		||||
	viper.SetDefault("database.sqlite.write_ahead_log", true)
 | 
			
		||||
	viper.SetDefault("database.sqlite.wal_autocheckpoint", 1000) // SQLite default
 | 
			
		||||
 | 
			
		||||
	viper.SetDefault("oidc.scope", []string{oidc.ScopeOpenID, "profile", "email"})
 | 
			
		||||
	viper.SetDefault("oidc.only_start_if_oidc_is_available", true)
 | 
			
		||||
@ -544,6 +546,7 @@ func databaseConfig() DatabaseConfig {
 | 
			
		||||
				viper.GetString("database.sqlite.path"),
 | 
			
		||||
			),
 | 
			
		||||
			WriteAheadLog:     viper.GetBool("database.sqlite.write_ahead_log"),
 | 
			
		||||
			WALAutoCheckPoint: viper.GetInt("database.sqlite.wal_autocheckpoint"),
 | 
			
		||||
		},
 | 
			
		||||
		Postgres: PostgresConfig{
 | 
			
		||||
			Host:               viper.GetString("database.postgres.host"),
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user