From b1723c2f2c6fcc15964421e7ecf4e793b7fe36d6 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Sun, 9 Nov 2025 19:07:20 +0100 Subject: [PATCH] Transcoder misc fixes (#1144) Co-authored-by: Fred Heinecke --- transcoder/src/extract.go | 8 ++------ transcoder/src/runlock.go | 5 ++++- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/transcoder/src/extract.go b/transcoder/src/extract.go index a06a0314..90199679 100644 --- a/transcoder/src/extract.go +++ b/transcoder/src/extract.go @@ -88,17 +88,13 @@ func (s *MetadataService) extractSubs(ctx context.Context, info *MediaInfo) (err } workdir := filepath.Join(os.TempDir(), info.Sha) - if err := os.MkdirAll(workdir, 0660); err != nil { - return fmt.Errorf("failed to create temporary directory: %w", err) - } - attDir := filepath.Join(workdir, "att") - if err := os.MkdirAll(attDir, 0660); err != nil { + if err := os.MkdirAll(attDir, 0770); err != nil { return fmt.Errorf("failed to create attachment directory: %w", err) } subDir := filepath.Join(workdir, "sub") - if err := os.MkdirAll(subDir, 0660); err != nil { + if err := os.MkdirAll(subDir, 0770); err != nil { return fmt.Errorf("failed to create subtitles directory: %w", err) } diff --git a/transcoder/src/runlock.go b/transcoder/src/runlock.go index f1f33c5f..b8a48ade 100644 --- a/transcoder/src/runlock.go +++ b/transcoder/src/runlock.go @@ -32,7 +32,10 @@ func (r *RunLock[K, V]) Start(key K) (func() (V, error), func(val V, err error) task, ok := r.running[key] if ok { - ret := make(chan Result[V]) + // Important: Buffer this so that listener notifications are not blocked + // when the job completes. Without a buffered channel, the "set" function + // can get hung if any one of the listeners does not read from the channel. + ret := make(chan Result[V], 1) task.listeners = append(task.listeners, ret) return func() (V, error) { res := <-ret