From 5b4263185727c05d39800d00b14930a132499125 Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Mon, 11 Nov 2013 21:30:20 +0000 Subject: Commit node stats on exit --- diff --git a/sugar-network-node b/sugar-network-node index ff10c36..cd6961a 100755 --- a/sugar-network-node +++ b/sugar-network-node @@ -97,6 +97,7 @@ class Application(application.Daemon): try: self.jobs.join() finally: + cp.close() volume.close() def shutdown(self): diff --git a/sugar_network/model/routes.py b/sugar_network/model/routes.py index 1701c69..447ff30 100644 --- a/sugar_network/model/routes.py +++ b/sugar_network/model/routes.py @@ -136,6 +136,7 @@ class FrontRoutes(object): rfile = None if request is not None: rfile = request.content_stream + if rfile is not None: coroutine.spawn(self._waiter_for_closing, rfile) while True: diff --git a/sugar_network/node/routes.py b/sugar_network/node/routes.py index 9b0e27f..57c1dff 100644 --- a/sugar_network/node/routes.py +++ b/sugar_network/node/routes.py @@ -58,6 +58,10 @@ class NodeRoutes(model.VolumeRoutes, model.FrontRoutes): self._stats = stats_node.Sniffer(volume) coroutine.spawn(self._commit_stats) + def close(self): + if self._stats is not None: + self._stats.commit() + @property def guid(self): return self._guid diff --git a/sugar_network/toolkit/coroutine.py b/sugar_network/toolkit/coroutine.py index 1e73c0b..170f445 100644 --- a/sugar_network/toolkit/coroutine.py +++ b/sugar_network/toolkit/coroutine.py @@ -286,7 +286,9 @@ def _print_exception(context, klass, value, tb): if issubclass(klass, self.NOT_ERROR + self.SYSTEM_ERROR): return + import errno import traceback + tb_repr = '\n'.join([i.rstrip() for i in traceback.format_exception(klass, value, tb)][:-1]) del tb @@ -306,7 +308,8 @@ def _print_exception(context, klass, value, tb): (context_repr or context[:40] + '..', value) logging_level = logging.getLogger().level - if logging_level > logging.DEBUG: + if logging_level > logging.DEBUG or \ + isinstance(value, IOError) and value.errno == errno.EPIPE: _logger.error(error) elif logging_level == logging.DEBUG: _logger.error('\n'.join([error, tb_repr])) -- cgit v0.9.1