From 8c7b3c69fb30294bb45f69694e374bb648262d57 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Tue, 12 May 2015 22:39:30 +0200 Subject: [PATCH] core: Assume backend.has_* calls could fail --- mopidy/core/actor.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/mopidy/core/actor.py b/mopidy/core/actor.py index b6318492..f20b0ba2 100644 --- a/mopidy/core/actor.py +++ b/mopidy/core/actor.py @@ -2,6 +2,7 @@ from __future__ import absolute_import, unicode_literals import collections import itertools +import logging import pykka @@ -18,6 +19,9 @@ from mopidy.internal import versioning from mopidy.internal.deprecation import deprecated_property +logger = logging.getLogger(__name__) + + class Core( pykka.ThreadingActor, audio.AudioListener, backend.BackendListener, mixer.MixerListener): @@ -145,10 +149,15 @@ class Backends(list): return b.actor_ref.actor_class.__name__ for b in backends: - has_library = b.has_library().get() - has_library_browse = b.has_library_browse().get() - has_playback = b.has_playback().get() - has_playlists = b.has_playlists().get() + try: + has_library = b.has_library().get() + has_library_browse = b.has_library_browse().get() + has_playback = b.has_playback().get() + has_playlists = b.has_playlists().get() + except Exception: + self.remove(b) + logger.exception('Fetching backend info for %s failed', + b.actor_ref.actor_class.__name__) for scheme in b.uri_schemes.get(): assert scheme not in backends_by_scheme, (