diff options
author | Björn Schießle <bjoern@schiessle.org> | 2015-08-03 12:34:24 +0300 |
---|---|---|
committer | Björn Schießle <bjoern@schiessle.org> | 2015-08-03 12:34:24 +0300 |
commit | ab16bea5c73d9a89a6a8f57b7ab08fc0d2e11441 (patch) | |
tree | 6e3eec74cf9a8f44a0c7f00415224d674be7b0cd | |
parent | cf4f43363c4cf3cfd64634a6cf33a458018a7f57 (diff) | |
parent | a79a15e6c56a41229d450249e4aae6ec1e180c12 (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.php | 26 | ||||
-rw-r--r-- | apps/encryption/tests/lib/MigrationTest.php | 3 |
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 |