tailscale/taildrop
Joe Tsai c2a551469c
taildrop: implement asynchronous file deletion (#9844)
File resumption requires keeping partial files around for some time,
but we must still eventually delete them if never resumed.
Thus, we implement asynchronous file deletion, which could
spawn a background goroutine to delete the files.

We also use the same mechanism for deleting files on Windows,
where a file can't be deleted if there is still an open file handle.
We can enqueue those with the asynchronous file deleter as well.

Updates tailscale/corp#14772

Signed-off-by: Joe Tsai <joetsai@digital-static.net>
2023-10-17 13:46:05 -07:00
..
delete_test.go taildrop: implement asynchronous file deletion (#9844) 2023-10-17 13:46:05 -07:00
delete.go taildrop: implement asynchronous file deletion (#9844) 2023-10-17 13:46:05 -07:00
resume_test.go taildrop: implement asynchronous file deletion (#9844) 2023-10-17 13:46:05 -07:00
resume.go taildrop: implement asynchronous file deletion (#9844) 2023-10-17 13:46:05 -07:00
retrieve.go taildrop: implement asynchronous file deletion (#9844) 2023-10-17 13:46:05 -07:00
send.go taildrop: implement asynchronous file deletion (#9844) 2023-10-17 13:46:05 -07:00
taildrop_test.go taildrop: implement asynchronous file deletion (#9844) 2023-10-17 13:46:05 -07:00
taildrop.go taildrop: implement asynchronous file deletion (#9844) 2023-10-17 13:46:05 -07:00