def processing_crash_dump(self, crash_pk): try: crash = Crash.objects.get(pk=crash_pk) url = furl(crash.upload_file_minidump.url) path = url.pathstr crash_dump_path = os.path.join(S3_MOUNT_PATH, *path.split('/')) stacktrace, errors = get_stacktrace(crash_dump_path) crash.stacktrace = stacktrace crash.stacktrace_json = parse_stacktrace(stacktrace) crash.signature = get_signature(crash.stacktrace_json) crash.save() send_stacktrace_sentry(crash) except FileNotFoundError as exc: logger.error( 'Failed processing_crash_dump', exc_info=True, extra=dict(crash_pk=crash_pk, crash_dump_path=crash_dump_path)) raise self.retry( exc=exc, countdown=2**processing_crash_dump.request.retries) except CommandError as exc: logger.error( 'Failed processing_crash_dump', exc_info=True, extra=dict(crash_pk=crash_pk, crash_dump_path=crash_dump_path)) raise exc
def processing_crash_dump(self, crash_pk): try: crash = Crash.objects.get(pk=crash_pk) url = furl(crash.upload_file_minidump.url) path = url.pathstr crash_dump_path = os.path.join(S3_MOUNT_PATH, *path.split('/')) stacktrace, errors = get_stacktrace(crash_dump_path) crash.stacktrace = stacktrace crash.stacktrace_json = parse_stacktrace(stacktrace) crash.signature = get_signature(crash.stacktrace_json) crash.os = get_os(crash.stacktrace_json) crash.build_number = crash.meta.get('ver') crash.save() send_stacktrace_sentry(crash) except FileNotFoundError as exc: logger.error('Failed processing_crash_dump', exc_info=True, extra=dict(crash_pk=crash_pk, crash_dump_path=crash_dump_path)) raise self.retry(exc=exc, countdown=2 ** processing_crash_dump.request.retries) except CommandError as exc: logger.error('Failed processing_crash_dump', exc_info=True, extra=dict(crash_pk=crash_pk, crash_dump_path=crash_dump_path)) raise exc
def processing_crash_dump(self, crash_pk): try: crash = Crash.objects.get(pk=crash_pk) # assemble crash_dump_path url = furl(crash.upload_file_minidump.url) path = url.pathstr crash_dump_path = os.path.join(S3_MOUNT_PATH, *path.split('/')) # Set various values in the crash object. stacktrace = get_stacktrace(crash_dump_path) crash.stacktrace = stacktrace crash.stacktrace_json = parse_stacktrace(stacktrace) crash.signature = get_signature(crash.stacktrace_json) _os = get_os(crash.stacktrace_json) meta = crash.meta or {} build_number = meta.get('ver', '') channel = meta.get('channel', '') or get_channel(build_number, _os) crash.os = _os crash.build_number = build_number crash.channel = channel crash.save() # Send the crash to the configured logger. send_stacktrace(crash) except FileNotFoundError as exc: logger.error('Failed processing_crash_dump', exc_info=True, extra=dict(crash_pk=crash_pk, crash_dump_path=crash_dump_path)) raise self.retry(exc=exc, countdown=2**processing_crash_dump.request.retries) except CommandError as exc: logger.error('Failed processing_crash_dump', exc_info=True, extra=dict(crash_pk=crash_pk, crash_dump_path=crash_dump_path)) raise exc
def processing_crash_dump(self, crash_pk): try: crash = Crash.objects.get(pk=crash_pk) # assemble crash_dump_path url = furl(crash.upload_file_minidump.url) path = url.pathstr crash_dump_path = os.path.join(S3_MOUNT_PATH, *path.split('/')) # Set various values in the crash object. stacktrace = get_stacktrace(crash_dump_path) crash.stacktrace = stacktrace crash.stacktrace_json = parse_stacktrace(stacktrace) crash.signature = get_signature(crash.stacktrace_json) _os = get_os(crash.stacktrace_json) meta = crash.meta or {} build_number = meta.get('ver', '') channel = meta.get('channel', '') or get_channel(build_number, _os) crash.os = _os crash.build_number = build_number crash.channel = channel crash.save() # Send the crash to the configured logger. send_stacktrace(crash) except FileNotFoundError as exc: logger.error('Failed processing_crash_dump', exc_info=True, extra=dict(crash_pk=crash_pk, crash_dump_path=crash_dump_path)) raise self.retry(exc=exc, countdown=2 ** processing_crash_dump.request.retries) except CommandError as exc: logger.error('Failed processing_crash_dump', exc_info=True, extra=dict(crash_pk=crash_pk, crash_dump_path=crash_dump_path)) raise exc
def test_get_signature(self): self.assertEqual(get_signature(parse_stacktrace(stacktrace)), 'crashedFunc()')