[CalendarServer-changes] [15621] CalendarServer/trunk/calendarserver/tools
source_changes at macosforge.org
source_changes at macosforge.org
Fri May 20 08:02:51 PDT 2016
Revision: 15621
http://trac.calendarserver.org//changeset/15621
Author: cdaboo at apple.com
Date: 2016-05-20 08:02:50 -0700 (Fri, 20 May 2016)
Log Message:
-----------
Better error handling.
Modified Paths:
--------------
CalendarServer/trunk/calendarserver/tools/dashcollect.py
CalendarServer/trunk/calendarserver/tools/dashview.py
Modified: CalendarServer/trunk/calendarserver/tools/dashcollect.py
===================================================================
--- CalendarServer/trunk/calendarserver/tools/dashcollect.py 2016-05-20 00:27:35 UTC (rev 15620)
+++ CalendarServer/trunk/calendarserver/tools/dashcollect.py 2016-05-20 15:02:50 UTC (rev 15621)
@@ -113,11 +113,18 @@
host[1] = int(host[1])
host = tuple(host)
- server = CollectorService(host, CollectorRequestHandler)
- server.dashboard = dash
- server_thread = Thread(target=server.serve_forever)
- server_thread.daemon = True
- server_thread.start()
+ try:
+ server = CollectorService(host, CollectorRequestHandler)
+ server.dashboard = dash
+ server_thread = Thread(target=server.serve_forever)
+ server_thread.daemon = True
+ server_thread.start()
+ except Exception as e:
+ print("Terminating service due to error: {}".format(e))
+ dash.stop()
+ server.shutdown()
+ server_thread.join()
+ sys.exit(1)
while dash_thread.isAlive():
try:
@@ -126,6 +133,7 @@
print("Terminating service")
dash.stop()
server.shutdown()
+ server_thread.join()
@@ -266,11 +274,11 @@
self.socket.connect(self.sockname)
self.socket.setblocking(0)
self.socket.sendall(json.dumps(items) + "\r\n")
- except socket.error:
+ except socket.error as e:
self.socket = None
- _verbose(" server failed: {}".format(self.host))
- except ValueError:
- pass
+ _verbose(" server failed: {} {}".format(self.host, e))
+ except ValueError as e:
+ _verbose(" server failed: {} {}".format(self.host, e))
def readSock(self, items):
@@ -286,7 +294,7 @@
try:
d = self.socket.recv(1024)
except socket.error as se:
- if se.args[0] != errno.EWOULDBLOCK:
+ if se.args[0] not in (errno.EWOULDBLOCK, errno.EAGAIN):
raise
if time.time() - t > 5:
raise socket.error
@@ -296,11 +304,13 @@
else:
break
data = json.loads(data, object_pairs_hook=OrderedDict)
- except socket.error:
+ except socket.error as e:
data = {}
self.socket = None
- except ValueError:
+ _verbose(" server failed: {} {}".format(self.host, e))
+ except ValueError as e:
data = {}
+ _verbose(" server failed: {} {}".format(self.host, e))
return data
@@ -312,7 +322,7 @@
# Only read each item once
self.currentData = self.readSock(list(set(self.items)))
data[self.host] = self.currentData
- _verbose(" Server read: {}".format(self.host))
+ _verbose(" Server read: {} {}".format(self.host, len(data[self.host])))
#_verbose(" Data: {}".format(self.currentData))
Modified: CalendarServer/trunk/calendarserver/tools/dashview.py
===================================================================
--- CalendarServer/trunk/calendarserver/tools/dashview.py 2016-05-20 00:27:35 UTC (rev 15620)
+++ CalendarServer/trunk/calendarserver/tools/dashview.py 2016-05-20 15:02:50 UTC (rev 15621)
@@ -34,7 +34,6 @@
import termios
import time
-
LOG_FILENAME = "db.log"
logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
@@ -404,7 +403,7 @@
# jobs are only requested from the first server in a pod because otherwise
# it would be too expensive to run the DB query for all servers. So when we
# need the jobs data, always substitute the first server's data
- if item == "jobs":
+ if item in ("jobs", "jobcount"):
server = self.currentData["pods"][pod].keys()[0]
return self.currentData["pods"][pod][server].get(item)
@@ -798,7 +797,7 @@
safeDivision(stat["t"] - stat["t-resp-wr"], stat["requests"]),
stat["T-MAX"],
safeDivision(float(stat["slots"]), stat["requests"]),
- stat["max-slots"],
+ stat.get("max-slots", 0),
safeDivision(stat["cpu"], stat["requests"]),
stat["500"],
)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20160520/9860d696/attachment.html>
More information about the calendarserver-changes
mailing list