Пример #1
0
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
Пример #2
0
    def test_get_stacktrace(self):
        with open(STACKTRACE_PATH, 'rb') as f:
            stacktrace = f.read()

        rezult, stderr = get_stacktrace(CRASH_DUMP_PATH)

        self.assertEqual(bytes(rezult.stdout, 'utf8'), stacktrace)
Пример #3
0
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
Пример #4
0
    def test_get_stacktrace(self):
        with open(STACKTRACE_PATH, 'rb') as f:
            stacktrace = f.read()

        rezult, stderr = get_stacktrace(CRASH_DUMP_PATH)

        self.assertEqual(bytes(rezult.stdout, 'utf8'), stacktrace)
Пример #5
0
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
Пример #6
0
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