From 9c1c3110d8f146bb0e1815e1fe8b5e1023affa6b Mon Sep 17 00:00:00 2001 From: Dmitry Zuikov Date: Thu, 20 Jul 2023 07:51:11 +0300 Subject: [PATCH] ip, log merging, debug-24 --- hbs2-peer/app/RefChan.hs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/hbs2-peer/app/RefChan.hs b/hbs2-peer/app/RefChan.hs index 2f91de22..5c6b5be3 100644 --- a/hbs2-peer/app/RefChan.hs +++ b/hbs2-peer/app/RefChan.hs @@ -400,12 +400,13 @@ logMergeProcess :: forall e s m . ( MonadUnliftIO m , HasStorage m , Signatures s , s ~ Encryption e + , m ~ PeerM e IO ) => RefChanWorkerEnv e -> TQueue (RefChanId e, HashRef) -> m () -logMergeProcess _ q = do +logMergeProcess env q = do sto <- getStorage @@ -473,7 +474,16 @@ logMergeProcess _ q = do -- потом, если всё ок -- пишем accept-ы и propose-ы у которых -- больше quorum подтверждений для актуальной головы - r <- forM (trans <> HashSet.toList current) $ \href -> runMaybeT do + let mergeSet = (HashSet.fromList trans <> current) & HashSet.toList + + -- если какие-то транзакции отсутствуют - пытаемся их скачать + -- и надеемся на лучшее (лог сойдется в следующий раз) + forM_ mergeSet $ \href -> do + here <- liftIO $ hasBlock sto (fromHashRef href) <&> isJust + unless here do + lift $ refChanAddDownload env chan href dontHandle + + r <- forM mergeSet $ \href -> runMaybeT do blk <- MaybeT $ liftIO $ getBlock sto (fromHashRef href)