@@ -99,6 +99,9 @@ class TaskBackend {
9999 /// `null` when not started yet.
100100 Completer <void >? _stopped;
101101
102+ ScanPackagesUpdatedState _scanPackagesUpdatedState =
103+ ScanPackagesUpdatedState .init ();
104+
102105 TaskBackend (this ._db, this ._bucket);
103106
104107 /// Start continuous background processes for scheduling of tasks.
@@ -309,26 +312,9 @@ class TaskBackend {
309312 }) async {
310313 abort ?? = Completer <void >();
311314
312- var state = ScanPackagesUpdatedState .init ();
313315 bool isAbortedFn () => ! claim.valid || abort! .isCompleted;
314316 while (! isAbortedFn ()) {
315- final sinceParamNow = state.since;
316-
317- final next = await calculateScanPackagesUpdatedLoop (
318- state,
319- _db.packages.listUpdatedSince (sinceParamNow),
320- isAbortedFn,
321- );
322-
323- state = next.state;
324-
325- for (final p in next.packages) {
326- if (isAbortedFn ()) {
327- return ;
328- }
329- // Check the package
330- await trackPackage (p, updateDependents: true );
331- }
317+ await _runOneScanPackagesUpdate (isAbortedFn: isAbortedFn);
332318
333319 if (isAbortedFn ()) {
334320 return ;
@@ -341,6 +327,25 @@ class TaskBackend {
341327 }
342328 }
343329
330+ Future <void > _runOneScanPackagesUpdate ({
331+ required bool Function () isAbortedFn,
332+ }) async {
333+ final next = await calculateScanPackagesUpdatedLoop (
334+ _scanPackagesUpdatedState,
335+ _db.packages.listUpdatedSince (_scanPackagesUpdatedState.since),
336+ isAbortedFn,
337+ );
338+ _scanPackagesUpdatedState = next.state;
339+
340+ for (final p in next.packages) {
341+ if (isAbortedFn ()) {
342+ return ;
343+ }
344+ // Check the package
345+ await trackPackage (p, updateDependents: true );
346+ }
347+ }
348+
344349 Future <void > trackPackage (
345350 String packageName, {
346351 bool updateDependents = false ,
0 commit comments