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
1=== modified file 'etc/init/endroid.conf'
2--- etc/init/endroid.conf 2014-09-15 16:45:29 +0000
3+++ etc/init/endroid.conf 2014-10-14 12:19:48 +0000
4@@ -1,7 +1,7 @@
5 description "EnDroid XMPP bot"
6 author "Ensoft Limited"
7
8-exec /usr/bin/endroid -L /var/log/endroid.log --config /etc/endroid/endroid.conf
9+exec /usr/bin/endroid --logtwisted -L /var/log/endroid.log --config /etc/endroid/endroid.conf
10 start on net-device-up
11 stop on stopping network
12 stop on starting shutdown
13
14=== modified file 'src/endroid/plugins/periodicpinger.py'
15--- src/endroid/plugins/periodicpinger.py 2014-10-02 12:51:59 +0000
16+++ src/endroid/plugins/periodicpinger.py 2014-10-14 12:19:48 +0000
17@@ -12,9 +12,11 @@
18
19
20 import logging
21+import functools
22 import itertools
23
24 import twisted.internet.task
25+from twisted.words.protocols.jabber.error import StanzaError
26
27 from endroid.pluginmanager import Plugin
28
29@@ -64,16 +66,23 @@
30
31 for server in self.servers:
32 def _fail(fail, server):
33- # If the server returns an error then we don't really care,
34- # since all we want to do is ensure server-to-server
35- # connections are kept open by sending ping traffic and we have
36- # achieved this. So just log for debugging purposes.
37- logging.debug("Failed to ping {}: {}"
38- .format(server, str(fail.value)))
39+ if fail.check(StanzaError):
40+ # Some servers that don't support c2s pings return 'bad
41+ # request' rather than 'not supported'. This still serves
42+ # the keep-the-connection alive purpose, so don't log as an
43+ # error.
44+ logger = self.log.debug
45+ else:
46+ logger = self.log.error
47+ logger("Failed to ping {}: {}".format(server, fail.value))
48 def _success(response):
49 pass
50- d = self.usermanagement.ping(server)
51- d.addCallback(_success)
52- d.addErrback(_fail, server)
53+ try:
54+ d = self.usermanagement.ping(server)
55+ except Exception:
56+ self.log.exception("Failed to send ping to {}:".format(server))
57+ else:
58+ d.addCallbacks(_success,
59+ functools.partial(_fail, server=server))
60
61

Subscribers

People subscribed via source and target branches