summaryrefslogtreecommitdiff
path: root/Remote
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-04-19 16:31:35 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-04-19 16:31:35 -0400
commit4837176897ae5ade15b23de4999c370d3ac2ef3e (patch)
tree5f4f9b62d855a69e4ba2ca110b8fafa95143b1e9 /Remote
parent030c7a056b0795adf037464d608da5170638f4ac (diff)
update on memory leak
Finished applying to S3 the change that fixed the memory leak in bup, but it didn't seem to help S3.. with encryption it still grows to 2x file size.
Diffstat (limited to 'Remote')
-rw-r--r--Remote/S3real.hs13
1 files changed, 5 insertions, 8 deletions
diff --git a/Remote/S3real.hs b/Remote/S3real.hs
index f40deaf17..5095b4039 100644
--- a/Remote/S3real.hs
+++ b/Remote/S3real.hs
@@ -99,22 +99,19 @@ s3Setup u c = do
store :: Remote Annex -> Key -> Annex Bool
store r k = s3Action r False $ \(conn, bucket) -> do
- content <- lazyKeyContent k
+ g <- Annex.gitRepo
+ content <- liftIO $ L.readFile $ gitAnnexLocation g k
res <- liftIO $ storeHelper (conn, bucket) r k content
s3Bool res
storeEncrypted :: Remote Annex -> (Cipher, Key) -> Key -> Annex Bool
storeEncrypted r (cipher, enck) k = s3Action r False $ \(conn, bucket) -> do
- content <- lazyKeyContent k
- res <- liftIO $ withEncryptedContent cipher (return content) $ \s -> do
+ g <- Annex.gitRepo
+ let f = gitAnnexLocation g k
+ res <- liftIO $ withEncryptedContent cipher (L.readFile f) $ \s -> do
storeHelper (conn, bucket) r enck s
s3Bool res
-lazyKeyContent :: Key -> Annex L.ByteString
-lazyKeyContent k = do
- g <- Annex.gitRepo
- liftIO $ L.readFile $ gitAnnexLocation g k
-
storeHelper :: (AWSConnection, String) -> Remote Annex -> Key -> L.ByteString -> IO (AWSResult ())
storeHelper (conn, bucket) r k content = do
let object = setStorageClass storageclass $ bucketKey bucket k content