func (o *Options) acidFiler(db *DB, f lldb.Filer) (r lldb.Filer, err error) { switch o.ACID { default: panic("internal error") case ACIDNone: r = f case ACIDTransactions: var rf *lldb.RollbackFiler if rf, err = lldb.NewRollbackFiler( f, func(sz int64) error { return f.Truncate(sz) }, f, ); err != nil { return } db.xact = true r = rf case ACIDFull: if r, err = lldb.NewACIDFiler(f, o.wal); err != nil { return } db.acidState = stIdle db.gracePeriod = o.GracePeriod db.xact = true if o.GracePeriod == 0 { db.acidState = stDisabled break } // Ensure GOMAXPROCS > 1, required for ACID FSM if n := runtime.GOMAXPROCS(0); n > 1 { return } runtime.GOMAXPROCS(2) } return }