Skip to content
Snippets Groups Projects
Unverified Commit e0af5263 authored by Vincent Petry's avatar Vincent Petry
Browse files

Allow chunk GC mtime tolerance for unfinished part chunks

Whenever part chunks are written, every fwrite in the write loop will
reset the mtime to the current mtime. Only at the end will the touch()
operation set the mtime to now + ttl, in the future.

However the GC code is expecting that every chunk with mtime < now are
old and must be deleted. This causes the GC to sometimes delete part
chunks in which the write loop is slow.

To fix this, a tolerance value is added in the GC code to allow for
more time before a part chunk gets deleted.
parent 76578244
No related branches found
No related tags found
No related merge requests found
...@@ -172,7 +172,9 @@ class File implements ICache { ...@@ -172,7 +172,9 @@ class File implements ICache {
public function gc() { public function gc() {
$storage = $this->getStorage(); $storage = $this->getStorage();
if ($storage and $storage->is_dir('/')) { if ($storage and $storage->is_dir('/')) {
$now = time(); // extra hour safety, in case of stray part chunks that take longer to write,
// because touch() is only called after the chunk was finished
$now = time() - 3600;
$dh = $storage->opendir('/'); $dh = $storage->opendir('/');
if (!is_resource($dh)) { if (!is_resource($dh)) {
return null; return null;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment