Skip to content

Create 'storage area' API in Go for large temporary files (e.g. repo bundles)

I’ve been thinking about the bundle import/export RPC’s. what bugs me is the temporary storage that it needs

[6:18] the problem with temporary storage is that you need to clean it up

[6:18] and even though you mean to clean it up when the request is done, you can’t count on that happening

[6:18] so there needs to be a sort of cleanup cron job

[6:18] in addition, there is the problem of what filesystem to use

[6:19] you can’t assume that /tmp is large enough to hold the bundle of any repository

[6:19] so my thinking is we should default to a special purpose tmp directory inside one of the storage roots

[6:19] because the storage root must be on a file system large enoug to hold the repos

[6:20] all this stuff feels a little complicated to work out ‘in theory’ in an issue for the import/export calls

[6:21] I should probably be the one writing the code that manages the temp dir and the cleanup

[6:24] if this sounds complicated, I have reasons. what I don’t want is us putting large tempfiles in /tmp where they don’t fit. or putting them “near” the repo they will become in the tree because then you need to walk a huge tree if you want to clean them up

[6:25] the way things are we can’t walk the full repository hierarchy in one job

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information