0001-make-it-possible-to-send-crashes-to-sentry-3527.patch
wcs/qommon/publisher.py | ||
---|---|---|
46 | 46 |
except ImportError: |
47 | 47 |
ET = None |
48 | 48 | |
49 |
try: |
|
50 |
import raven |
|
51 |
except ImportError: |
|
52 |
raven = None |
|
53 | ||
49 | 54 |
from quixote.publish import Publisher, get_request, get_response, get_publisher, redirect |
50 | 55 |
from http_request import HTTPRequest |
51 | 56 |
from http_response import HTTPResponse, AfterJob |
... | ... | |
235 | 240 |
exc_type, exc_value, |
236 | 241 |
tb) |
237 | 242 | |
243 |
self.notify_sentry(exc_tuple, request=self.get_request(), |
|
244 |
context=context) |
|
245 | ||
238 | 246 |
try: |
239 | 247 |
self.logger.log_internal_error(error_summary, plain_error_msg) |
240 | 248 |
except socket.error: |
... | ... | |
245 | 253 |
# this could happen on file descriptor exhaustion |
246 | 254 |
pass |
247 | 255 | |
256 |
def notify_sentry(self, exc_tuple, request=None, context=None): |
|
257 |
if not self.get_site_option('sentry-dsn'): |
|
258 |
return |
|
259 | ||
260 |
client = raven.Client(self.get_site_option('sentry-dsn')) |
|
261 |
extra = {} |
|
262 |
tags = {} |
|
263 |
if context: |
|
264 |
extra['context'] = context |
|
265 |
if request: |
|
266 |
extra['request'] = request.dump() |
|
267 |
tags['url'] = request.get_url() |
|
268 | ||
269 |
client.captureException(exc_tuple, extra=extra, tags=tags) |
|
270 | ||
248 | 271 |
def finish_successful_request(self): |
249 | 272 |
Publisher.finish_successful_request(self) |
250 | 273 |
self.statsd.increment('successful-request') |
... | ... | |
260 | 283 | |
261 | 284 |
(exc_type, exc_value, tb) = sys.exc_info() |
262 | 285 | |
286 |
self.notify_sentry((exc_type, exc_value, tb), request) |
|
287 | ||
263 | 288 |
if exc_type is NotImplementedError: |
264 | 289 |
get_response().set_header('Content-Type', 'text/html') # set back content-type |
265 | 290 |
return template.error_page( |
266 |
- |