Skip to content

Commit 5cea182

Browse files
Merge pull request #4028 from SwiftPackageIndex/mitigate-gitlab-500s-part-3
Added logging to determine critical error source
2 parents 6aacfcb + 56dc7b9 commit 5cea182

2 files changed

Lines changed: 21 additions & 8 deletions

File tree

Sources/App/Commands/TriggerBuilds.swift

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,14 @@ struct TriggerBuildsCommand: AsyncCommand {
9090
do {
9191
try await triggerBuilds(on: context.application.db, mode: mode)
9292
} catch {
93-
logger.critical("\(error)")
93+
logger.critical("triggerBuilds.run: \(error)")
9494
}
9595

9696
do {
9797
try await AppMetrics.push(client: context.application.client,
9898
jobName: "trigger-builds")
9999
} catch {
100-
logger.warning("\(error)")
100+
logger.warning("triggerBuilds.run: \(error)")
101101
}
102102
}
103103

@@ -201,6 +201,8 @@ func triggerBuilds(on database: Database,
201201
// See https://github.com/SwiftPackageIndex/SwiftPackageIndex-Server/issues/4024 for details.
202202
let runningJobs = (try? await runningJobsTask) ?? 0
203203

204+
logger.info("Jobs pending: \(pendingJobs), running: \(runningJobs)")
205+
204206
AppMetrics.buildPendingJobsCount?.set(pendingJobs)
205207
AppMetrics.buildRunningJobsCount?.set(runningJobs)
206208

@@ -235,7 +237,12 @@ func triggerBuilds(on database: Database,
235237
let triggeredJobCount = triggers.reduce(0) { $0 + $1.buildPairs.count }
236238
await newJobs.withValue { $0 += triggeredJobCount }
237239

238-
try await triggerBuildsUnchecked(on: database, triggers: triggers)
240+
do {
241+
try await triggerBuildsUnchecked(on: database, triggers: triggers)
242+
} catch {
243+
logger.error("triggerBuildsUnchecked failed: \(error)")
244+
throw error
245+
}
239246
}
240247
}
241248
}

Sources/App/Core/Gitlab.swift

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -181,11 +181,17 @@ extension Gitlab.Builder {
181181
maxPageCount: Int = 5) async throws -> Int {
182182
let count = try await fetchJobs(status: status, page: page, pageSize: pageSize).count
183183
if count == pageSize && page < maxPageCount {
184-
let statusCount = try await getStatusCount(status: status,
185-
page: page + 1,
186-
pageSize: pageSize,
187-
maxPageCount: maxPageCount)
188-
return count + statusCount
184+
do {
185+
let statusCount = try await getStatusCount(status: status,
186+
page: page + 1,
187+
pageSize: pageSize,
188+
maxPageCount: maxPageCount)
189+
return count + statusCount
190+
} catch {
191+
@Dependency(\.logger) var logger
192+
logger.error("Gitlab.Builder.getStatusCount failed: \(error)")
193+
throw error
194+
}
189195
} else {
190196
return count
191197
}

0 commit comments

Comments
 (0)