From 3678823748b20d361f465b1b3ef03d1376aba19c Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Mon, 11 Jan 2021 16:38:31 +0100 Subject: [PATCH] Fix database connection usage in the files scanner Signed-off-by: Christoph Wurst --- apps/files/lib/Command/Scan.php | 20 +++++++++++--------- apps/files/lib/Command/ScanAppData.php | 20 +++++++++++--------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/apps/files/lib/Command/Scan.php b/apps/files/lib/Command/Scan.php index 3e8e1911ae..d8156da366 100644 --- a/apps/files/lib/Command/Scan.php +++ b/apps/files/lib/Command/Scan.php @@ -35,15 +35,15 @@ namespace OCA\Files\Command; -use Doctrine\DBAL\Connection; use OC\Core\Command\Base; use OC\Core\Command\InterruptedException; +use OC\DB\Connection; +use OC\DB\ConnectionAdapter; use OC\ForbiddenException; use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\Mount\IMountPoint; use OCP\Files\NotFoundException; use OCP\Files\StorageNotAvailableException; -use OCP\IDBConnection; use OCP\IUserManager; use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Input\InputArgument; @@ -118,7 +118,12 @@ class Scan extends Base { protected function scanFiles($user, $path, OutputInterface $output, $backgroundScan = false, $recursive = true, $homeOnly = false) { $connection = $this->reconnectToDatabase($output); - $scanner = new \OC\Files\Utils\Scanner($user, $connection, \OC::$server->query(IEventDispatcher::class), \OC::$server->getLogger()); + $scanner = new \OC\Files\Utils\Scanner( + $user, + new ConnectionAdapter($connection), + \OC::$server->query(IEventDispatcher::class), + \OC::$server->getLogger() + ); # check on each file/folder if there was a user interrupt (ctrl-c) and throw an exception @@ -303,12 +308,9 @@ class Scan extends Base { return sprintf('%02d:%02d:%02d', ($secs / 3600), ($secs / 60 % 60), $secs % 60); } - /** - * @return \OCP\IDBConnection - */ - protected function reconnectToDatabase(OutputInterface $output) { - /** @var Connection | IDBConnection $connection */ - $connection = \OC::$server->getDatabaseConnection(); + protected function reconnectToDatabase(OutputInterface $output): Connection { + /** @var Connection $connection */ + $connection = \OC::$server->get(Connection::class); try { $connection->close(); } catch (\Exception $ex) { diff --git a/apps/files/lib/Command/ScanAppData.php b/apps/files/lib/Command/ScanAppData.php index 8d0d72fdac..854445c82d 100644 --- a/apps/files/lib/Command/ScanAppData.php +++ b/apps/files/lib/Command/ScanAppData.php @@ -29,16 +29,16 @@ namespace OCA\Files\Command; -use Doctrine\DBAL\Connection; use OC\Core\Command\Base; use OC\Core\Command\InterruptedException; +use OC\DB\Connection; +use OC\DB\ConnectionAdapter; use OC\ForbiddenException; use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\IRootFolder; use OCP\Files\NotFoundException; use OCP\Files\StorageNotAvailableException; use OCP\IConfig; -use OCP\IDBConnection; use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; @@ -101,7 +101,12 @@ class ScanAppData extends Base { } $connection = $this->reconnectToDatabase($output); - $scanner = new \OC\Files\Utils\Scanner(null, $connection, \OC::$server->query(IEventDispatcher::class), \OC::$server->getLogger()); + $scanner = new \OC\Files\Utils\Scanner( + null, + new ConnectionAdapter($connection), + \OC::$server->query(IEventDispatcher::class), + \OC::$server->getLogger() + ); # check on each file/folder if there was a user interrupt (ctrl-c) and throw an exception $scanner->listen('\OC\Files\Utils\Scanner', 'scanFile', function ($path) use ($output) { @@ -250,12 +255,9 @@ class ScanAppData extends Base { return sprintf('%02d:%02d:%02d', ($secs / 3600), ($secs / 60 % 60), $secs % 60); } - /** - * @return \OCP\IDBConnection - */ - protected function reconnectToDatabase(OutputInterface $output) { - /** @var Connection | IDBConnection $connection*/ - $connection = \OC::$server->getDatabaseConnection(); + protected function reconnectToDatabase(OutputInterface $output): Connection { + /** @var Connection $connection*/ + $connection = \OC::$server->get(Connection::class); try { $connection->close(); } catch (\Exception $ex) {