triger the propagator from the command line scanner
This commit is contained in:
parent
5925ab99f8
commit
1397d9a93c
|
@ -29,6 +29,7 @@ use OC\Files\Filesystem;
|
|||
use OC\ForbiddenException;
|
||||
use OC\Hooks\PublicEmitter;
|
||||
use OC\Lock\DBLockingProvider;
|
||||
use OCP\Files\Storage\IStorage;
|
||||
use OCP\Files\StorageNotAvailableException;
|
||||
use OCP\ILogger;
|
||||
|
||||
|
@ -153,6 +154,17 @@ class Scanner extends PublicEmitter {
|
|||
$scanner->setUseTransactions(false);
|
||||
$this->attachListener($mount);
|
||||
$isDbLocking = \OC::$server->getLockingProvider() instanceof DBLockingProvider;
|
||||
|
||||
$scanner->listen('\OC\Files\Cache\Scanner', 'removeFromCache', function ($path) use ($storage) {
|
||||
$this->triggerPropagator($storage, $path);
|
||||
});
|
||||
$scanner->listen('\OC\Files\Cache\Scanner', 'updateCache', function ($path) use ($storage) {
|
||||
$this->triggerPropagator($storage, $path);
|
||||
});
|
||||
$scanner->listen('\OC\Files\Cache\Scanner', 'addToCache', function ($path) use ($storage) {
|
||||
$this->triggerPropagator($storage, $path);
|
||||
});
|
||||
|
||||
if (!$isDbLocking) {
|
||||
$this->db->beginTransaction();
|
||||
}
|
||||
|
@ -168,5 +180,9 @@ class Scanner extends PublicEmitter {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function triggerPropagator(IStorage $storage, $internalPath) {
|
||||
$storage->getPropagator()->propagateChange($internalPath, time());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -163,4 +163,28 @@ class Scanner extends \Test\TestCase {
|
|||
$scanner = new TestScanner('', \OC::$server->getDatabaseConnection(), \OC::$server->getLogger());
|
||||
$scanner->scan($invalidPath);
|
||||
}
|
||||
|
||||
public function testPropagateEtag() {
|
||||
$storage = new Temporary(array());
|
||||
$mount = new MountPoint($storage, '');
|
||||
Filesystem::getMountManager()->addMount($mount);
|
||||
$cache = $storage->getCache();
|
||||
|
||||
$storage->mkdir('folder');
|
||||
$storage->file_put_contents('folder/bar.txt', 'qwerty');
|
||||
$storage->touch('folder/bar.txt', time() - 200);
|
||||
|
||||
$scanner = new TestScanner('', \OC::$server->getDatabaseConnection(), \OC::$server->getLogger());
|
||||
$scanner->addMount($mount);
|
||||
|
||||
$scanner->scan('');
|
||||
$this->assertTrue($cache->inCache('folder/bar.txt'));
|
||||
$oldRoot = $cache->get('');
|
||||
|
||||
$storage->file_put_contents('folder/bar.txt', 'qwerty');
|
||||
$scanner->scan('');
|
||||
$newRoot = $cache->get('');
|
||||
|
||||
$this->assertNotEquals($oldRoot->getEtag(), $newRoot->getEtag());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue