neutrinonotify: persist rescan progress.
Adding persistency to neutrino re-scan progress. In case the re-scan failed in the middle or the node was restarted before the re-scan has been completed this fix will start from the last point instead of the beginning. On long re-scan , such as old channels on mobile devices this is crucial.
This commit is contained in:
parent
901c192e9f
commit
935e7144fb
@ -778,6 +778,18 @@ func (n *NeutrinoNotifier) RegisterSpendNtfn(outpoint *wire.OutPoint,
|
|||||||
neutrino.EndBlock(&headerfs.BlockStamp{
|
neutrino.EndBlock(&headerfs.BlockStamp{
|
||||||
Height: int32(ntfn.HistoricalDispatch.EndHeight),
|
Height: int32(ntfn.HistoricalDispatch.EndHeight),
|
||||||
}),
|
}),
|
||||||
|
neutrino.ProgressHandler(func(processedHeight uint32) {
|
||||||
|
// We persist the rescan progress to achieve incremental
|
||||||
|
// behavior across restarts, otherwise long rescans may
|
||||||
|
// start from the beginning with every restart.
|
||||||
|
err := n.spendHintCache.CommitSpendHint(
|
||||||
|
processedHeight,
|
||||||
|
ntfn.HistoricalDispatch.SpendRequest)
|
||||||
|
if err != nil {
|
||||||
|
chainntnfs.Log.Errorf("Failed to update rescan "+
|
||||||
|
"progress: %v", err)
|
||||||
|
}
|
||||||
|
}),
|
||||||
neutrino.QuitChan(n.quit),
|
neutrino.QuitChan(n.quit),
|
||||||
)
|
)
|
||||||
if err != nil && !strings.Contains(err.Error(), "not found") {
|
if err != nil && !strings.Contains(err.Error(), "not found") {
|
||||||
|
Loading…
Reference in New Issue
Block a user