fix: ignore pending XFTP files in storage accounting (#1814)

* fix: ignore pending XFTP files in storage accounting

* style

---------

Co-authored-by: Paul Bottinelli <paul.bottinelli@trailofbits.com>
This commit is contained in:
Evgeny
2026-06-21 13:27:28 +01:00
committed by GitHub
parent 74a86043cc
commit b2bdade380
3 changed files with 43 additions and 22 deletions
+6 -4
View File
@@ -22,11 +22,11 @@ where
import Data.Kind (Type)
import Control.Concurrent.STM
import Control.Monad (forM, void)
import Control.Monad
import qualified Data.Attoparsec.ByteString.Char8 as A
import Data.Int (Int64)
import qualified Data.Map.Strict as M
import Data.Maybe (catMaybes)
import Data.Maybe (catMaybes, isJust)
import Data.Set (Set)
import qualified Data.Set as S
import Data.Word (Word32)
@@ -175,8 +175,10 @@ instance FileStoreClass STMFileStore where
pure $ Just (sId, path, size)
else pure Nothing
getUsedStorage STMFileStore {files} =
M.foldl' (\acc FileRec {fileInfo = FileInfo {size}} -> acc + fromIntegral size) 0 <$> readTVarIO files
getUsedStorage STMFileStore {files} = foldM addSize 0 =<< readTVarIO files
where
addSize acc FileRec {fileInfo = FileInfo {size}, filePath} =
ifM (isJust <$> readTVarIO filePath) (pure $! acc + fromIntegral size) (pure acc)
getFileCount STMFileStore {files} = M.size <$> readTVarIO files
@@ -164,7 +164,7 @@ instance FileStoreClass PostgresFileStore where
getUsedStorage st =
withTransaction (dbStore st) $ \db -> do
[Only total] <- DB.query_ db "SELECT COALESCE(SUM(file_size::BIGINT), 0)::BIGINT FROM files"
[Only total] <- DB.query_ db "SELECT COALESCE(SUM(file_size::BIGINT), 0)::BIGINT FROM files WHERE file_path IS NOT NULL"
pure total
getFileCount st =