Add structured logging and better error handling

This commit is contained in:
SirBlob committed 2026-11-01 13:50:26 -05:00
1 parent db4e3c9611
commit 68c7dd76f2
31 files changed
+640 -109

No files matched your search

+42
View File
@@ -0,0 +1,42 @@
package jobs
import (
"log/slog"
"runtime/debug"
)
const shortIDLength = 8
func (job *Job) logger() *slog.Logger {
return slog.With("download", job.id[:min(len(job.id), shortIDLength)])
}
func (job *Job) isDownloaded() bool {
job.mutex.Lock()
defer job.mutex.Unlock()
return job.downloaded
}
func (manager *Manager) runInBackground(job *Job, task string, work func()) {
go func() {
defer job.workers.Done()
defer func() {
recovered := recover()
if recovered == nil {
return
}
job.logger().Error("background task crashed",
"task", task,
"panic", recovered,
"stack", string(debug.Stack()),
)
status := StatusFailed
if job.isDownloaded() {
status = StatusReady
}
job.setStatus(status, "Internal error during "+task+". The server log has the details.")
job.saveRecord()
}()
work()
}()
}