elexis1 / limnoria-phabricator

A plugin for the limnoria IRC bot, posting details about phabricator revisions.
0 stars 0 forks source link

Phabricator thread not restarted when rejoining the irc channel #12

Open elexis1 opened 7 years ago

elexis1 commented 7 years ago

If the irc connection is lost (for example if quakenet reboots) but the bot can rejoin the irc channels afterwards, the story printer thread is not restarted:

Exception in thread Thread-5:
Traceback (most recent call last):
  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.5/threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
  File "/home/elexis/limnoria/plugins/Phabricator/plugin.py", line 291, in printStoriesForever
    if self.printSomeStories(irc):
  File "/home/elexis/limnoria/plugins/Phabricator/plugin.py", line 301, in printSomeStories
    stories = self.pullSomeStories()
  File "/home/elexis/limnoria/plugins/Phabricator/plugin.py", line 328, in pullSomeStories
    stories, objectPHIDs, authorPHIDs = self.conduitAPI.queryFeed(self.chronokey, self.storyLimit, self.historyForwards)
  File "/home/elexis/limnoria/plugins/Phabricator/plugin.py", line 616, in queryFeed
    results = self.queryAPI("/api/feed.query", arguments)
  File "/home/elexis/limnoria/plugins/Phabricator/plugin.py", line 503, in queryAPI
    conn.request("GET", path, urllib.parse.urlencode(params, True), headers)
  File "/usr/lib/python3.5/http/client.py", line 1106, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python3.5/http/client.py", line 1151, in _send_request
    self.endheaders(body)
  File "/usr/lib/python3.5/http/client.py", line 1102, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python3.5/http/client.py", line 934, in _send_output
    self.send(msg)
  File "/usr/lib/python3.5/http/client.py", line 877, in send
    self.connect()
  File "/usr/lib/python3.5/http/client.py", line 1260, in connect
    server_hostname=server_hostname)
  File "/usr/lib/python3.5/ssl.py", line 377, in wrap_socket
    _context=self)
  File "/usr/lib/python3.5/ssl.py", line 752, in __init__
    self.do_handshake()
  File "/usr/lib/python3.5/ssl.py", line 988, in do_handshake
    self._sslobj.do_handshake()
  File "/usr/lib/python3.5/ssl.py", line 633, in do_handshake
    self._sslobj.do_handshake()
socket.timeout: _ssl.c:629: The handshake operation timed out

WARNING 2017-02-12T07:36:32 Error message from quakenet: Closing Link: WildfireRobot by azubu.fl.us.quakenet.org (Ping timeout)
INFO 2017-02-12T07:36:33 Reconnecting to quakenet.
INFO 2017-02-12T07:36:34 Connecting to irc.quakenet.org:6667.
WARNING 2017-02-12T07:36:34 Connection to network quakenet does not use SSL/TLS, which makes it vulnerable to man-in-the-middle attacks and passive eavesdropping. You should consider upgrading your connection to SSL/TLS <http://doc.supybot.aperio.fr/en/latest/use/faq.html#how-to-make-a-connection-secure>
INFO 2017-02-12T07:36:37 Flushers flushed and garbage collected.
INFO 2017-02-12T07:36:37 Server servercentral.il.us.quakenet.org has version u2.10.12.10+snircd(1.3.4a)
INFO 2017-02-12T07:36:38 Got end of MOTD from servercentral.il.us.quakenet.org
INFO 2017-02-12T07:36:41 Join to #0ad-dev on quakenet synced in 3.51 seconds.
INFO 2017-02-12T08:36:38 Flushers flushed and garbage collected.
...
INFO 2017-02-12T14:36:42 Flushers flushed and garbage collected.
elexis1 commented 7 years ago

It might be possible to reproduce this by simulating lag, as mentioned here https://stackoverflow.com/questions/614795/simulate-delayed-and-dropped-packets-on-linux