Merge lp:~pconnell/endroid/pinger into lp:endroid

Proposed by Phil Connell
Status: Superseded
Proposed branch: lp:~pconnell/endroid/pinger
Merge into: lp:endroid
Diff against target: 59 lines (+19/-10)
2 files modified
etc/init/endroid.conf (+1/-1)
src/endroid/plugins/periodicpinger.py (+18/-9)
To merge this branch: bzr merge lp:~pconnell/endroid/pinger
Reviewer Review Type Date Requested Status
Phil Connell Needs Fixing
Review via email: mp+238269@code.launchpad.net

This proposal supersedes a proposal from 2014-10-14.

This proposal has been superseded by a proposal from 2014-10-14.

Description of the change

Improve reliability of periodic pinger

- Handle failures in wokkel/twisted (endroid bug 1380972)
- Log async errors for triageability
- Use addCallbacks so that errback is actually called!

To post a comment you must log in.
Revision history for this message
Phil Connell (pconnell) wrote :

Ping to webex conference server *always* fails, so unconditional move to error logging in errback is no good.

root DEBUG Failed to ping conference.isj3.webex.com: StanzaError with condition u'bad-request'"

review: Needs Fixing
Revision history for this message
Paul Stanley (paul-stanley) :
lp:~pconnell/endroid/pinger updated
100. By Phil Connell <email address hidden>

Log messages from twisted, rather than letting them go to stderr

101. By Phil Connell <email address hidden>

Log StanzaErrors from pings as debug, to handle bad servers

102. By Phil Connell <email address hidden>

Tag 1.4.6

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'etc/init/endroid.conf'
--- etc/init/endroid.conf 2014-09-15 16:45:29 +0000
+++ etc/init/endroid.conf 2014-10-14 12:19:48 +0000
@@ -1,7 +1,7 @@
1description "EnDroid XMPP bot"1description "EnDroid XMPP bot"
2author "Ensoft Limited"2author "Ensoft Limited"
33
4exec /usr/bin/endroid -L /var/log/endroid.log --config /etc/endroid/endroid.conf4exec /usr/bin/endroid --logtwisted -L /var/log/endroid.log --config /etc/endroid/endroid.conf
5start on net-device-up5start on net-device-up
6stop on stopping network6stop on stopping network
7stop on starting shutdown7stop on starting shutdown
88
=== modified file 'src/endroid/plugins/periodicpinger.py'
--- src/endroid/plugins/periodicpinger.py 2014-10-02 12:51:59 +0000
+++ src/endroid/plugins/periodicpinger.py 2014-10-14 12:19:48 +0000
@@ -12,9 +12,11 @@
1212
1313
14import logging14import logging
15import functools
15import itertools16import itertools
1617
17import twisted.internet.task18import twisted.internet.task
19from twisted.words.protocols.jabber.error import StanzaError
1820
19from endroid.pluginmanager import Plugin21from endroid.pluginmanager import Plugin
2022
@@ -64,16 +66,23 @@
6466
65 for server in self.servers:67 for server in self.servers:
66 def _fail(fail, server):68 def _fail(fail, server):
67 # If the server returns an error then we don't really care, 69 if fail.check(StanzaError):
68 # since all we want to do is ensure server-to-server 70 # Some servers that don't support c2s pings return 'bad
69 # connections are kept open by sending ping traffic and we have 71 # request' rather than 'not supported'. This still serves
70 # achieved this. So just log for debugging purposes.72 # the keep-the-connection alive purpose, so don't log as an
71 logging.debug("Failed to ping {}: {}"73 # error.
72 .format(server, str(fail.value)))74 logger = self.log.debug
75 else:
76 logger = self.log.error
77 logger("Failed to ping {}: {}".format(server, fail.value))
73 def _success(response):78 def _success(response):
74 pass79 pass
75 d = self.usermanagement.ping(server)80 try:
76 d.addCallback(_success)81 d = self.usermanagement.ping(server)
77 d.addErrback(_fail, server)82 except Exception:
83 self.log.exception("Failed to send ping to {}:".format(server))
84 else:
85 d.addCallbacks(_success,
86 functools.partial(_fail, server=server))
7887
7988

Subscribers

People subscribed via source and target branches