func()

in store/engine/raft/store.go [74:98]


func (ds *DataStore) loadSnapshotFromDisk() (*raftpb.Snapshot, error) {
	if !fileutil.Exist(ds.snapshotDir) {
		if err := os.MkdirAll(ds.snapshotDir, 0750); err != nil {
			return nil, err
		}
	}

	emptySnapshot := &raftpb.Snapshot{}
	if !ds.walExists() {
		return emptySnapshot, nil
	}

	snapshots, err := wal.ValidSnapshotEntries(logger.Get(), ds.walDir)
	if err != nil {
		return nil, err
	}
	latestSnapshot, err := ds.snapshotter.LoadNewestAvailable(snapshots)
	if err != nil {
		if errors.Is(err, snap.ErrNoSnapshot) {
			return emptySnapshot, nil
		}
		return nil, err
	}
	return latestSnapshot, nil
}