Skip to content

Commit 055ef0d

Browse files
fix for update schema from staging at server start (#832)
check for invalid arrow files at server start delete the invalid files before creating merged schema
1 parent 28e3ede commit 055ef0d

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

server/src/utils/arrow/merged_reader.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,12 @@ use arrow_array::{RecordBatch, TimestampMillisecondArray};
2121
use arrow_ipc::reader::StreamReader;
2222
use arrow_schema::Schema;
2323
use itertools::kmerge_by;
24-
use std::{fs::File, io::BufReader, path::PathBuf, sync::Arc};
24+
use std::{
25+
fs::{self, File},
26+
io::BufReader,
27+
path::PathBuf,
28+
sync::Arc,
29+
};
2530

2631
use super::{
2732
adapt_batch,
@@ -39,8 +44,15 @@ impl MergedRecordReader {
3944
let mut readers = Vec::with_capacity(files.len());
4045

4146
for file in files {
42-
let reader = StreamReader::try_new(File::open(file).unwrap(), None).map_err(|_| ())?;
43-
readers.push(reader);
47+
//remove empty files before reading
48+
if file.metadata().unwrap().len() == 0 {
49+
log::error!("Invalid file detected, removing it: {:?}", file);
50+
fs::remove_file(file).unwrap();
51+
} else {
52+
let reader =
53+
StreamReader::try_new(File::open(file).unwrap(), None).map_err(|_| ())?;
54+
readers.push(reader);
55+
}
4456
}
4557

4658
Ok(Self { readers })

0 commit comments

Comments
 (0)