Skip to content

Commit 70f23a4

Browse files
icewind1991artonge
authored andcommitted
find users for background scan one by one
Signed-off-by: Robin Appelman <robin@icewind.nl>
1 parent bd677f6 commit 70f23a4

File tree

1 file changed

+19
-22
lines changed

1 file changed

+19
-22
lines changed

apps/files/lib/BackgroundJob/ScanFiles.php

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,6 @@
4141
class ScanFiles extends \OC\BackgroundJob\TimedJob {
4242
/** @var IConfig */
4343
private $config;
44-
/** @var IUserManager */
45-
private $userManager;
4644
/** @var IEventDispatcher */
4745
private $dispatcher;
4846
/** @var ILogger */
@@ -54,23 +52,20 @@ class ScanFiles extends \OC\BackgroundJob\TimedJob {
5452

5553
/**
5654
* @param IConfig $config
57-
* @param IUserManager $userManager
5855
* @param IEventDispatcher $dispatcher
5956
* @param ILogger $logger
6057
* @param IDBConnection $connection
6158
*/
6259
public function __construct(
63-
IConfig $config,
64-
IUserManager $userManager,
60+
IConfig $config,
6561
IEventDispatcher $dispatcher,
66-
ILogger $logger,
67-
IDBConnection $connection
62+
ILogger $logger,
63+
IDBConnection $connection
6864
) {
6965
// Run once per 10 minutes
7066
$this->setInterval(60 * 10);
7167

7268
$this->config = $config;
73-
$this->userManager = $userManager;
7469
$this->dispatcher = $dispatcher;
7570
$this->logger = $logger;
7671
$this->connection = $connection;
@@ -82,10 +77,10 @@ public function __construct(
8277
protected function runScanner(string $user) {
8378
try {
8479
$scanner = new Scanner(
85-
$user,
86-
null,
87-
$this->dispatcher,
88-
$this->logger
80+
$user,
81+
null,
82+
$this->dispatcher,
83+
$this->logger
8984
);
9085
$scanner->backgroundScan('');
9186
} catch (\Exception $e) {
@@ -95,20 +90,20 @@ protected function runScanner(string $user) {
9590
}
9691

9792
/**
98-
* Find all storages which have unindexed files and return a user for each
93+
* Find a storage which have unindexed files and return a user with access to the storage
9994
*
100-
* @return string[]
95+
* @return string|false
10196
*/
102-
private function getUsersToScan(): array {
97+
private function getUserToScan() {
10398
$query = $this->connection->getQueryBuilder();
104-
$query->select($query->func()->max('user_id'))
99+
$query->select('user_id')
105100
->from('filecache', 'f')
106101
->innerJoin('f', 'mounts', 'm', $query->expr()->eq('storage_id', 'storage'))
107102
->where($query->expr()->lt('size', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)))
108-
->groupBy('storage_id')
109-
->setMaxResults(self::USERS_PER_SESSION);
103+
->andWhere($query->expr()->gt('parent', $query->createNamedParameter(-1, IQueryBuilder::PARAM_INT)))
104+
->setMaxResults(1);
110105

111-
return $query->execute()->fetchAll(\PDO::FETCH_COLUMN);
106+
return $query->execute()->fetchOne();
112107
}
113108

114109
/**
@@ -120,10 +115,12 @@ protected function run($argument) {
120115
return;
121116
}
122117

123-
$users = $this->getUsersToScan();
124-
125-
foreach ($users as $user) {
118+
$usersScanned = 0;
119+
$user = $this->getUserToScan();
120+
while ($user && $usersScanned < self::USERS_PER_SESSION) {
126121
$this->runScanner($user);
122+
$user = $this->getUserToScan();
123+
$usersScanned += 1;
127124
}
128125
}
129126
}

0 commit comments

Comments
 (0)