Browse Source

Only use active servers in stop_idle_jobs

tags/3.3.0RC2
Safihre 4 years ago
parent
commit
98b0b46dda
  1. 7
      sabnzbd/downloader.py
  2. 7
      sabnzbd/nzbqueue.py

7
sabnzbd/downloader.py

@ -251,7 +251,6 @@ class Downloader(Thread):
"force_disconnect", "force_disconnect",
"read_fds", "read_fds",
"servers", "servers",
"server_nr",
"timers", "timers",
) )
@ -289,7 +288,6 @@ class Downloader(Thread):
self.read_fds: Dict[int, NewsWrapper] = {} self.read_fds: Dict[int, NewsWrapper] = {}
self.servers: List[Server] = [] self.servers: List[Server] = []
self.server_nr: int = 0
self.timers: Dict[str, List[float]] = {} self.timers: Dict[str, List[float]] = {}
for server in config.get_servers(): for server in config.get_servers():
@ -355,9 +353,8 @@ class Downloader(Thread):
) )
) )
# Update server-count and sort the servers # Sort the servers for performance
self.server_nr = len(self.servers) self.servers.sort(key=lambda svr: "%02d%s" % (svr.priority, svr.displayname.lower()))
self.servers.sort(key=lambda svr: "%02d%s" % (svr.priority, svr.displayname.lower()))
def add_socket(self, fileno: int, nw: NewsWrapper): def add_socket(self, fileno: int, nw: NewsWrapper):
"""Add a socket ready to be used to the list to be watched""" """Add a socket ready to be used to the list to be watched"""

7
sabnzbd/nzbqueue.py

@ -860,7 +860,10 @@ class NzbQueue:
def stop_idle_jobs(self): def stop_idle_jobs(self):
"""Detect jobs that have zero files left and send them to post processing""" """Detect jobs that have zero files left and send them to post processing"""
# Only check servers that are active
nr_servers = len([server for server in sabnzbd.Downloader.servers[:] if server.active])
empty = [] empty = []
for nzo in self.__nzo_list: for nzo in self.__nzo_list:
if not nzo.futuretype and not nzo.files and nzo.status not in (Status.PAUSED, Status.GRABBING): if not nzo.futuretype and not nzo.files and nzo.status not in (Status.PAUSED, Status.GRABBING):
logging.info("Found idle job %s", nzo.final_name) logging.info("Found idle job %s", nzo.final_name)
@ -868,10 +871,10 @@ class NzbQueue:
# Stall prevention by checking if all servers are in the trylist # Stall prevention by checking if all servers are in the trylist
# This is a CPU-cheaper alternative to prevent stalling # This is a CPU-cheaper alternative to prevent stalling
if len(nzo.try_list) == sabnzbd.Downloader.server_nr: if len(nzo.try_list) >= nr_servers:
# Maybe the NZF's need a reset too? # Maybe the NZF's need a reset too?
for nzf in nzo.files: for nzf in nzo.files:
if len(nzf.try_list) == sabnzbd.Downloader.server_nr: if len(nzf.try_list) >= nr_servers:
# We do not want to reset all article trylists, they are good # We do not want to reset all article trylists, they are good
logging.info("Resetting bad trylist for file %s in job %s", nzf.filename, nzo.final_name) logging.info("Resetting bad trylist for file %s in job %s", nzf.filename, nzo.final_name)
nzf.reset_try_list() nzf.reset_try_list()

Loading…
Cancel
Save