Skip to content
This repository has been archived by the owner on Jun 28, 2024. It is now read-only.

Commit

Permalink
fix: Removing items during validation breaks validation
Browse files Browse the repository at this point in the history
Fix #266.
  • Loading branch information
TerryGeng committed May 16, 2021
1 parent 1c28365 commit 55daddb
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
6 changes: 5 additions & 1 deletion media/cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
import util


class ItemNotCachedError(Exception):
pass


class MusicCache(dict):
def __init__(self, db: MusicDatabase):
super().__init__()
Expand Down Expand Up @@ -142,7 +146,7 @@ def item(self):
if self.id in self.lib:
return self.lib[self.id]
else:
raise ValueError(f"Uncached item of id {self.id}, type {self.type}.")
raise ItemNotCachedError(f"Uncached item of id {self.id}, type {self.type}.")

def to_dict(self):
dict = self.item().to_dict()
Expand Down
12 changes: 11 additions & 1 deletion media/playlist.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
import time

import variables as var
from media.cache import CachedItemWrapper, get_cached_wrapper_from_dict, get_cached_wrapper_by_id
from media.cache import (CachedItemWrapper, ItemNotCachedError,
get_cached_wrapper_from_dict, get_cached_wrapper_by_id)
from database import Condition
from media.item import ValidationFailedError, PreparationFailedError

Expand Down Expand Up @@ -224,6 +225,15 @@ def _check_valid(self):
self.validating_thread_lock.acquire()
while len(self.pending_items) > 0:
item = self.pending_items.pop()
try:
item.item()
except ItemNotCachedError:
# In some very subtle case, items are removed and freed from
# the playlist and the cache, before validation even starts,
# causes, freed items remain in pending_items.
# Simply ignore these items here.
continue

self.log.debug("playlist: validating %s" % item.format_debug_string())
ver = item.version

Expand Down

0 comments on commit 55daddb

Please sign in to comment.