mirror of
https://github.com/axllent/mailpit.git
synced 2025-06-06 23:36:23 +02:00
Feature: Add configuration to disable SQLite WAL mode for NFS compatibility
This commit is contained in:
parent
784e3de8a1
commit
b827d75c3e
@ -83,6 +83,7 @@ func init() {
|
|||||||
initConfigFromEnv()
|
initConfigFromEnv()
|
||||||
|
|
||||||
rootCmd.Flags().StringVarP(&config.Database, "database", "d", config.Database, "Database to store persistent data")
|
rootCmd.Flags().StringVarP(&config.Database, "database", "d", config.Database, "Database to store persistent data")
|
||||||
|
rootCmd.Flags().BoolVar(&config.DisableWAL, "disable-wal", config.DisableWAL, "Disable WAL for local database (allows NFS mounted DBs)")
|
||||||
rootCmd.Flags().IntVar(&config.Compression, "compression", config.Compression, "Compression level to store raw messages (0-3)")
|
rootCmd.Flags().IntVar(&config.Compression, "compression", config.Compression, "Compression level to store raw messages (0-3)")
|
||||||
rootCmd.Flags().StringVar(&config.Label, "label", config.Label, "Optional label identify this Mailpit instance")
|
rootCmd.Flags().StringVar(&config.Label, "label", config.Label, "Optional label identify this Mailpit instance")
|
||||||
rootCmd.Flags().StringVar(&config.TenantID, "tenant-id", config.TenantID, "Database tenant ID to isolate data")
|
rootCmd.Flags().StringVar(&config.TenantID, "tenant-id", config.TenantID, "Database tenant ID to isolate data")
|
||||||
@ -183,6 +184,8 @@ func initConfigFromEnv() {
|
|||||||
config.Database = os.Getenv("MP_DATABASE")
|
config.Database = os.Getenv("MP_DATABASE")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
config.DisableWAL = getEnabledFromEnv("MP_DISABLE_WAL")
|
||||||
|
|
||||||
if len(os.Getenv("MP_COMPRESSION")) > 0 {
|
if len(os.Getenv("MP_COMPRESSION")) > 0 {
|
||||||
config.Compression, _ = strconv.Atoi(os.Getenv("MP_COMPRESSION"))
|
config.Compression, _ = strconv.Atoi(os.Getenv("MP_COMPRESSION"))
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,10 @@ var (
|
|||||||
// Database for mail (optional)
|
// Database for mail (optional)
|
||||||
Database string
|
Database string
|
||||||
|
|
||||||
|
// DisableWAL will disable Write-Ahead Logging in SQLite
|
||||||
|
// @see https://sqlite.org/wal.html
|
||||||
|
DisableWAL bool
|
||||||
|
|
||||||
// Compression is the compression level used to store raw messages in the database:
|
// Compression is the compression level used to store raw messages in the database:
|
||||||
// 0 = off, 1 = fastest (default), 2 = standard, 3 = best compression
|
// 0 = off, 1 = fastest (default), 2 = standard, 3 = best compression
|
||||||
Compression = 1
|
Compression = 1
|
||||||
|
@ -120,8 +120,13 @@ func InitDB() error {
|
|||||||
db.SetMaxOpenConns(1)
|
db.SetMaxOpenConns(1)
|
||||||
|
|
||||||
if sqlDriver == "sqlite" {
|
if sqlDriver == "sqlite" {
|
||||||
// SQLite performance tuning (https://phiresky.github.io/blog/2020/sqlite-performance-tuning/)
|
if config.DisableWAL {
|
||||||
_, err = db.Exec("PRAGMA journal_mode=WAL; PRAGMA synchronous=NORMAL;")
|
// disable WAL mode for SQLite, allows NFS mounted DBs
|
||||||
|
_, err = db.Exec("PRAGMA journal_mode=DELETE; PRAGMA synchronous=NORMAL;")
|
||||||
|
} else {
|
||||||
|
// SQLite performance tuning (https://phiresky.github.io/blog/2020/sqlite-performance-tuning/)
|
||||||
|
_, err = db.Exec("PRAGMA journal_mode=WAL; PRAGMA synchronous=NORMAL;")
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user