Skip to content

Commit c64f073

Browse files
Fix DatabaseQueue deadlock
1 parent dd95663 commit c64f073

File tree

3 files changed

+4
-2
lines changed

3 files changed

+4
-2
lines changed

Sources/Alchemy/Queue/Drivers/DatabaseQueue.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ final class DatabaseQueue: QueueDriver {
3030
.forLock(.update, option: .skipLocked)
3131
.firstModel()
3232

33-
return try await job?.update {
33+
return try await job?.update(db: conn) {
3434
$0.reserved = true
3535
$0.reservedAt = Date()
3636
}.toJobData()

Sources/Alchemy/Queue/Drivers/QueueDriver.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ extension QueueDriver {
7070
return
7171
}
7272

73-
Log.debug("Dequeued job \(jobData.jobName) from queue \(jobData.channel)")
73+
Log.debug("[Queue] dequeued job \(jobData.jobName) from queue \(jobData.channel)")
7474
try await execute(jobData)
7575
try await runNext(from: channels)
7676
} catch {

Sources/Alchemy/Queue/Queue.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ public final class Queue: Service {
4747
pollRate: TimeAmount = Queue.defaultPollRate,
4848
on eventLoop: EventLoop = Loop.group.next()
4949
) {
50+
let loopId = ObjectIdentifier(eventLoop).debugDescription.dropLast().suffix(6)
51+
Log.info("[Queue] starting worker \(loopId)")
5052
driver.startWorker(for: channels, pollRate: pollRate, on: eventLoop)
5153
}
5254
}

0 commit comments

Comments
 (0)