mirror of
https://git.ianrenton.com/ian/spothole.git
synced 2026-09-20 22:37:44 +00:00
Give threads less time to shut down gracefully. Attempt shutdown() rather than stop() on the telnet connections to see if that improves things
This commit is contained in:
@@ -33,7 +33,7 @@ class HTTPAlertProvider(AlertProvider):
|
||||
def stop(self):
|
||||
self._stop_event.set()
|
||||
if self._thread:
|
||||
self._thread.join(timeout=35)
|
||||
self._thread.join(timeout=12)
|
||||
if self._thread.is_alive():
|
||||
logger.warning(f"{self.name} alert worker thread did not exit on time and will be killed.")
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ class FileDownloadCallsignDataProvider(CallsignDataProvider):
|
||||
def stop(self):
|
||||
self._stop_event.set()
|
||||
if self._thread:
|
||||
self._thread.join(timeout=35)
|
||||
self._thread.join(timeout=12)
|
||||
if self._thread.is_alive():
|
||||
logger.warning(f"{self.name} callsign data worker thread did not exit on time and will be killed.")
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ class FileDownloadSIGRefDataProvider(SIGRefDataProvider):
|
||||
def stop(self):
|
||||
super().stop()
|
||||
if self._thread:
|
||||
self._thread.join(timeout=35)
|
||||
self._thread.join(timeout=12)
|
||||
if self._thread.is_alive():
|
||||
logger.warning(f"{self.sig_name} SIG ref data worker thread did not exit on time and will be killed.")
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ class GIROIonosonde(SolarConditionsProvider):
|
||||
def stop(self):
|
||||
self._stop_event.set()
|
||||
if self._thread:
|
||||
self._thread.join(timeout=35)
|
||||
self._thread.join(timeout=12)
|
||||
if self._thread.is_alive():
|
||||
logger.warning("GIRO ionosonde worker thread did not exit on time and will be killed.")
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ class HTTPSolarConditionsProvider(SolarConditionsProvider):
|
||||
def stop(self):
|
||||
self._stop_event.set()
|
||||
if self._thread:
|
||||
self._thread.join(timeout=35)
|
||||
self._thread.join(timeout=12)
|
||||
if self._thread.is_alive():
|
||||
logger.warning(f"{self.name} solar conditions worker thread did not exit on time and will be killed.")
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ class KC2GProp(SolarConditionsProvider):
|
||||
def stop(self):
|
||||
self._stop_event.set()
|
||||
if self._thread:
|
||||
self._thread.join(timeout=35)
|
||||
self._thread.join(timeout=12)
|
||||
if self._thread.is_alive():
|
||||
logger.warning("KC2G ionosonde worker thread did not exit on time and will be killed.")
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ class APRSIS(SpotProvider):
|
||||
if self._aprsis:
|
||||
self._aprsis.close()
|
||||
if self._thread:
|
||||
self._thread.join(timeout=15)
|
||||
self._thread.join(timeout=5)
|
||||
if self._thread.is_alive():
|
||||
logger.warning("APRS-IS worker thread did not exit on time and will be killed.")
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import logging
|
||||
import re
|
||||
import socket
|
||||
from datetime import datetime
|
||||
from threading import Event, Lock, Thread
|
||||
|
||||
@@ -52,9 +53,13 @@ class DXCluster(SpotProvider):
|
||||
self._stop_event.set()
|
||||
with self._telnet_lock:
|
||||
if self._telnet:
|
||||
try:
|
||||
self._telnet.sock.shutdown(socket.SHUT_RDWR)
|
||||
except (AttributeError, OSError):
|
||||
pass
|
||||
self._telnet.close()
|
||||
if self._thread:
|
||||
self._thread.join(timeout=15)
|
||||
self._thread.join(timeout=5)
|
||||
if self._thread.is_alive():
|
||||
logger.warning(f"DX Cluster {self._hostname} worker thread did not exit on time and will be killed.")
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ class HTTPSpotProvider(SpotProvider):
|
||||
self._stop_event.set()
|
||||
self._wakeup_event.set()
|
||||
if self._thread:
|
||||
self._thread.join(timeout=35)
|
||||
self._thread.join(timeout=12)
|
||||
if self._thread.is_alive():
|
||||
logger.warning(f"{self.name} spot worker thread did not exit on time and will be killed.")
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import logging
|
||||
import re
|
||||
import socket
|
||||
from datetime import datetime
|
||||
from threading import Event, Lock, Thread
|
||||
|
||||
@@ -41,9 +42,13 @@ class RBN(SpotProvider):
|
||||
self._stop_event.set()
|
||||
with self._telnet_lock:
|
||||
if self._telnet:
|
||||
try:
|
||||
self._telnet.sock.shutdown(socket.SHUT_RDWR)
|
||||
except (AttributeError, OSError):
|
||||
pass
|
||||
self._telnet.close()
|
||||
if self._thread:
|
||||
self._thread.join(timeout=15)
|
||||
self._thread.join(timeout=5)
|
||||
if self._thread.is_alive():
|
||||
logger.warning(f"RBN (port {self._port!s}) worker thread did not exit on time and will be killed.")
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ class SSESpotProvider(SpotProvider):
|
||||
logger.exception(f"Exception closing SSE connection for {self.name} during stop()")
|
||||
|
||||
if self._thread:
|
||||
self._thread.join(timeout=15)
|
||||
self._thread.join(timeout=5)
|
||||
if self._thread.is_alive():
|
||||
logger.warning(f"{self.name} SSE worker thread did not exit on time and will be killed.")
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ class WebsocketSpotProvider(SpotProvider):
|
||||
if self._ws:
|
||||
self._ws.close()
|
||||
if self._thread:
|
||||
self._thread.join(timeout=15)
|
||||
self._thread.join(timeout=5)
|
||||
if self._thread.is_alive():
|
||||
logger.warning(f"{self.name} websocket worker thread did not exit on time and will be killed.")
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ class FileDownloadStaticDataProvider(StaticDataProvider):
|
||||
def stop(self):
|
||||
self._stop_event.set()
|
||||
if self._thread:
|
||||
self._thread.join(timeout=35)
|
||||
self._thread.join(timeout=12)
|
||||
if self._thread.is_alive():
|
||||
logger.warning(f"{self.name} static data worker thread did not exit on time and will be killed.")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user