Skip to content

Commit

Permalink
Adding repair step to fix missing etags - fixes #12172
Browse files Browse the repository at this point in the history
  • Loading branch information
DeepDiver1975 committed Jan 12, 2015
1 parent 5f7c115 commit 7966eee
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 1 deletion.
4 changes: 3 additions & 1 deletion lib/private/repair.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use OC\Hooks\Emitter;
use OC\Repair\AssetCache;
use OC\Repair\Collation;
use OC\Repair\FillETags;
use OC\Repair\InnoDB;
use OC\Repair\RepairConfig;
use OC\Repair\RepairLegacyStorages;
Expand Down Expand Up @@ -79,7 +80,8 @@ public static function getRepairSteps() {
new RepairMimeTypes(),
new RepairLegacyStorages(\OC::$server->getConfig(), \OC_DB::getConnection()),
new RepairConfig(),
new AssetCache()
new AssetCache(),
new FillETags(\OC_DB::getConnection())
);
}

Expand Down
41 changes: 41 additions & 0 deletions lib/repair/filletags.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php
/**
* Copyright (c) 2015 Thomas Müller <[email protected]>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/

namespace OC\Repair;

use Doctrine\DBAL\Query\QueryBuilder;
use OC\Hooks\BasicEmitter;

class FillETags extends BasicEmitter implements \OC\RepairStep {

/** @var \OC\DB\Connection */
protected $connection;

/**
* @param \OC\DB\Connection $connection
*/
public function __construct($connection) {
$this->connection = $connection;
}

public function getName() {
return 'Generate ETags for file where no ETag is present.';
}

public function run() {
$qb = $this->connection->createQueryBuilder();
$qb->update('`*PREFIX*filecache`')
->set('`etag`', $qb->expr()->literal('xxx'))
->where($qb->expr()->eq('`etag`', $qb->expr()->literal('')))
->orWhere($qb->expr()->isNull('`etag`'));

$result = $qb->execute();
$this->emit('\OC\Repair', 'info', array("ETags have been fixed for $result files/folders."));
}
}

0 comments on commit 7966eee

Please sign in to comment.