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:
authorBjörn Schießle <bjoern@schiessle.org>2015-08-03 12:34:24 +0300
committerBjörn Schießle <bjoern@schiessle.org>2015-08-03 12:34:24 +0300
commitab16bea5c73d9a89a6a8f57b7ab08fc0d2e11441 (patch)
tree6e3eec74cf9a8f44a0c7f00415224d674be7b0cd
parentcf4f43363c4cf3cfd64634a6cf33a458018a7f57 (diff)
parenta79a15e6c56a41229d450249e4aae6ec1e180c12 (diff)
Merge pull request #17990 from owncloud/enc_only_update_file_cache_once_8.1
[stable8.1] only update database on the first run
-rw-r--r--apps/encryption/lib/migration.php26
-rw-r--r--apps/encryption/tests/lib/MigrationTest.php3
2 files changed, 22 insertions, 7 deletions
diff --git a/apps/encryption/lib/migration.php b/apps/encryption/lib/migration.php
index e6887e8cc07..ba4791f6aa2 100644
--- a/apps/encryption/lib/migration.php
+++ b/apps/encryption/lib/migration.php
@@ -37,9 +37,10 @@ class Migration {
private $connection;
/** @var IConfig */
private $config;
-
/** @var ILogger */
private $logger;
+ /** @var string*/
+ protected $installedVersion;
/**
* @param IConfig $config
@@ -54,6 +55,7 @@ class Migration {
$this->moduleId = \OCA\Encryption\Crypto\Encryption::ID;
$this->config = $config;
$this->logger = $logger;
+ $this->installedVersion = $this->config->getAppValue('files_encryption', 'installed_version', '-1');
}
public function finalCleanUp() {
@@ -66,12 +68,16 @@ class Migration {
* update file cache, copy unencrypted_size to the 'size' column
*/
private function updateFileCache() {
- $query = $this->connection->createQueryBuilder();
- $query->update('`*PREFIX*filecache`')
- ->set('`size`', '`unencrypted_size`')
- ->where($query->expr()->eq('`encrypted`', ':encrypted'))
- ->setParameter('encrypted', 1);
- $query->execute();
+ // make sure that we don't update the file cache multiple times
+ // only update during the first run
+ if ($this->installedVersion !== '-1') {
+ $query = $this->connection->createQueryBuilder();
+ $query->update('`*PREFIX*filecache`')
+ ->set('`size`', '`unencrypted_size`')
+ ->where($query->expr()->eq('`encrypted`', ':encrypted'))
+ ->setParameter('encrypted', 1);
+ $query->execute();
+ }
}
/**
@@ -144,6 +150,12 @@ class Migration {
*/
public function updateDB() {
+ // make sure that we don't update the file cache multiple times
+ // only update during the first run
+ if ($this->installedVersion === '-1') {
+ return;
+ }
+
// delete left-over from old encryption which is no longer needed
$this->config->deleteAppValue('files_encryption', 'ocsid');
$this->config->deleteAppValue('files_encryption', 'types');
diff --git a/apps/encryption/tests/lib/MigrationTest.php b/apps/encryption/tests/lib/MigrationTest.php
index 6742de574bf..607a973e367 100644
--- a/apps/encryption/tests/lib/MigrationTest.php
+++ b/apps/encryption/tests/lib/MigrationTest.php
@@ -306,6 +306,7 @@ class MigrationTest extends \Test\TestCase {
$this->prepareDB();
$m = new Migration(\OC::$server->getConfig(), new \OC\Files\View(), \OC::$server->getDatabaseConnection(), $this->logger);
+ $this->invokePrivate($m, 'installedVersion', ['0.7']);
$m->updateDB();
$this->verifyDB('`*PREFIX*appconfig`', 'files_encryption', 0);
@@ -325,6 +326,7 @@ class MigrationTest extends \Test\TestCase {
$config->setUserValue(self::TEST_ENCRYPTION_MIGRATION_USER1, 'encryption', 'recoverKeyEnabled', '9');
$m = new Migration(\OC::$server->getConfig(), new \OC\Files\View(), \OC::$server->getDatabaseConnection(), $this->logger);
+ $this->invokePrivate($m, 'installedVersion', ['0.7']);
$m->updateDB();
$this->verifyDB('`*PREFIX*appconfig`', 'files_encryption', 0);
@@ -388,6 +390,7 @@ class MigrationTest extends \Test\TestCase {
public function testUpdateFileCache() {
$this->prepareFileCache();
$m = new Migration(\OC::$server->getConfig(), new \OC\Files\View(), \OC::$server->getDatabaseConnection(), $this->logger);
+ $this->invokePrivate($m, 'installedVersion', ['0.7']);
self::invokePrivate($m, 'updateFileCache');
// check results