diff options
author | Morris Jobke <hey@morrisjobke.de> | 2020-08-06 21:30:51 +0200 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2020-08-06 22:05:46 +0200 |
commit | d8734b3b93d2bcc77a5eba4f0244a41b8a6b9234 (patch) | |
tree | 6c043df911016f15dfba97c03eed449f59e6eba0 /lib/private/Preview | |
parent | c24f3d1336e5bf268cca2084da04ae5df4ecddb4 (diff) | |
download | nextcloud-server-d8734b3b93d2bcc77a5eba4f0244a41b8a6b9234.tar.gz nextcloud-server-d8734b3b93d2bcc77a5eba4f0244a41b8a6b9234.zip |
Add occ preview:migrate to migrate previews from the old flat structure to a subfolder structure
* `php occ preview:repair` - a preview migration tool that moves existing previews into the new location introduced with #19214
* moves `appdata_INSTANCEID/previews/FILEID` to `appdata_INSTANCEID/previews/0/5/8/4/c/e/5/FILEID`
* migration tool can be stopped during migration via `CTRL+C` - it then finishes the current folder (with the previews of one file) and stops gracefully
* if a PHP memory limit is set in the `php.ini` then it will stop automatically once it has less than 25 MiB memory left (this is to avoid hard crashes in the middle of a migration)
* the tool can be used during operation - possible drawbacks:
* there is the chance of a race condition that a new preview is generated in the moment the folder is already migrated away - so the old folder with the newly cached preview is deleted and one cached preview needs to be re-generated
* there is the chance of a race condition during access of a preview while it is migrated to the other folder - then no preview can be shown and results in a 404 (as of now this is an accepted risk)
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
Diffstat (limited to 'lib/private/Preview')
-rw-r--r-- | lib/private/Preview/Storage/Root.php | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/private/Preview/Storage/Root.php b/lib/private/Preview/Storage/Root.php index a9a72026a51..1f332c32085 100644 --- a/lib/private/Preview/Storage/Root.php +++ b/lib/private/Preview/Storage/Root.php @@ -39,7 +39,7 @@ class Root extends AppData { public function getFolder(string $name): ISimpleFolder { - $internalFolder = $this->getInternalFolder($name); + $internalFolder = self::getInternalFolder($name); try { return parent::getFolder($internalFolder); @@ -54,7 +54,7 @@ class Root extends AppData { } public function newFolder(string $name): ISimpleFolder { - $internalFolder = $this->getInternalFolder($name); + $internalFolder = self::getInternalFolder($name); return parent::newFolder($internalFolder); } @@ -66,7 +66,7 @@ class Root extends AppData { return []; } - private function getInternalFolder(string $name): string { + public static function getInternalFolder(string $name): string { return implode('/', str_split(substr(md5($name), 0, 7))) . '/' . $name; } } |