debug `readBundleRefs`

This commit is contained in:
Snail 2024-11-15 11:31:14 +04:00 committed by voidlizard
parent 3c1ad164af
commit d0010f1994
2 changed files with 16 additions and 12 deletions

View File

@ -22,6 +22,15 @@ import HBS2.Data.Types.Refs
import HBS2.Hash import HBS2.Hash
import HBS2.Merkle import HBS2.Merkle
walkMerkleDem
:: forall a m
. (Serialise (MTree a), Serialise (MTreeAnn a), Serialise a, Monad m)
=> Hash HbSync
-> (Hash HbSync -> m (Maybe BSL.ByteString))
-> (Either WalkMerkleError a -> m ())
-> m ()
walkMerkleDem h flookup sink = walkMerkleV2 flookup sink h
walkMerkleV2 walkMerkleV2
:: forall a m :: forall a m
. (Serialise (MTree a), Serialise (MTreeAnn a), Serialise a, Monad m) . (Serialise (MTree a), Serialise (MTreeAnn a), Serialise a, Monad m)

View File

@ -20,6 +20,7 @@ import HBS2.Git.Data.GK
import HBS2.Git.Data.RepoHead import HBS2.Git.Data.RepoHead
import HBS2.Git.Local import HBS2.Git.Local
import HBS2.Merkle.Walk
import Data.Maybe import Data.Maybe
@ -267,18 +268,12 @@ readBundleRefs :: (MonadIO m)
-> m (Either [HashRef] [HashRef]) -> m (Either [HashRef] [HashRef])
readBundleRefs sto bunh = do readBundleRefs sto bunh = do
r <- S.toList_ $ (hs S.:> er) <- S.toList $ streamMerkle @HashRef (getBlock sto) (fromHashRef bunh)
walkMerkle @[HashRef] (fromHashRef bunh) (getBlock sto) $ \case case er of
Left h -> S.yield (Left h) Left wme -> case wme of
Right ( bundles :: [HashRef] ) -> do MerkleHashNotFound h -> pure (Left [HashRef h])
mapM_ (S.yield . Right) bundles MerkleDeserialiseFailure h _ -> pure (Left [HashRef h])
Right () -> pure (Right hs)
let missed = lefts r
if not (null missed) then do
pure (Left (fmap HashRef missed))
else do
pure (Right $ rights r)
type GitPack = LBS.ByteString type GitPack = LBS.ByteString