raghav-reglobe commented on PR #69872: URL: https://github.com/apache/doris/pull/69872#issuecomment-6526198476
Verified in our environment — the fix behaves as described. **Setup.** aarch64 (Graviton), Ubuntu 22.04, a scratch single-node FE + BE, `enable_arrow_input_validation = true` (the default). Our BE is built from `apache/doris` master as of 2026-10-20 with local patches that do not touch the Arrow reader or the serdes; this PR's commit was cherry-picked onto it (the two `format_v2` files were dropped — our base predates `format_v2`; every other hunk applied as-is). Reproducer = the one from #69858 (int32 → BOOLEAN, utf8 → DECIMAL(10,2)) plus two more families for the MAP/STRUCT guards: an int32 array into a `MAP<STRING,INT>` column and into a `STRUCT<a:INT>` column. `format: arrow` Stream Load; the matching-typed controls (bool / decimal128(10,2) / map / struct) load first. **Before (unpatched BE).** The four controls load. The first mismatch — an `Int32Array` into the BOOLEAN column — kills the BE: `curl: (52) Empty reply from server`, BE exit 139, the same stack as the issue (`check_arrow_validity_bitmap` ← `DataTypeNumberSerDe<TYPE_BOOLEAN>::read_column_from_arrow` ← `DataTypeNullableSerDe::read_column_from_arrow` ← `ArrowStreamReader::_do_get_next_block`). **After (this PR).** All four mismatches come back as a failed load, the BE stays up (0 restarts), and the controls load again afterwards: ``` Arrow column 'b' (int32 -> Nullable(BOOL)): Expected Arrow BooleanArray, got int32. Arrow column 'v' (string -> Nullable(Decimal(10, 2))): Expected Arrow Decimal128Array for DECIMAL64, got string. Arrow column 'm' (int32 -> Nullable(Map(Nullable(String), Nullable(INT)))): Expected Arrow MapArray, got int32. Arrow column 's' (int32 -> Nullable(Struct(a:Nullable(INT)))): Expected Arrow StructArray, got int32. ``` Each returns HTTP 200 with `"Status": "Fail"` and the message above as `Message` (`[INVALID_ARGUMENT]` prefix) within a few seconds. One cosmetic observation, not from this PR: the message carries a trailing `cur path: ` with an empty path on a Stream Load (the file-scanner suffix) — harmless. Thanks for the quick fix. We will carry it on our build until it lands in 4.2.x. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
