Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2016-05-18 14:49:21 +0300
committerVincent Petry <pvince81@owncloud.com>2016-05-18 15:04:30 +0300
commit5bb892b2063f5f795046ecf5f00a638b48bbbc9d (patch)
tree22b3577d6727c4114aa8b75fb3f21651b7c6897f
parent8cee246880fdd652807c973aaadc535ee328258a (diff)
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.
-rw-r--r--lib/private/cache/file.php4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/private/cache/file.php b/lib/private/cache/file.php
index 3b500c4e45b..4624d3b2029 100644
--- a/lib/private/cache/file.php
+++ b/lib/private/cache/file.php
@@ -118,7 +118,9 @@ class File {
public function gc() {
$storage = $this->getStorage();
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('/');
if(!is_resource($dh)) {
return null;