Unverified Commit 37e318be authored by Aaron Hill's avatar Aaron Hill
Browse files

Properly re-raise exceptions during streaming

parent 3b6d52ba
...@@ -9,6 +9,7 @@ from __future__ import absolute_import, print_function ...@@ -9,6 +9,7 @@ from __future__ import absolute_import, print_function
import logging import logging
import re import re
import requests import requests
import sys
from requests.exceptions import Timeout from requests.exceptions import Timeout
from threading import Thread from threading import Thread
from time import sleep from time import sleep
...@@ -230,7 +231,7 @@ class Stream(object): ...@@ -230,7 +231,7 @@ class Stream(object):
# Connect and process the stream # Connect and process the stream
error_counter = 0 error_counter = 0
resp = None resp = None
exception = None exc_info = None
while self.running: while self.running:
if self.retry_count is not None: if self.retry_count is not None:
if error_counter > self.retry_count: if error_counter > self.retry_count:
...@@ -267,7 +268,7 @@ class Stream(object): ...@@ -267,7 +268,7 @@ class Stream(object):
# If it's not time out treat it like any other exception # If it's not time out treat it like any other exception
if isinstance(exc, ssl.SSLError): if isinstance(exc, ssl.SSLError):
if not (exc.args and 'timed out' in str(exc.args[0])): if not (exc.args and 'timed out' in str(exc.args[0])):
exception = exc exc_info = sys.exc_info()
break break
if self.listener.on_timeout() is False: if self.listener.on_timeout() is False:
break break
...@@ -277,7 +278,9 @@ class Stream(object): ...@@ -277,7 +278,9 @@ class Stream(object):
self.snooze_time = min(self.snooze_time + self.snooze_time_step, self.snooze_time = min(self.snooze_time + self.snooze_time_step,
self.snooze_time_cap) self.snooze_time_cap)
except Exception as exc: except Exception as exc:
exception = exc exc_info = sys.exc_info()
print(exc_info)
import pdb; pdb.post_mortem(exc_info[2])
# any other exception is fatal, so kill loop # any other exception is fatal, so kill loop
break break
...@@ -288,10 +291,10 @@ class Stream(object): ...@@ -288,10 +291,10 @@ class Stream(object):
self.new_session() self.new_session()
if exception: if exc_info:
# call a handler first so that the exception can be logged. # call a handler first so that the exception can be logged.
self.listener.on_exception(exception) self.listener.on_exception(exc_info[1])
raise exception six.reraise(*exc_info)
def _data(self, data): def _data(self, data):
if self.listener.on_data(data) is False: if self.listener.on_data(data) is False:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment