From a30656037459b4006ba6ec12bd1cb4e705d04ea8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 27 Jul 2021 17:34:56 -0400 Subject: [PATCH] use SQL.addInodeCaches This avoids deadlock when opening the database handle calls reconcileStaged. --- Database/Keys.hs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Database/Keys.hs b/Database/Keys.hs index d7bd619504..04fef03d2a 100644 --- a/Database/Keys.hs +++ b/Database/Keys.hs @@ -384,10 +384,14 @@ reconcileStaged qh = do ics <- liftIO $ SQL.getInodeCaches key (SQL.ReadHandle qh) obj <- calcRepo (gitAnnexLocation key) mobjic <- withTSDelta (liftIO . genInodeCache obj) + let addinodecaches k v = liftIO $ + SQL.addInodeCaches k v (SQL.WriteHandle qh) -- Like inAnnex, check the annex object is unmodified -- when annex.thin is set. keypopulated <- ifM (annexThin <$> Annex.getGitConfig) - ( maybe (pure False) (\objic -> isUnmodifiedLowLevel addInodeCaches key obj objic ics) mobjic + ( case mobjic of + Just objic -> isUnmodifiedLowLevel addinodecaches key obj objic ics + Nothing -> pure False , pure (isJust mobjic) ) p <- fromRepo $ fromTopFilePath file @@ -396,10 +400,8 @@ reconcileStaged qh = do (True, False) -> populatePointerFile (Restage True) key obj p >>= \case Nothing -> return () - Just ic -> liftIO $ - SQL.addInodeCaches key - (catMaybes [Just ic, mobjic]) - (SQL.WriteHandle qh) + Just ic -> addinodecaches key + (catMaybes [Just ic, mobjic]) (False, True) -> depopulatePointerFile key p _ -> return () -- 2.30.2