From cd758d15b74d526658d2b049776aa6a2aa544cbf Mon Sep 17 00:00:00 2001 From: Sarah Zakarias Date: Tue, 14 Nov 2023 10:36:32 +0100 Subject: [PATCH] Cleanup backfilling of syncTime for securityAdvisory (#7178) --- app/lib/service/security_advisories/backend.dart | 11 ++++------- .../sync_security_advisories.dart | 12 +++++------- app/lib/tool/backfill/backfill_new_fields.dart | 5 +---- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/app/lib/service/security_advisories/backend.dart b/app/lib/service/security_advisories/backend.dart index fe588071e..4d5699b11 100644 --- a/app/lib/service/security_advisories/backend.dart +++ b/app/lib/service/security_advisories/backend.dart @@ -61,15 +61,14 @@ class SecurityAdvisoryBackend { return errors.isEmpty; } - /// Overwrites existing advisory with the same id, if [osv] is newer or - /// unconditionally if [resync] is set. + /// Overwrites existing advisory with the same id, if [osv] is newer. /// /// If id is already listed as `alias` for another advisory, no action will be /// taken to resolve this. Instead both advisories will be stored and served. /// It's assumed that security advisory database owners take care to keep the /// security advisories sound, and that inconsistencies are intentional. - Future ingestSecurityAdvisory(OSV osv, DateTime syncTime, - {bool resync = false}) async { + Future ingestSecurityAdvisory( + OSV osv, DateTime syncTime) async { return await withRetryTransaction(_db, (tx) async { DateTime modified; try { @@ -81,9 +80,7 @@ class SecurityAdvisoryBackend { final oldAdvisory = await lookupById(osv.id); - if (!resync && - oldAdvisory != null && - oldAdvisory.modified!.isAtOrAfter(modified)) { + if (oldAdvisory != null && oldAdvisory.modified!.isAtOrAfter(modified)) { return oldAdvisory; } diff --git a/app/lib/service/security_advisories/sync_security_advisories.dart b/app/lib/service/security_advisories/sync_security_advisories.dart index cf1a194ec..ab7802ec5 100644 --- a/app/lib/service/security_advisories/sync_security_advisories.dart +++ b/app/lib/service/security_advisories/sync_security_advisories.dart @@ -57,8 +57,7 @@ Future<(Map, List)> loadAdvisoriesFromDir( return (osvs, failedFiles); } -Future updateAdvisories(Map osvs, - {bool resync = false}) async { +Future updateAdvisories(Map osvs) async { final syncTime = clock.now(); final oldAdvisories = await securityAdvisoryBackend.listAdvisories(); @@ -70,20 +69,19 @@ Future updateAdvisories(Map osvs, } for (final osv in osvs.values) { - await securityAdvisoryBackend.ingestSecurityAdvisory(osv, syncTime, - resync: resync); + await securityAdvisoryBackend.ingestSecurityAdvisory(osv, syncTime); } } /// Synchronizes the security advisory backend with security advisories from /// osv.dev, overwriting existing advisories with the same id, if the fetched -/// advisories are newer or overwriting unconditionally if [resync] is set. -Future syncSecurityAdvisories({bool resync = false}) async { +/// advisories are newer. +Future syncSecurityAdvisories() async { final tempDir = await Directory.systemTemp.createTemp(); try { await fetchAdvisories(tempDir); final (osvs, failedFiles) = await loadAdvisoriesFromDir(tempDir); - await updateAdvisories(osvs, resync: resync); + await updateAdvisories(osvs); if (failedFiles.isNotEmpty) { throw Exception( diff --git a/app/lib/tool/backfill/backfill_new_fields.dart b/app/lib/tool/backfill/backfill_new_fields.dart index d9cd726de..19f2267d1 100644 --- a/app/lib/tool/backfill/backfill_new_fields.dart +++ b/app/lib/tool/backfill/backfill_new_fields.dart @@ -3,7 +3,6 @@ // BSD-style license that can be found in the LICENSE file. import 'package:logging/logging.dart'; -import 'package:pub_dev/service/security_advisories/sync_security_advisories.dart'; final _logger = Logger('backfill_new_fields'); @@ -13,7 +12,5 @@ final _logger = Logger('backfill_new_fields'); /// CHANGELOG.md must be updated with the new fields, and the next /// release could remove the backfill from here. Future backfillNewFields() async { - _logger.info('Resyncing all security advisories...'); - // This will backfill the `syncTime` field on the `SecurityAdvisory` entity. - await syncSecurityAdvisories(resync: true); + _logger.info('Nothing to do.'); }