mirror of https://github.com/voidlizard/hbs2
bugfix
This commit is contained in:
parent
8969816336
commit
24644ab1df
|
@ -1,5 +1,7 @@
|
||||||
## 2023-10-12
|
## 2023-10-12
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
PR: hbs2-file-logger
|
PR: hbs2-file-logger
|
||||||
branch: fastpok-file-logger
|
branch: fastpok-file-logger
|
||||||
commit: e411e292461179a83a5fc0a0d78f98233c7323f9
|
commit: e411e292461179a83a5fc0a0d78f98233c7323f9
|
||||||
|
|
|
@ -338,7 +338,6 @@ postRefUpdate :: ( MonadIO m
|
||||||
-> m ()
|
-> m ()
|
||||||
|
|
||||||
postRefUpdate ref seqno hash = do
|
postRefUpdate ref seqno hash = do
|
||||||
info $ "refPostUpdate" <+> pretty seqno <+> pretty hash
|
|
||||||
|
|
||||||
cred <- getCredentials ref
|
cred <- getCredentials ref
|
||||||
let pubk = view peerSignPk cred
|
let pubk = view peerSignPk cred
|
||||||
|
|
|
@ -258,7 +258,12 @@ writeLogSegments onProgress repo val objs chunkSize trailing = do
|
||||||
trace $ "PUSH LOG HASH: " <+> pretty logMerkle
|
trace $ "PUSH LOG HASH: " <+> pretty logMerkle
|
||||||
trace $ "POSTING REFERENCE UPDATE TRANSACTION" <+> pretty remote <+> pretty logMerkle
|
trace $ "POSTING REFERENCE UPDATE TRANSACTION" <+> pretty remote <+> pretty logMerkle
|
||||||
|
|
||||||
lift $ postRefUpdate remote 0 logMerkle
|
|
||||||
|
r <- fromMaybe 0 <$> runMaybeT do
|
||||||
|
h <- MaybeT $ readRef remote
|
||||||
|
calcRank h <&> fromIntegral
|
||||||
|
|
||||||
|
lift $ postRefUpdate remote r logMerkle
|
||||||
|
|
||||||
pure logMerkle
|
pure logMerkle
|
||||||
|
|
||||||
|
|
|
@ -168,15 +168,25 @@ importRefLogNew opts ref = runResourceT do
|
||||||
sp0 <- withDB db savepointNew
|
sp0 <- withDB db savepointNew
|
||||||
withDB db $ savepointBegin sp0
|
withDB db $ savepointBegin sp0
|
||||||
|
|
||||||
-- TODO: scan-metadata-transactions-first
|
|
||||||
-- Сканируем транзы, обрабатываем транзакции с метаданными
|
|
||||||
-- Пишем транзакции с журналами, что бы обрабатывались следующим
|
|
||||||
-- проходом только они. Таким образом не меняется сложность.
|
|
||||||
|
|
||||||
decrypt <- lift enumEncryptionKeys
|
decrypt <- lift enumEncryptionKeys
|
||||||
|
|
||||||
debug $ "Decrypt" <> vcat (fmap pretty decrypt)
|
debug $ "Decrypt" <> vcat (fmap pretty decrypt)
|
||||||
|
|
||||||
|
pMeta <- newProgressMonitor [qc|process metadata|] (length entries)
|
||||||
|
|
||||||
|
forM_ entries $ \e -> runMaybeT do
|
||||||
|
let kDone = serialise ("processmetadata", e)
|
||||||
|
|
||||||
|
updateProgress pMeta 1
|
||||||
|
|
||||||
|
-- guard =<< withDB db (not <$> stateGetProcessed kDone)
|
||||||
|
|
||||||
|
rd <- toMPlus =<< parseRef e
|
||||||
|
let (SequentialRef _ (AnnotatedHashRef ann' h)) = rd
|
||||||
|
forM_ ann' (withDB db . importKeysAnnotations ref e)
|
||||||
|
|
||||||
|
-- withDB db $ statePutProcessed kDone
|
||||||
|
|
||||||
-- TODO: exclude-metadata-transactions
|
-- TODO: exclude-metadata-transactions
|
||||||
forM_ entries $ \e -> do
|
forM_ entries $ \e -> do
|
||||||
|
|
||||||
|
@ -191,14 +201,12 @@ importRefLogNew opts ref = runResourceT do
|
||||||
(keyFh, fh) <- allocate (openBinaryFile fpath AppendMode) hClose
|
(keyFh, fh) <- allocate (openBinaryFile fpath AppendMode) hClose
|
||||||
|
|
||||||
runMaybeT $ do
|
runMaybeT $ do
|
||||||
bs <- MaybeT $ lift $ readBlock e
|
|
||||||
refupd <- toMPlus $ deserialiseOrFail @(RefLogUpdate HBS2L4Proto) bs
|
|
||||||
payload <- toMPlus $ deserialiseOrFail (LBS.fromStrict $ view refLogUpdData refupd)
|
|
||||||
|
|
||||||
|
refData <- toMPlus =<< parseRef e
|
||||||
-- NOTE: good-place-to-process-hash-log-update-first
|
-- NOTE: good-place-to-process-hash-log-update-first
|
||||||
let (SequentialRef _ (AnnotatedHashRef ann' h)) = payload
|
let (SequentialRef _ (AnnotatedHashRef ann' h)) = refData
|
||||||
|
|
||||||
forM_ ann' (withDB db . importKeysAnnotations ref e)
|
-- forM_ ann' (withDB db . importKeysAnnotations ref e)
|
||||||
|
|
||||||
trace $ "PUSH LOG HASH" <+> pretty h
|
trace $ "PUSH LOG HASH" <+> pretty h
|
||||||
|
|
||||||
|
@ -356,6 +364,11 @@ importRefLogNew opts ref = runResourceT do
|
||||||
|
|
||||||
where
|
where
|
||||||
|
|
||||||
|
parseRef e = runMaybeT do
|
||||||
|
bs <- MaybeT $ readBlock e
|
||||||
|
refupd <- toMPlus $ deserialiseOrFail @(RefLogUpdate HBS2L4Proto) bs
|
||||||
|
toMPlus $ deserialiseOrFail (LBS.fromStrict $ view refLogUpdData refupd)
|
||||||
|
|
||||||
writeIfNew gitHandle dir h (GitObject tp s) = do
|
writeIfNew gitHandle dir h (GitObject tp s) = do
|
||||||
unless (importDontWriteGit opts) do
|
unless (importDontWriteGit opts) do
|
||||||
let nf = dir </> show (pretty h)
|
let nf = dir </> show (pretty h)
|
||||||
|
|
|
@ -242,10 +242,9 @@ importKeysAnnotations :: forall m . ( MonadIO m
|
||||||
|
|
||||||
importKeysAnnotations repo e href = do
|
importKeysAnnotations repo e href = do
|
||||||
sto <- lift getStorage
|
sto <- lift getStorage
|
||||||
-- db <- makeDbPath repo >>= dbEnv
|
|
||||||
void $ runMaybeT do
|
void $ runMaybeT do
|
||||||
-- liftIO $ hPutDoc stderr $ "GOT ANNOTATION" <+> pretty e <+> pretty href <> line
|
|
||||||
ebs <- runExceptT $ readFromMerkle sto (SimpleKey (fromHashRef href))
|
ebs <- runExceptT $ readFromMerkle sto (SimpleKey (fromHashRef href))
|
||||||
|
|
||||||
bs <- toMPlus ebs
|
bs <- toMPlus ebs
|
||||||
|
|
||||||
anns <- toMPlus $ deserialiseOrFail @Annotations bs
|
anns <- toMPlus $ deserialiseOrFail @Annotations bs
|
||||||
|
@ -257,8 +256,6 @@ importKeysAnnotations repo e href = do
|
||||||
|
|
||||||
forM_ entries $ \(GK1 gk0h gk1) -> do
|
forM_ entries $ \(GK1 gk0h gk1) -> do
|
||||||
|
|
||||||
-- liftIO $ hPutDoc stderr $ "IMPORTING GK1 FOR" <+> pretty gk0h <> line
|
|
||||||
|
|
||||||
forM_ (HashMap.toList (recipients gk1)) $ \(pk,box) -> do
|
forM_ (HashMap.toList (recipients gk1)) $ \(pk,box) -> do
|
||||||
let gk1small = GroupKeySymm @HBS2Basic (HashMap.singleton pk box)
|
let gk1small = GroupKeySymm @HBS2Basic (HashMap.singleton pk box)
|
||||||
lift $ statePutGK1 gk0h pk gk1small
|
lift $ statePutGK1 gk0h pk gk1small
|
||||||
|
|
|
@ -142,7 +142,8 @@ processBlock h = do
|
||||||
|
|
||||||
Just (SeqRef (SequentialRef n (AnnotatedHashRef a' b))) -> do
|
Just (SeqRef (SequentialRef n (AnnotatedHashRef a' b))) -> do
|
||||||
maybe1 a' none $ \a -> do
|
maybe1 a' none $ \a -> do
|
||||||
addDownload parent (fromHashRef a)
|
debug $ "GOT AnnotatedHashRef" <+> pretty a
|
||||||
|
addDownload mzero (fromHashRef a)
|
||||||
|
|
||||||
addDownload parent (fromHashRef b)
|
addDownload parent (fromHashRef b)
|
||||||
|
|
||||||
|
|
|
@ -140,12 +140,14 @@ reflogWorker conf adapter = do
|
||||||
let bss = view refLogUpdData tran
|
let bss = view refLogUpdData tran
|
||||||
let what = tryDetect (hashObject bss) (LBS.fromStrict bss)
|
let what = tryDetect (hashObject bss) (LBS.fromStrict bss)
|
||||||
case what of
|
case what of
|
||||||
SeqRef (SequentialRef _ (AnnotatedHashRef _ ref)) -> do
|
SeqRef (SequentialRef _ (AnnotatedHashRef ann ref)) -> do
|
||||||
liftIO $ reflogDownload adapter (fromHashRef ref)
|
liftIO $ reflogDownload adapter (fromHashRef ref)
|
||||||
|
liftIO $ forM_ ann (reflogDownload adapter . fromHashRef)
|
||||||
|
|
||||||
-- TODO: asap-download-annotation-as-well
|
-- TODO: asap-download-annotation-as-well
|
||||||
AnnRef (AnnotatedHashRef _ ref) -> do
|
AnnRef (AnnotatedHashRef ann ref) -> do
|
||||||
liftIO $ reflogDownload adapter (fromHashRef ref)
|
liftIO $ reflogDownload adapter (fromHashRef ref)
|
||||||
|
liftIO $ forM_ ann (reflogDownload adapter . fromHashRef)
|
||||||
|
|
||||||
-- TODO: support-other-data-structures
|
-- TODO: support-other-data-structures
|
||||||
_ -> pure ()
|
_ -> pure ()
|
||||||
|
|
Loading…
Reference in New Issue