From e33d398c3397be1f959ef3fd36352aac138f9e60 Mon Sep 17 00:00:00 2001 From: vyzo Date: Fri, 21 Aug 2020 20:51:03 +0300 Subject: [PATCH] remove pending local messages from the datastore when clearing the mpool --- chain/messagepool/messagepool.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/chain/messagepool/messagepool.go b/chain/messagepool/messagepool.go index 79590ae86..817641ebe 100644 --- a/chain/messagepool/messagepool.go +++ b/chain/messagepool/messagepool.go @@ -978,6 +978,22 @@ func (mp *MessagePool) Clear() { mp.lk.Lock() defer mp.lk.Unlock() + // remove local messages from the datastore + for a := range mp.localAddrs { + mset, ok := mp.pending[a] + if !ok { + continue + } + + for _, m := range mset.msgs { + err := mp.localMsgs.Delete(datastore.NewKey(string(m.Cid().Bytes()))) + if err != nil { + log.Warnf("error deleting local message: %s", err) + } + } + } + + // clear the maps mp.pending = make(map[address.Address]*msgSet) mp.republished = nil }