local-sort.max-num-file-handles below 2 causes a data-volume-dependent crash on spill
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ó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 72/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- java
- Lĩnh vực
- data-engineering
Hướng nghiên cứu
Bắt đầu tại AbstractBinaryExternalMerger.mergeChannelList và lần theo nơi local-sort.max-num-file-handles được đọc cũng như nơi merger được khởi tạo. Tái hiện với giá trị 1 và nhiều tệp spill, sau đó xác minh rằng quá trình khởi tạo từ chối fan-in nhỏ hơn 2 bằng một IllegalArgumentException rõ ràng trước khi bắt đầu sắp xếp.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Search before asking
- I searched in the issues and found no similar issues.
Paimon version
master (1.5-SNAPSHOT)
Compute Engine
Any engine doing an external sort that spills (large sort / merge).
Minimal reproduce step
- Set
local-sort.max-num-file-handles = 1. - Run a sort large enough to produce more than one spill file.
What doesn't meet your expectations?
The job crashes with an IllegalArgumentException (a negative subList argument), but only after the second spill file appears. local-sort.max-num-file-handles (the external-merge fan-in, default 128) has no lower-bound validation, so it can be set to 1. With fan-in = 1, AbstractBinaryExternalMerger.mergeChannelList divides by maxFanIn - 1 = 0, yielding Integer.MAX_VALUE merges and a negative subList bound. Because it only triggers on the second spill, it passes small-data testing and then crash-loops in production as data grows (the job restarts on the same config and fails again). It should fail fast at construction with a clear message.
Anything else?
A fan-in of 1 is degenerate for a merge sort (it can never converge N runs), so rejecting it up front is correct.
Are you willing to submit a PR?
- I'm willing to submit a PR!
- Ngôn ngữ chính
- Java
- Star
- 3.4k
- Fork
- 1.4k
- Merge trung bình
- 1 ngày 10 giờ
- Pull request đã merge (30 ngày)
- 481
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của apache/paimon
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
apache/paimon#10332 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] [Hive] IndexOutOfBoundsException when converting an unavailable dynamic BETWEEN predicateCó thể làm lại được @zhang-arvin đã nhận 39 ngày trước và không có pull request nào đang mở. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
apache/paimon#9440 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] Hive query on Paimon table fails with 'Proxy user is not supported' when Kerberos proxy user is usedCó thể đã có người làm @sohurdc đã nhận 49 ngày trước. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
apache/paimon#9006 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] FileIndexFormat.Reader leaks input stream when construction fails with a runtime exceptionCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của apache/paimon
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
floci-io/floci#5369 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
sqlcipher/sqlcipher-android#97 · 1 bình luận ·
-
area-integrations
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug IIIF interoperability
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100