A transient failure makes automatic reduction skip a run for good

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

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

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
25/100
Loại issue
Tính năng
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
backend, data-engineering

Hướng nghiên cứu

Read rules.py at TriggerLoop._requests, automatic-reduction.md under “The trigger loop,” and the linked requirements question in docs/requirements/data.md. Compare the failure cases and prior art in docs/developer/prior-art/; the issue leaves three design questions open. Done requires a decided approach for distinguishing or retrying failures and dataset readiness, with the related behavior and documentation specified.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

The trigger loop counts any record under a rule's label as handled, including a failed one (TriggerLoop._requests in rules.py; automatic-reduction.md, "The trigger loop"). That avoids retrying a dataset that fails at every step. But failed covers three cases that a driver cannot tell apart, since a failed record holds only str(error):

  • the workflow raised, or reported a failure;
  • the framework could not run it: a dataset could not be read, or a write failed;
  • the process died without a Python exception (out-of-memory kill, segfault), which the service must capture from the console and the batch system.

So a transient failure loses a run for good: a slow or missing /ess mount, or a dataset source that lists a run before its file is complete. Mantid's reflectometry autoprocessing hit exactly the second case in 2024 (mantidproject/mantid#36860); they fixed it by listing only runs already in the data cache, not by retrying.

Prior art, in docs/developer/prior-art/ (#67):

  • AiiDA ends a process Finished with a declared exit code, Excepted, or Killed; restart handlers key on exit codes. Transient transport failures are retried with backoff and then paused for a person, not failed.
  • Snakemake on Slurm takes OUT_OF_MEMORY, TIMEOUT, and NODE_FAIL from the batch system, not from the job.
  • Mantid never retries failed rows automatically; a user selects them and processes again.

Questions:

  1. Should a failed record say which kind of failure it was, so that an application can decide retries (relevant to #33, where rules move into applications)?
  2. Should the service retry framework failures, such as an unreadable dataset, before it fails a record (#27)?
  3. Should the dataset source promise to list a dataset only once its file is complete? This ties to the Open question in docs/requirements/data.md on how long after the file writer finishes the catalogue lists a run.
Ngôn ngữ chính
Python
Star
0
Fork
1
Merge trung bình
9 giờ 23 phút
Pull request đã merge (30 ngày)
65

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

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 scipp/essapps

Tất cả issue của scipp/essapps

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.