diff --git a/kv/raftstore/peer_storage.go b/kv/raftstore/peer_storage.go index aa79b3a2..030b3940 100644 --- a/kv/raftstore/peer_storage.go +++ b/kv/raftstore/peer_storage.go @@ -156,7 +156,9 @@ func (ps *PeerStorage) Snapshot() (eraftpb.Snapshot, error) { if ps.snapState.StateType == snap.SnapState_Generating { select { case s := <-ps.snapState.Receiver: - snapshot = *s + if s != nil { + snapshot = *s + } default: return snapshot, raft.ErrSnapshotTemporarilyUnavailable } diff --git a/kv/raftstore/runner/region_task.go b/kv/raftstore/runner/region_task.go index 4bc3d0d4..8b7e5fb6 100644 --- a/kv/raftstore/runner/region_task.go +++ b/kv/raftstore/runner/region_task.go @@ -82,6 +82,7 @@ func (snapCtx *snapContext) handleGen(regionId uint64, notifier chan<- *eraftpb. snap, err := doSnapshot(snapCtx.engines, snapCtx.mgr, regionId) if err != nil { log.Errorf("failed to generate snapshot!!!, [regionId: %d, err : %v]", regionId, err) + notifier <- nil } else { notifier <- snap }