// makeDB copies the database snapshot to the snapshot directory func makeDB(snapdir, dbfile string) { f, ferr := os.OpenFile(dbfile, os.O_RDONLY, 0600) if ferr != nil { ExitWithError(ExitInvalidInput, ferr) } defer f.Close() if err := os.MkdirAll(snapdir, 0755); err != nil { ExitWithError(ExitIO, err) } dbpath := path.Join(snapdir, "db") db, dberr := os.OpenFile(dbpath, os.O_WRONLY|os.O_CREATE, 0600) if dberr != nil { ExitWithError(ExitIO, dberr) } if _, err := io.Copy(db, f); err != nil { ExitWithError(ExitIO, err) } db.Close() // update consistentIndex so applies go through on etcdserver despite // having a new raft instance be := backend.NewDefaultBackend(dbpath) s := storage.NewStore(be, nil, &initIndex{}) id := s.TxnBegin() btx := be.BatchTx() del := func(k, v []byte) error { _, _, err := s.TxnDeleteRange(id, k, nil) return err } // delete stored members from old cluster since using new members btx.UnsafeForEach([]byte("members"), del) btx.UnsafeForEach([]byte("members_removed"), del) // trigger write-out of new consistent index s.TxnEnd(id) s.Commit() s.Close() }
func initStorage() { s = storage.NewStore("storage-bench", time.Duration(batchInterval), batchLimit) os.Remove("storage-bench") // boltDB has an opened fd, so removing the file is ok }
func initStorage() { be := backend.New("storage-bench", time.Duration(batchInterval), batchLimit) s = storage.NewStore(be, &lease.FakeLessor{}) os.Remove("storage-bench") // boltDB has an opened fd, so removing the file is ok }