1515use OC \Files \Storage \Home ;
1616use OC \ForbiddenException ;
1717use OC \Hooks \PublicEmitter ;
18- use OC \Lock \DBLockingProvider ;
1918use OCA \Files_Sharing \SharedStorage ;
2019use OCP \EventDispatcher \IEventDispatcher ;
2120use OCP \Files \Events \BeforeFileScannedEvent ;
3130use OCP \Files \StorageNotAvailableException ;
3231use OCP \IDBConnection ;
3332use OCP \IUser ;
34- use OCP \Lock \ILockingProvider ;
3533use OCP \Lock \LockedException ;
36- use OCP \Server ;
3734use Psr \Log \LoggerInterface ;
3835
3936/**
4643 * @package OC\Files\Utils
4744 */
4845class Scanner extends PublicEmitter {
49- public const MAX_ENTRIES_TO_COMMIT = 10000 ;
50-
51- /**
52- * Whether to use a DB transaction
53- */
54- protected bool $ useTransaction ;
55-
56- /**
57- * Number of entries scanned to commit
58- */
59- protected int $ entriesToCommit = 0 ;
6046
6147 public function __construct (
6248 private readonly ?IUser $ user ,
@@ -65,8 +51,6 @@ public function __construct(
6551 protected readonly LoggerInterface $ logger ,
6652 private readonly SetupManager $ setupManager ,
6753 ) {
68- // when DB locking is used, no DB transactions will be used
69- $ this ->useTransaction = !(Server::get (ILockingProvider::class) instanceof DBLockingProvider);
7054 }
7155
7256 /**
@@ -212,19 +196,18 @@ public function scan(string $dir = '', $recursive = \OC\Files\Cache\Scanner::SCA
212196 $ relativePath = $ mount ->getInternalPath ($ dir );
213197 /** @var \OC\Files\Cache\Scanner $scanner */
214198 $ scanner = $ storage ->getScanner ();
215- $ scanner ->setUseTransactions (false );
216199 $ this ->attachListener ($ mount );
217200
218201 $ scanner ->listen ('\OC\Files\Cache\Scanner ' , 'removeFromCache ' , function ($ path ) use ($ storage ): void {
219- $ this ->postProcessEntry ($ storage , $ path );
202+ $ this ->triggerPropagator ($ storage , $ path );
220203 $ this ->eventDispatcher ->dispatchTyped (new NodeRemovedFromCache ($ storage , $ path ));
221204 });
222205 $ scanner ->listen ('\OC\Files\Cache\Scanner ' , 'updateCache ' , function ($ path ) use ($ storage ): void {
223- $ this ->postProcessEntry ($ storage , $ path );
206+ $ this ->triggerPropagator ($ storage , $ path );
224207 $ this ->eventDispatcher ->dispatchTyped (new FileCacheUpdated ($ storage , $ path ));
225208 });
226209 $ scanner ->listen ('\OC\Files\Cache\Scanner ' , 'addToCache ' , function ($ path , $ storageId , $ data , $ fileId ) use ($ storage ): void {
227- $ this ->postProcessEntry ($ storage , $ path );
210+ $ this ->triggerPropagator ($ storage , $ path );
228211 if ($ fileId ) {
229212 $ this ->eventDispatcher ->dispatchTyped (new FileCacheUpdated ($ storage , $ path ));
230213 } else {
@@ -236,9 +219,6 @@ public function scan(string $dir = '', $recursive = \OC\Files\Cache\Scanner::SCA
236219 throw new NotFoundException ($ dir );
237220 }
238221
239- if ($ this ->useTransaction ) {
240- $ this ->db ->beginTransaction ();
241- }
242222 try {
243223 $ propagator = $ storage ->getPropagator ();
244224 $ propagator ->beginBatch ();
@@ -261,28 +241,10 @@ public function scan(string $dir = '', $recursive = \OC\Files\Cache\Scanner::SCA
261241 $ this ->logger ->error ('Storage ' . $ storage ->getId () . ' not available ' , ['exception ' => $ e ]);
262242 $ this ->emit ('\OC\Files\Utils\Scanner ' , 'StorageNotAvailable ' , [$ e ]);
263243 }
264- if ($ this ->useTransaction ) {
265- $ this ->db ->commit ();
266- }
267244 }
268245 }
269246
270247 private function triggerPropagator (IStorage $ storage , $ internalPath ) {
271248 $ storage ->getPropagator ()->propagateChange ($ internalPath , time ());
272249 }
273-
274- private function postProcessEntry (IStorage $ storage , $ internalPath ) {
275- $ this ->triggerPropagator ($ storage , $ internalPath );
276- if ($ this ->useTransaction ) {
277- $ this ->entriesToCommit ++;
278- if ($ this ->entriesToCommit >= self ::MAX_ENTRIES_TO_COMMIT ) {
279- $ propagator = $ storage ->getPropagator ();
280- $ this ->entriesToCommit = 0 ;
281- $ this ->db ->commit ();
282- $ propagator ->commitBatch ();
283- $ this ->db ->beginTransaction ();
284- $ propagator ->beginBatch ();
285- }
286- }
287- }
288250}
0 commit comments