diff --git a/app/bin/tools/search_benchmark.dart b/app/bin/tools/search_benchmark.dart index c13e67f3ae..cc58a40efd 100644 --- a/app/bin/tools/search_benchmark.dart +++ b/app/bin/tools/search_benchmark.dart @@ -19,9 +19,9 @@ Future main(List args) async { json.decode(utf8.decode(gzip.decode(await file.readAsBytes()))) as Map; final snapshot = SearchSnapshot.fromJson(content); - snapshot.documents! - .removeWhere((packageName, doc) => isSoftRemoved(packageName)); - final index = InMemoryPackageIndex(documents: snapshot.documents!.values); + final index = InMemoryPackageIndex( + documents: + snapshot.documents!.values.where((d) => !isSoftRemoved(d.package))); // NOTE: please add more queries to this list, especially if there is a performance bottleneck. final queries = [ diff --git a/app/lib/frontend/handlers/custom_api.dart b/app/lib/frontend/handlers/custom_api.dart index bc0f148574..4311432459 100644 --- a/app/lib/frontend/handlers/custom_api.dart +++ b/app/lib/frontend/handlers/custom_api.dart @@ -78,8 +78,6 @@ Future apiPackageNamesHandler(shelf.Request request) async { final bytes = await cache.packageNamesDataJsonGz().get(() async { final packageNames = await nameTracker.getVisiblePackageNames(); - packageNames.removeWhere(isSoftRemoved); - return gzip.encode(jsonUtf8Encoder.convert({ 'packages': packageNames, // pagination is off for now diff --git a/app/lib/package/name_tracker.dart b/app/lib/package/name_tracker.dart index 4babc534ff..30f8cbf734 100644 --- a/app/lib/package/name_tracker.dart +++ b/app/lib/package/name_tracker.dart @@ -8,6 +8,7 @@ import 'package:clock/clock.dart'; import 'package:gcloud/service_scope.dart' as ss; import 'package:logging/logging.dart'; import 'package:meta/meta.dart'; +import 'package:pub_dev/package/overrides.dart'; import 'package:pub_package_reader/pub_package_reader.dart'; import '../shared/datastore.dart'; @@ -51,7 +52,7 @@ class TrackedPackage { updated: p.updated!, latestVersion: p.latestVersion!, lastPublished: p.lastVersionPublished!, - isVisible: p.isVisible, + isVisible: p.isVisible && !isSoftRemoved(p.name!), ); @visibleForTesting @@ -125,7 +126,7 @@ class NameTracker { /// Get the names of all visible packages. /// - /// Packages that are _withdrawn_ are not listed here. + /// Packages that are _moderated_ or _soft removed_ are NOT listed here. /// Packages that are _unlisted_ or _discontinued_ are **included in this list**. /// /// If it is called before the first scan was done, it will wait for diff --git a/app/lib/search/backend.dart b/app/lib/search/backend.dart index 9d721028c6..3a4a6fe127 100644 --- a/app/lib/search/backend.dart +++ b/app/lib/search/backend.dart @@ -132,6 +132,9 @@ class SearchBackend { if (!claim.valid) { return; } + if (isSoftRemoved(package)) { + return; + } // Skip if the last document timestamp is before [updated]. // 1-minute window is kept to reduce clock-skew. if (updated != null) { @@ -469,9 +472,6 @@ class SearchBackend { return null; } final snapshot = SearchSnapshot.fromJson(map); - snapshot.documents! - .removeWhere((packageName, doc) => isSoftRemoved(packageName)); - final count = snapshot.documents!.length; _logger.info('Got $count packages from snapshot at ${snapshot.updated}'); return snapshot.documents?.values.toList();