fix(scanner): handle nil mainCtx in Watcher to prevent panic
Signed-off-by: Deluan <deluan@navidrome.org>
This commit is contained in:
@@ -145,6 +145,12 @@ func (w *watcher) Watch(ctx context.Context, lib *model.Library) error {
|
||||
w.mu.Lock()
|
||||
defer w.mu.Unlock()
|
||||
|
||||
// If Run() hasn't been called yet, mainCtx will be nil - skip watching
|
||||
if w.mainCtx == nil {
|
||||
log.Debug(ctx, "Watcher not started yet, skipping watch for library", "libraryID", lib.ID, "name", lib.Name)
|
||||
return nil
|
||||
}
|
||||
|
||||
// Stop existing watcher if any
|
||||
if existingInstance, exists := w.libraryWatchers[lib.ID]; exists {
|
||||
log.Debug(ctx, "Stopping existing watcher before starting new one", "libraryID", lib.ID, "name", lib.Name)
|
||||
|
||||
@@ -54,6 +54,15 @@ var _ = Describe("Watcher", func() {
|
||||
}
|
||||
})
|
||||
|
||||
Describe("Watch before Run", func() {
|
||||
It("returns nil and does not panic when mainCtx is nil", func() {
|
||||
w.mainCtx = nil
|
||||
err := w.Watch(ctx, lib)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(w.libraryWatchers).To(BeEmpty())
|
||||
})
|
||||
})
|
||||
|
||||
Describe("Target Collection and Deduplication", func() {
|
||||
BeforeEach(func() {
|
||||
// Start watcher in background
|
||||
|
||||
Reference in New Issue
Block a user