Retry random track, better error reporting
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
DataHoarder 2022-08-01 14:47:52 +02:00
parent f9d5cb11ec
commit 37be61a27e
Signed by: DataHoarder
SSH key fingerprint: SHA256:OLTRf6Fl87G52SiR7sWLGNzlJt4WOX+tfI2yxo0z7xk
2 changed files with 18 additions and 13 deletions

29
api.go
View file

@ -112,18 +112,25 @@ func (a *API) handleQueue() {
defer close(a.queue.QueueEmpty) defer close(a.queue.QueueEmpty)
//TODO: close properly //TODO: close properly
for { for {
if e, err := a.getRandomTrack(); e != nil { failed := true
//preload //give three tries for a random track to succeed
if err = e.Load(); err != nil { for i := 0; i < 3; i++ {
log.Printf("random track loading error for %s: \"%s\"", e.Path, err) if e, err := a.getRandomTrack(); e != nil {
continue //preload
if err = e.Load(); err != nil {
log.Printf("random track loading error for %s: \"%s\"", e.Path, err)
continue
}
failed = false
a.setNowRandom(e)
a.queue.QueueEmpty <- e
break
} else {
log.Printf("random track error: \"%s\"", err)
} }
a.setNowRandom(e) }
a.queue.QueueEmpty <- e if failed {
} else { if e, err := a.getFallbackTrack(); e != nil {
log.Printf("random track error: \"%s\"", err)
if e, err = a.getFallbackTrack(); e != nil {
//preload //preload
if err = e.Load(); err != nil { if err = e.Load(); err != nil {
log.Printf("fallback track loading error for %s: \"%s\"", e.Path, err) log.Printf("fallback track loading error for %s: \"%s\"", e.Path, err)

View file

@ -91,7 +91,6 @@ func (e *QueueTrackEntry) Load() error {
return err return err
} }
//close at end, TODO check if it runs
runtime.SetFinalizer(s, (*RangeReadSeekCloser).Close) runtime.SetFinalizer(s, (*RangeReadSeekCloser).Close)
e.reader = s e.reader = s
@ -100,7 +99,6 @@ func (e *QueueTrackEntry) Load() error {
if err != nil { if err != nil {
return err return err
} }
//close at end, TODO check if it runs
runtime.SetFinalizer(f, (*os.File).Close) runtime.SetFinalizer(f, (*os.File).Close)
e.reader = f e.reader = f