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",
"read_fds",
"servers",
"server_nr",
"timers",
)
@ -289,7 +288,6 @@ class Downloader(Thread):
self.read_fds: Dict[int, NewsWrapper] = {}
self.servers: List[Server] = []
self.server_nr: int = 0
self.timers: Dict[str, List[float]] = {}
for server in config.get_servers():
@ -355,9 +353,8 @@ class Downloader(Thread):
)
)
# Update server-count and sort the servers
self.server_nr = len(self.servers)
self.servers.sort(key=lambda svr: "%02d%s" % (svr.priority, svr.displayname.lower()))
# Sort the servers for performance
self.servers.sort(key=lambda svr: "%02d%s" % (svr.priority, svr.displayname.lower()))
def add_socket(self, fileno: int, nw: NewsWrapper):
"""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):
"""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 = []
for nzo in self.__nzo_list:
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)
@ -868,10 +871,10 @@ class NzbQueue:
# Stall prevention by checking if all servers are in the trylist
# 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?
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
logging.info("Resetting bad trylist for file %s in job %s", nzf.filename, nzo.final_name)
nzf.reset_try_list()

Loading…
Cancel
Save