func (s *GoLevelDBStore) open() error { var err error s.first = InvalidLogID s.last = InvalidLogID s.db, err = store.Open(s.cfg) return err }
func Open(cfg *config.Config) (*Ledis, error) { if len(cfg.DataDir) == 0 { cfg.DataDir = config.DefaultDataDir } if cfg.Databases == 0 { cfg.Databases = 16 } else if cfg.Databases > MaxDatabases { cfg.Databases = MaxDatabases } os.MkdirAll(cfg.DataDir, 0755) var err error l := new(Ledis) l.cfg = cfg if l.lock, err = filelock.Lock(path.Join(cfg.DataDir, "LOCK")); err != nil { return nil, err } l.quit = make(chan struct{}) if l.ldb, err = store.Open(cfg); err != nil { return nil, err } if cfg.UseReplication { if l.r, err = rpl.NewReplication(cfg); err != nil { return nil, err } l.rc = make(chan struct{}, 1) l.rbatch = l.ldb.NewWriteBatch() l.rDoneCh = make(chan struct{}, 1) l.wg.Add(1) go l.onReplication() //first we must try wait all replication ok //maybe some logs are not committed l.WaitReplication() } else { l.r = nil } l.dbs = make(map[int]*DB, 16) l.checkTTL() return l, nil }