Skip to content

Commit a1bd04f

Browse files
committed
Remove old cache
1 parent 19f4b1f commit a1bd04f

File tree

7 files changed

+30
-62
lines changed

7 files changed

+30
-62
lines changed

Package.resolved

Lines changed: 1 addition & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ let package = Package(
2727
.library(name: "S3Store", targets: ["S3Store"]),
2828
],
2929
dependencies: [
30-
.package(url: "https://github.com/0xLeif/Cache.git", from: "2.1.0"),
3130
.package(url: "https://github.com/JohnSundell/Ink.git", from: "0.5.1"),
3231
.package(url: "https://github.com/swift-server/swift-prometheus.git", from: "1.0.0"),
3332
.package(url: "https://github.com/SwiftPackageIndex/Plot.git", branch: "main"),
@@ -63,7 +62,6 @@ let package = Package(
6362
.product(name: "SPIManifest", package: "SPIManifest"),
6463
.product(name: "SemanticVersion", package: "SemanticVersion"),
6564
.product(name: "SwiftSoup", package: "SwiftSoup"),
66-
.product(name: "Cache", package: "cache"),
6765
.product(name: "CanonicalPackageURL", package: "CanonicalPackageURL"),
6866
.product(name: "CustomDump", package: "swift-custom-dump"),
6967
.product(name: "Dependencies", package: "swift-dependencies"),

Sources/App/Core/CurrentReferenceCache.swift

Lines changed: 0 additions & 35 deletions
This file was deleted.

Sources/App/Core/Dependencies/CurrentReferenceCacheClient.swift

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,22 @@ extension CurrentReferenceCacheClient {
6161
static var disabled: Self {
6262
.init(set: { _, _, _ in }, get: { _, _ in nil })
6363
}
64+
65+
static var inMemory: Self {
66+
.init(
67+
set: { owner, repository, reference in
68+
_cache.withValue {
69+
$0[getKey(owner: owner, repository: repository)] = reference
70+
}
71+
},
72+
get: { owner, repository in
73+
_cache.withValue {
74+
$0[getKey(owner: owner, repository: repository)]
75+
}
76+
}
77+
)
78+
}
79+
80+
nonisolated(unsafe) static var _cache = LockIsolated<[String: String]>([:])
6481
}
6582
#endif

Sources/App/Core/Dependencies/EnvironmentClient.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ struct EnvironmentClient {
3939
var collectionSigningCertificateChain: @Sendable () -> [URL] = { XCTFail("collectionSigningCertificateChain"); return [] }
4040
var collectionSigningPrivateKey: @Sendable () -> Data?
4141
var current: @Sendable () -> Environment = { XCTFail("current"); return .development }
42-
var currentReferenceCache: @Sendable () -> CurrentReferenceCache?
4342
var dbId: @Sendable () -> String?
4443
var mastodonCredentials: @Sendable () -> Mastodon.Credentials?
4544
var random: @Sendable (_ range: ClosedRange<Double>) -> Double = { XCTFail("random"); return Double.random(in: $0) }
@@ -102,7 +101,6 @@ extension EnvironmentClient: DependencyKey {
102101
Environment.get("COLLECTION_SIGNING_PRIVATE_KEY").map { Data($0.utf8) }
103102
},
104103
current: { (try? Environment.detect()) ?? .development },
105-
currentReferenceCache: { .live },
106104
dbId: { Environment.get("DATABASE_ID") },
107105
mastodonCredentials: {
108106
Environment.get("MASTODON_ACCESS_TOKEN")

Sources/App/routes+documentation.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,14 +178,15 @@ extension Request {
178178

179179
let docVersion = try await { () -> DocVersion in
180180
if reference == String.current {
181-
if let ref = environment.currentReferenceCache()?.get(owner: owner, repository: repository) {
181+
@Dependency(\.currentReferenceCache) var currentReferenceCache
182+
if let ref = await currentReferenceCache.get(owner: owner, repository: repository) {
182183
return .current(referencing: ref)
183184
}
184185

185186
guard let params = try await DocumentationTarget.query(on: db, owner: owner, repository: repository)?.internal
186187
else { throw Abort(.notFound) }
187188

188-
await environment.currentReferenceCache()?.set(owner: owner, repository: repository, reference: "\(params.docVersion)")
189+
await currentReferenceCache.set(owner: owner, repository: repository, reference: "\(params.docVersion)")
189190
return .current(referencing: "\(params.docVersion)")
190191
} else {
191192
return .reference(reference)

Tests/AppTests/PackageController+routesTests.swift

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -566,8 +566,8 @@ class PackageController_routesTests: SnapshotTestCase {
566566
// Test the current (~) documentation routes:
567567
// /owner/package/documentation/~ + various path elements
568568
try await withDependencies {
569+
$0.currentReferenceCache = .disabled
569570
$0.environment.awsDocsBucket = { "docs-bucket" }
570-
$0.environment.currentReferenceCache = { nil }
571571
$0.httpClient.fetchDocumentation = { @Sendable _ in .init(status: .ok, body: .mockIndexHTML()) }
572572
} operation: {
573573
// setup
@@ -649,8 +649,8 @@ class PackageController_routesTests: SnapshotTestCase {
649649
// Test the current (~) documentation routes with baseURL rewriting:
650650
// /owner/package/documentation/~ + various path elements
651651
try await withDependencies {
652+
$0.currentReferenceCache = .disabled
652653
$0.environment.awsDocsBucket = { "docs-bucket" }
653-
$0.environment.currentReferenceCache = { nil }
654654
$0.httpClient.fetchDocumentation = { @Sendable _ in .init(status: .ok, body: .mockIndexHTML(baseURL: "/owner/package/1.0.0")) }
655655
} operation: {
656656
// setup
@@ -941,8 +941,8 @@ class PackageController_routesTests: SnapshotTestCase {
941941

942942
func test_documentation_current_css() async throws {
943943
try await withDependencies {
944+
$0.currentReferenceCache = .disabled
944945
$0.environment.awsDocsBucket = { "docs-bucket" }
945-
$0.environment.currentReferenceCache = { nil }
946946
$0.httpClient.fetchDocumentation = App.HTTPClient.echoURL()
947947
} operation: {
948948
// setup
@@ -996,8 +996,8 @@ class PackageController_routesTests: SnapshotTestCase {
996996

997997
func test_documentation_current_js() async throws {
998998
try await withDependencies {
999+
$0.currentReferenceCache = .disabled
9991000
$0.environment.awsDocsBucket = { "docs-bucket" }
1000-
$0.environment.currentReferenceCache = { nil }
10011001
$0.httpClient.fetchDocumentation = App.HTTPClient.echoURL()
10021002
} operation: {
10031003
// setup
@@ -1051,8 +1051,8 @@ class PackageController_routesTests: SnapshotTestCase {
10511051

10521052
func test_documentation_current_data() async throws {
10531053
try await withDependencies {
1054+
$0.currentReferenceCache = .disabled
10541055
$0.environment.awsDocsBucket = { "docs-bucket" }
1055-
$0.environment.currentReferenceCache = { nil }
10561056
$0.httpClient.fetchDocumentation = App.HTTPClient.echoURL()
10571057
} operation: {
10581058
// setup
@@ -1156,8 +1156,8 @@ class PackageController_routesTests: SnapshotTestCase {
11561156
// https://github.com/SwiftPackageIndex/SwiftPackageIndex-Server/issues/2287
11571157
// Ensure references are path encoded
11581158
try await withDependencies {
1159+
$0.currentReferenceCache = .disabled
11591160
$0.environment.awsDocsBucket = { "docs-bucket" }
1160-
$0.environment.currentReferenceCache = { nil }
11611161
$0.httpClient.fetchDocumentation = { @Sendable _ in .init(status: .ok, body: .mockIndexHTML()) }
11621162
} operation: {
11631163
// setup
@@ -1220,8 +1220,8 @@ class PackageController_routesTests: SnapshotTestCase {
12201220

12211221
func test_documentation_routes_tutorials() async throws {
12221222
try await withDependencies {
1223+
$0.currentReferenceCache = .disabled
12231224
$0.environment.awsDocsBucket = { "docs-bucket" }
1224-
$0.environment.currentReferenceCache = { nil }
12251225
$0.environment.dbId = { nil }
12261226
$0.httpClient.fetchDocumentation = { @Sendable _ in .init(status: .ok, body: .mockIndexHTML()) }
12271227
} operation: {
@@ -1481,7 +1481,6 @@ class PackageController_routesTests: SnapshotTestCase {
14811481
try await withDependencies {
14821482
$0.currentReferenceCache = .disabled
14831483
$0.environment.awsDocsBucket = { "docs-bucket" }
1484-
$0.environment.currentReferenceCache = { .live }
14851484
$0.httpClient.fetchDocumentation = { @Sendable _ in .init(status: .ok, body: .mockIndexHTML()) }
14861485
} operation: {
14871486
// setup
@@ -1557,10 +1556,8 @@ class PackageController_routesTests: SnapshotTestCase {
15571556
}
15581557

15591558
func test_getDocRoute_documentation_current() async throws {
1560-
nonisolated(unsafe) let cache = CurrentReferenceCache()
15611559
try await withDependencies {
1562-
$0.currentReferenceCache = .disabled
1563-
$0.environment.currentReferenceCache = { cache }
1560+
$0.currentReferenceCache = .inMemory
15641561
} operation: {
15651562
// owner/repo/~/documentation/archive
15661563
let req = Request(application: app, url: "", on: app.eventLoopGroup.next())
@@ -1578,6 +1575,7 @@ class PackageController_routesTests: SnapshotTestCase {
15781575
XCTFail("unexpected error: \(error)")
15791576
}
15801577

1578+
@Dependency(\.currentReferenceCache) var cache
15811579
await cache.set(owner: "owner", repository: "repo", reference: "1.2.3")
15821580

15831581
do { // Now with the cache in place this resolves

0 commit comments

Comments
 (0)