Skip to content

Commit 51bb50d

Browse files
committed
Avoid caching security advisories
1 parent 98fcf4f commit 51bb50d

File tree

3 files changed

+39
-12
lines changed

3 files changed

+39
-12
lines changed

app/lib/package/api_export/api_exporter.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,9 @@ class ApiExporter {
180180
return;
181181
}
182182

183-
// TODO: Consider skipping the cache when fetching security advisories
184183
final advisories = await securityAdvisoryBackend.listAdvisoriesResponse(
185184
package,
185+
skipCache: true, // Skipping the cache when fetching security advisories
186186
);
187187

188188
final versions = await packageBackend.tarballStorage

app/lib/service/security_advisories/backend.dart

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,22 +39,34 @@ class SecurityAdvisoryBackend {
3939
}
4040

4141
Future<List<SecurityAdvisoryData>> lookupSecurityAdvisories(
42-
String package,
43-
) async {
44-
return (await cache.securityAdvisories(package).get(() async {
42+
String package, {
43+
bool skipCache = false,
44+
}) async {
45+
final loadAdvisories = () async {
4546
final query = _db.query<SecurityAdvisory>()
4647
..filter('affectedPackages =', package);
4748
return query
4849
.run()
4950
.map((SecurityAdvisory adv) => SecurityAdvisoryData.fromModel(adv))
5051
.toList();
51-
}))!;
52+
};
53+
if (skipCache) {
54+
return await loadAdvisories();
55+
}
56+
57+
return (await cache.securityAdvisories(package).get(loadAdvisories))!;
5258
}
5359

5460
/// Create a [ListAdvisoriesResponse] for [package] using advisories from
5561
/// cache.
56-
Future<ListAdvisoriesResponse> listAdvisoriesResponse(String package) async {
57-
final advisories = await lookupSecurityAdvisories(package);
62+
Future<ListAdvisoriesResponse> listAdvisoriesResponse(
63+
String package, {
64+
bool skipCache = false,
65+
}) async {
66+
final advisories = await lookupSecurityAdvisories(
67+
package,
68+
skipCache: skipCache,
69+
);
5870
return ListAdvisoriesResponse(
5971
advisories: advisories.map((a) => a.advisory).toList(),
6072
advisoriesUpdated: advisories.map((a) => a.syncTime).maxOrNull,

app/test/service/security_advisory/security_advisory_test.dart

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,10 @@ void main() {
200200
expect(advisory.syncTime!, ingestTime);
201201
expect(advisory.syncTime!.isBefore(afterIngestTime), isTrue);
202202

203-
final list = await securityAdvisoryBackend.lookupSecurityAdvisories('a');
203+
final list = await securityAdvisoryBackend.lookupSecurityAdvisories(
204+
'a',
205+
skipCache: true,
206+
);
204207
expect(list, isNotNull);
205208
expect(list.length, 1);
206209
expect(list.first.advisory.id, id);
@@ -229,10 +232,16 @@ void main() {
229232
expect(updatedAdvisory.affectedPackages!.first, affectedA.package.name);
230233
expect(updatedAdvisory.affectedPackages!.last, affectedC.package.name);
231234

232-
final list2 = await securityAdvisoryBackend.lookupSecurityAdvisories('b');
235+
final list2 = await securityAdvisoryBackend.lookupSecurityAdvisories(
236+
'b',
237+
skipCache: true,
238+
);
233239
expect(list2, isEmpty);
234240

235-
final list3 = await securityAdvisoryBackend.lookupSecurityAdvisories('c');
241+
final list3 = await securityAdvisoryBackend.lookupSecurityAdvisories(
242+
'c',
243+
skipCache: true,
244+
);
236245
expect(list3, isNotNull);
237246
expect(list3.length, 1);
238247
expect(list3.first.advisory.id, id);
@@ -269,12 +278,18 @@ void main() {
269278
expect(advisory.affectedPackages!.length, 1);
270279
expect(advisory.affectedPackages!.first, affectedA.package.name);
271280

272-
final list = await securityAdvisoryBackend.lookupSecurityAdvisories('a');
281+
final list = await securityAdvisoryBackend.lookupSecurityAdvisories(
282+
'a',
283+
skipCache: true,
284+
);
273285
expect(list, isNotNull);
274286
expect(list.length, 1);
275287
expect(list.first.advisory.id, id);
276288

277-
final list2 = await securityAdvisoryBackend.lookupSecurityAdvisories('b');
289+
final list2 = await securityAdvisoryBackend.lookupSecurityAdvisories(
290+
'b',
291+
skipCache: true,
292+
);
278293
expect(list2, isNotNull);
279294
expect(list2, isEmpty);
280295
});

0 commit comments

Comments
 (0)