datafusion-proto: decoding an AvroScan node without the avro feature panics
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ó
- 1/5
- Thời gian dự kiến
- Dưới một giờ
- Mức phù hợp với người mới
- 85/100
Hướng nghiên cứu
Panic đến từ nhánh #[cfg(not(feature = "avro"))] dành cho AvroScan trong datafusion/proto/src/physical_plan/mod.rs, khoảng dòng 1238-1247. Hãy sao chép nhánh ParquetScan ngay phía trên, nhánh này trả về not_impl_err! cho cùng trường hợp. Hoàn thành khi giải mã một nút AvroScan với tính năng mặc định trả về Err thay vì panic, điều mà một test mới được build không có tính năng avro có thể kiểm tra.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the bug
datafusion-proto is built without avro by default, since its default features are ["parquet"]. In that build, PhysicalPlanNode::try_into_physical_plan panics on an AvroScan node:
#[cfg(not(feature = "avro"))]
panic!(
"Unable to process a Avro PhysicalPlan when `avro` feature is not enabled"
)
The ParquetScan arm just above it handles the same situation with not_impl_err!:
The same code is in 55.1.0, src/physical_plan/mod.rs, lines 1100-1108.
To Reproduce
Build datafusion-proto with default features, then decode a PhysicalPlanNode whose physical_plan_type is AvroScan(Default::default()):
let node = protobuf::PhysicalPlanNode {
physical_plan_type: Some(protobuf::physical_plan_node::PhysicalPlanType::AvroScan(Default::default())),
};
let _ = datafusion_proto::bytes::physical_plan_from_bytes(&node.encode_to_vec(), &ctx.task_ctx());
The arm is an unconditional panic!, so this panics before the node's contents are looked at.
Expected behavior
Return not_impl_err!, as the ParquetScan arm does, so a caller gets Err and keeps running.
Additional context
This matters wherever a process decodes plans it did not encode itself. One example is a distributed worker that receives plan stages from peers. A few bytes of input panic the decoding task, and under panic = "abort" they stop the whole process.
A fix is one line, plus a decode test with the feature off. I can open the PR if that is welcome.
- Ngôn ngữ chính
- Rust
- Star
- 9.6k
- Fork
- 2.6k
- Merge trung bình
- 4 ngày 5 giờ
- Pull request đã merge (30 ngày)
- 319
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọ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/datafusion
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
apache/datafusion#26999 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
`repeat` on `LargeUtf8` aborts the process on a result size no allocation can satisfyCó thể đã có người làm @huong8373tt-beep đã nhận hôm nay. Đang mởbug good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
apache/datafusion#26948 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] atan2 does not normalize -0.0 the way Spark doesCó thể đã có người làm @galaxytemple đã nhận 3 ngày trước. Đang mởbug spark
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
apache/datafusion#26333 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Unparser turns NULL list literals into `[]` and fails on NULL struct/map literalsCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mởbug help wanted unparser
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
apache/datafusion#26316 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Struct union type coercion takes field nullability from the wrong field when field order differsCó thể làm lại được @med9110 đã nhận 19 ngày trước và không có pull request nào đang mở. Đang mởbug help wanted logical-expr tech debt
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
apache/datafusion#26296 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của apache/datafusion
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
test(hydro_std): track_membership join and leave are untestedCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
hydro-project/hydro#3289 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
diagram-bug good first issue help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
enhapu-afk/omaspec#4 ·
-
priority: low ☕️ type: bug 🐛
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug security
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Maintainer thường phản hồi trong vòng 4 ngày