Investigate corrupt file entries inside of buckets

Đang mở
#93 0 bình luận 0 reaction 1 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@hellais đang làm issue này rồi.

Từ ngày 9/9/2024.

Đánh giá

Issue này chưa được đánh giá.

Mô tả

When running the reprocessing of data some corrupt files were encountered. Due to the lack of adequate logging in the temporal cloud interface it's unclear which file exact was affected, but it's for sure inside of the 2024-06-23 bucket and is caused by an empty JSON file, see following stack trace:

{"message":"Input is a zero-length, empty document: line 1 column 1 (char 0)","stackTrace":"  File \"/home/art/repos/ooni/data/oonipipeline/.venv/lib/python3.11/site-packages/temporalio/worker/_activity.py\", line 453, in _run_activity\n    result = await impl.execute_activity(input)\n             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n  File \"/home/art/repos/ooni/data/oonipipeline/.venv/lib/python3.11/site-packages/temporalio/contrib/opentelemetry.py\", line 280, in execute_activity\n    return await super().execute_activity(input)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n  File \"/home/art/repos/ooni/data/oonipipeline/.venv/lib/python3.11/site-packages/temporalio/worker/_interceptor.py\", line 119, in execute_activity\n    return await self.next.execute_activity(input)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n  File \"/home/art/repos/ooni/data/oonipipeline/.venv/lib/python3.11/site-packages/temporalio/worker/_activity.py\", line 711, in execute_activity\n    return await input.fn(*input.args)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n  File \"/home/art/repos/ooni/data/oonipipeline/src/oonipipeline/temporal/activities/observations.py\", line 229, in make_observations\n    measurement_count = sum(await asyncio.gather(*awaitables))\n                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n","cause":{"message":"\n\"\"\"\nTraceback (most recent call last):\n  File \"/usr/lib/python3.11/concurrent/futures/process.py\", line 256, in _process_worker\n    r = call_item.fn(*call_item.args, **call_item.kwargs)\n        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/art/repos/ooni/data/oonipipeline/src/oonipipeline/temporal/activities/observations.py\", line 130, in make_observations_for_file_entry_batch\n    measurement_count, failure_count = make_observations_for_file_entry(\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/art/repos/ooni/data/oonipipeline/src/oonipipeline/temporal/activities/observations.py\", line 74, in make_observations_for_file_entry\n    for msmt_dict in stream_measurements(\n  File \"/home/art/repos/ooni/data/oonipipeline/src/oonidata/dataclient.py\", line 249, in stream_measurements\n    yield from stream_postcan(body)\n  File \"/home/art/repos/ooni/data/oonipipeline/src/oonidata/dataclient.py\", line 162, in stream_postcan\n    post = orjson.loads(in_file.read())\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\norjson.JSONDecodeError: Input is a zero-length, empty document: line 1 column 1 (char 0)\n\"\"\"","applicationFailureInfo":{"type":"_RemoteTraceback"}},"applicationFailureInfo":{"type":"JSONDecodeError"}}

For the moment in order to avoid blocking the reprocessing we bypass it by checking for any exception in the stream_measurement call

Ngôn ngữ chính
Python
Star
11
Fork
6
Merge trung bình
4 ngày 7 giờ
Pull request đã merge (30 ngày)
7

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của ooni/data

Tất cả issue của ooni/data

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.