[
https://issues.apache.org/jira/browse/ARROW-10943?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17253175#comment-17253175
]
Greg Bowyer edited comment on ARROW-10943 at 12/22/20, 12:37 AM:
-----------------------------------------------------------------
I managed to nail down a deterministic test, looks to be RLE encoding related.
{code:java}
#[test]
fn test_bool_bug() {
const total: usize = TEST_SET_SIZE;
const type_length: i32 = -1;
let mut encoder = create_test_encoder::<BoolType>(type_length,
Encoding::RLE);
let mut decoder = create_test_decoder::<BoolType>(type_length,
Encoding::RLE);
//let mut values = <T as RandGen<T>>::gen_vec(type_length, total);
let values: Vec<bool> = vec![
true, true, true, true, true, true, true, true, true, false,
true, false, true, false, true, true, true, false, false, true,
true, true, true, true,
false, true, true, false, false, true, false, false, false, true,
false, false, false,
false, true, false, true, false, false, true, false, false, false,
true, true, true, false,
true, true, true, true, false, true, false, true, false, false,
true, true, false, true,
false, false, true, true, true, true, true, true, true, false,
false, true, true, false,
true, false, true, true, true, false, true, false, true, false,
false, false, true, true,
false, true, true, true, true, false, true, true, false, false,
false, false, true, false,
true, true, true, false, true, false, false, false, false, true,
false, true, true, false,
true, false, true, false, false, true, false, true, true, true,
true, true, true, true,
true, true, true, false, false, true, false, false, false, true,
true, false, false, false,
false, false, true, true, false, false, false, true, false, true,
true, true, true, true,
true, false, false, false, false, true, false, false, false, false,
true, false, false,
false, false, false, false, true, true, true, true, false, true,
false, false, true, true,
true, false, true, false, true, false, false, false, false, false,
true, false, false,
false, true, true, true, true, false, false, false, false, true,
true, true, true, false,
true, true, true, false, true, false, true, true, false, false,
true, false, true, false,
false, true, false, true, true, false, false, false, true, false,
true, true, true, false,
true, true, false, false, false, true, true, false, false, false,
false, false, false,
true, true, false, false, false, true, true, false, false, true,
false, false, true, true,
false, true, true, false, true, true, false, true, false, false,
false, false, false,
false, true, false, true, true, false, false, false, false, false,
false, false, false,
false, true, false, false, false, false, false, true, false, false,
true, true, false,
false, true, true, false, true, true, false, false, true, false,
true, false, true, true,
true, false, false, false, true, true, true, false, true, false,
false, true, false, false,
false, true, false, false, true, false, true, true, true, false,
true, true, true, true,
false, false, true, false, true, false, true, false, false, true,
true, false, false, true,
false, true, false, false, true, false, true, false, false, false,
true, true, true, false,
false, false, true, false, true, false, false, false, true, false,
true, false, false,
false, false, true, true, false, true, false, false, true, true,
true, false, true, false,
false, true, false, true, false, false, true, false, true, true,
true, true, true, true,
true, true, false, false, false, false, false, false, false, true,
false, true, true,
false, true, false, true, false, true, true, true, true, false,
true, true, true, true,
true, false, false, false, false, true, false, true, true, true,
true, true, false, true,
true, false, true, true, false, false, false, true, false, true,
false, true, true, false,
true, true, false, true, true, true, false, true, false, false,
false, false, false, false,
false, true, false, true, false, true, false, true, true, true,
true, true, false, true,
false, false, true, true, true, true, false, true, false, false,
false, true, false, true,
true, false, true, true, false, false, false, false, true, false,
true, true, false, false,
false, true, true, false, false, true, true, true, true, false,
false, false, true, true,
true, true, true, true, false, false, false, false, false, false,
false, false, true, true,
false, true, true, true, false, true, true, false, true, true,
false, false, true, false,
false, true, true, false, false, true, false, true, true, true,
true, true, true, false,
true, false, true, false, true, true, true, true, true, true, true,
false, false, true,
false, false, true, true, false, true, false, true, false, true,
false, false, true, true,
false, true, false, true, true, true, true, true, true, false,
false, false, true, true,
false, true, false, false, true, true, false, false, true, false,
true, true, false, true,
false, true, false, true, false, true, true, false, false, false,
false, true, true, true,
false, true, true, true, false, true, false, false, false, true,
false, false, true, false,
false, true, false, true, true, false, true, false, false, true,
false, true, true, false,
false, false, false, false, true, true, true, true, false, false,
false, true, false,
false, false, true, false, true, true, true, true, false, false,
false, true, true, true,
false, false, true, false, false, false, false, true, false, true,
false, true, false,
false, false, true, false, false, false, false, true, true, true,
true, false, false, true,
false, true, false, true, true, true, false, false, true, true,
true, false, true, true,
false, true, true, false, true, false, false, false, false, false,
true, true, false, true,
false, true, false, true, false, true, true, true, true, true,
true, true, false, false,
false, true, true, true, false, false, true, false, true, false,
true, false, false, false,
true, true, false, true, true, false, false, false, false, false,
true, true, true, false,
true, true, true, true, true, false, false, true, true, true,
false, true, true, false,
true, false, false, false, false, false, true, false, true, true,
true, true, true, true,
true, true, true, true, true, false, true, true, true, false,
false, false, true, true,
true, true, true, true, false, false, true, false, false, false,
false, false, true, false,
false, false, false, true, true, false, true, true, true, true,
true, true, true, true,
false, true, true, false, true, false, false, true, false, true,
false, true, true, true,
true, false, true, false, false, true, true, false, false, true,
false, true, true, false,
false, true, false, true, true, true, true, false, false, false,
true, true, true, true,
true, false, false, true, false, true, false, false, false, true,
true, true, true, false,
false, true, false, false, true, true, false, true, true, false,
false, false, false,
false, true, false, false, true, false, true, false, true, false,
true, false, true, true,
true, true, false, true, false, true, false, true, false, true,
false, false, true, false,
true, false, true, false, false, true, true, true, false, true,
true, false, true, false,
false, false, false, true, false, true, false, true, false, false,
false, true, false,
true, false, false, true, false, false, true, false, false, false,
true, true, false, true,
true, true, true, false, false
];
let mut result_data = vec![bool::default(); total];
// Test put/get spaced.
let num_bytes = bit_util::ceil(total as i64, 8);
let valid_bits = random_bytes(num_bytes as usize);
let values_written = encoder.put_spaced(&values[..],
&valid_bits[..]).unwrap();
let data = encoder.flush_buffer().unwrap();
decoder.set_data(data, values_written).unwrap();
let _ = decoder.get_spaced(
&mut result_data[..],
values.len() - values_written,
&valid_bits[..],
).unwrap();
// Check equality
for i in 0..total {
if bit_util::get_bit(&valid_bits[..], i) {
assert_eq!(result_data[i], values[i]);
} else {
assert_eq!(result_data[i], bool::default());
}
}
let mut actual_total = put_and_get(
&mut encoder,
&mut decoder,
&values[..],
&mut result_data[..],
).unwrap();
assert_eq!(actual_total, total);
assert_eq!(result_data, values);
}
{code}
was (Author: [email protected]):
I managed to nail down a deterministic test, looks to be RLE encoding related.
{code:java}
#[test]
fn test_bool_bug() { const total: usize = TEST_SET_SIZE;
const type_length: i32 = -1; let mut encoder =
create_test_encoder::<BoolType>(type_length, Encoding::RLE);
let mut decoder = create_test_decoder::<BoolType>(type_length,
Encoding::RLE); //let mut values = <T as
RandGen<T>>::gen_vec(type_length, total); let values: Vec<bool> = vec![
true, true, true, true, true, true, true, true, true, false,
true, false, true, false, true, true, true, false, false, true,
true, true, true, true,
false, true, true, false, false, true, false, false, false, true,
false, false, false,
false, true, false, true, false, false, true, false, false, false,
true, true, true, false,
true, true, true, true, false, true, false, true, false, false,
true, true, false, true,
false, false, true, true, true, true, true, true, true, false,
false, true, true, false,
true, false, true, true, true, false, true, false, true, false,
false, false, true, true,
false, true, true, true, true, false, true, true, false, false,
false, false, true, false,
true, true, true, false, true, false, false, false, false, true,
false, true, true, false,
true, false, true, false, false, true, false, true, true, true,
true, true, true, true,
true, true, true, false, false, true, false, false, false, true,
true, false, false, false,
false, false, true, true, false, false, false, true, false, true,
true, true, true, true,
true, false, false, false, false, true, false, false, false, false,
true, false, false,
false, false, false, false, true, true, true, true, false, true,
false, false, true, true,
true, false, true, false, true, false, false, false, false, false,
true, false, false,
false, true, true, true, true, false, false, false, false, true,
true, true, true, false,
true, true, true, false, true, false, true, true, false, false,
true, false, true, false,
false, true, false, true, true, false, false, false, true, false,
true, true, true, false,
true, true, false, false, false, true, true, false, false, false,
false, false, false,
true, true, false, false, false, true, true, false, false, true,
false, false, true, true,
false, true, true, false, true, true, false, true, false, false,
false, false, false,
false, true, false, true, true, false, false, false, false, false,
false, false, false,
false, true, false, false, false, false, false, true, false, false,
true, true, false,
false, true, true, false, true, true, false, false, true, false,
true, false, true, true,
true, false, false, false, true, true, true, false, true, false,
false, true, false, false,
false, true, false, false, true, false, true, true, true, false,
true, true, true, true,
false, false, true, false, true, false, true, false, false, true,
true, false, false, true,
false, true, false, false, true, false, true, false, false, false,
true, true, true, false,
false, false, true, false, true, false, false, false, true, false,
true, false, false,
false, false, true, true, false, true, false, false, true, true,
true, false, true, false,
false, true, false, true, false, false, true, false, true, true,
true, true, true, true,
true, true, false, false, false, false, false, false, false, true,
false, true, true,
false, true, false, true, false, true, true, true, true, false,
true, true, true, true,
true, false, false, false, false, true, false, true, true, true,
true, true, false, true,
true, false, true, true, false, false, false, true, false, true,
false, true, true, false,
true, true, false, true, true, true, false, true, false, false,
false, false, false, false,
false, true, false, true, false, true, false, true, true, true,
true, true, false, true,
false, false, true, true, true, true, false, true, false, false,
false, true, false, true,
true, false, true, true, false, false, false, false, true, false,
true, true, false, false,
false, true, true, false, false, true, true, true, true, false,
false, false, true, true,
true, true, true, true, false, false, false, false, false, false,
false, false, true, true,
false, true, true, true, false, true, true, false, true, true,
false, false, true, false,
false, true, true, false, false, true, false, true, true, true,
true, true, true, false,
true, false, true, false, true, true, true, true, true, true, true,
false, false, true,
false, false, true, true, false, true, false, true, false, true,
false, false, true, true,
false, true, false, true, true, true, true, true, true, false,
false, false, true, true,
false, true, false, false, true, true, false, false, true, false,
true, true, false, true,
false, true, false, true, false, true, true, false, false, false,
false, true, true, true,
false, true, true, true, false, true, false, false, false, true,
false, false, true, false,
false, true, false, true, true, false, true, false, false, true,
false, true, true, false,
false, false, false, false, true, true, true, true, false, false,
false, true, false,
false, false, true, false, true, true, true, true, false, false,
false, true, true, true,
false, false, true, false, false, false, false, true, false, true,
false, true, false,
false, false, true, false, false, false, false, true, true, true,
true, false, false, true,
false, true, false, true, true, true, false, false, true, true,
true, false, true, true,
false, true, true, false, true, false, false, false, false, false,
true, true, false, true,
false, true, false, true, false, true, true, true, true, true,
true, true, false, false,
false, true, true, true, false, false, true, false, true, false,
true, false, false, false,
true, true, false, true, true, false, false, false, false, false,
true, true, true, false,
true, true, true, true, true, false, false, true, true, true,
false, true, true, false,
true, false, false, false, false, false, true, false, true, true,
true, true, true, true,
true, true, true, true, true, false, true, true, true, false,
false, false, true, true,
true, true, true, true, false, false, true, false, false, false,
false, false, true, false,
false, false, false, true, true, false, true, true, true, true,
true, true, true, true,
false, true, true, false, true, false, false, true, false, true,
false, true, true, true,
true, false, true, false, false, true, true, false, false, true,
false, true, true, false,
false, true, false, true, true, true, true, false, false, false,
true, true, true, true,
true, false, false, true, false, true, false, false, false, true,
true, true, true, false,
false, true, false, false, true, true, false, true, true, false,
false, false, false,
false, true, false, false, true, false, true, false, true, false,
true, false, true, true,
true, true, false, true, false, true, false, true, false, true,
false, false, true, false,
true, false, true, false, false, true, true, true, false, true,
true, false, true, false,
false, false, false, true, false, true, false, true, false, false,
false, true, false,
true, false, false, true, false, false, true, false, false, false,
true, true, false, true,
true, true, true, false, false
];
let mut result_data = vec![bool::default(); total];
// Test put/get spaced.
let num_bytes = bit_util::ceil(total as i64, 8);
let valid_bits = random_bytes(num_bytes as usize);
let values_written = encoder.put_spaced(&values[..],
&valid_bits[..]).unwrap();
let data = encoder.flush_buffer().unwrap();
decoder.set_data(data, values_written).unwrap();
let _ = decoder.get_spaced(
&mut result_data[..],
values.len() - values_written,
&valid_bits[..],
).unwrap();
// Check equality
for i in 0..total {
if bit_util::get_bit(&valid_bits[..], i) {
assert_eq!(result_data[i], values[i]);
} else {
assert_eq!(result_data[i], bool::default());
}
}
let mut actual_total = put_and_get(
&mut encoder,
&mut decoder,
&values[..],
&mut result_data[..],
).unwrap();
assert_eq!(actual_total, total);
assert_eq!(result_data, values);
}
{code}
> [Rust] Intermittent build failure in parquet encoding
> -----------------------------------------------------
>
> Key: ARROW-10943
> URL: https://issues.apache.org/jira/browse/ARROW-10943
> Project: Apache Arrow
> Issue Type: Bug
> Components: Rust
> Reporter: Andy Grove
> Priority: Major
> Labels: pull-request-available
> Time Spent: 40m
> Remaining Estimate: 0h
>
> I saw this test failure locally
> {code:java}
> ---- encodings::encoding::tests::test_bool stdout ----
> thread 'encodings::encoding::tests::test_bool' panicked at 'Invalid byte when
> reading bool', parquet/src/util/bit_util.rs:73:18
> {code}
> I ran "cargo test" again and it passed
>
> We have seen this happen in CI as well
--
This message was sent by Atlassian Jira
(v8.3.4#803005)