@@ -255,34 +255,36 @@ pub fn convert_disk_files_to_parquet(
255
255
custom_partition_fields. insert ( custom_partition_field. to_string ( ) , index) ;
256
256
}
257
257
}
258
- let parquet_file = fs:: File :: create ( & parquet_path) . map_err ( |_| MoveDataError :: Create ) ?;
259
258
let props = parquet_writer_props (
260
259
time_partition. clone ( ) ,
261
260
index_time_partition,
262
261
custom_partition_fields,
263
262
)
264
263
. build ( ) ;
265
-
266
264
schemas. push ( merged_schema. clone ( ) ) ;
267
265
let schema = Arc :: new ( merged_schema) ;
268
- let mut writer = ArrowWriter :: try_new ( parquet_file, schema. clone ( ) , Some ( props) ) ?;
266
+ let parquet_file = fs:: File :: create ( & parquet_path) . map_err ( |_| MoveDataError :: Create ) ?;
267
+ let mut writer = ArrowWriter :: try_new ( & parquet_file, schema. clone ( ) , Some ( props) ) ?;
269
268
for ref record in record_reader. merged_iter ( schema, time_partition. clone ( ) ) {
270
269
writer. write ( record) ?;
271
270
}
272
271
273
272
writer. close ( ) ?;
274
-
275
- for file in files {
276
- let file_size = file. metadata ( ) . unwrap ( ) . len ( ) ;
277
- let file_type = file. extension ( ) . unwrap ( ) . to_str ( ) . unwrap ( ) ;
278
-
279
- if fs:: remove_file ( file. clone ( ) ) . is_err ( ) {
280
- log:: error!( "Failed to delete file. Unstable state" ) ;
281
- process:: abort ( )
273
+ if parquet_file. metadata ( ) . unwrap ( ) . len ( ) == 0 {
274
+ log:: error!( "Invalid parquet file detected, removing it" ) ;
275
+ fs:: remove_file ( parquet_path) . unwrap ( ) ;
276
+ } else {
277
+ for file in files {
278
+ let file_size = file. metadata ( ) . unwrap ( ) . len ( ) ;
279
+ let file_type = file. extension ( ) . unwrap ( ) . to_str ( ) . unwrap ( ) ;
280
+ if fs:: remove_file ( file. clone ( ) ) . is_err ( ) {
281
+ log:: error!( "Failed to delete file. Unstable state" ) ;
282
+ process:: abort ( )
283
+ }
284
+ metrics:: STORAGE_SIZE
285
+ . with_label_values ( & [ "staging" , stream, file_type] )
286
+ . sub ( file_size as i64 ) ;
282
287
}
283
- metrics:: STORAGE_SIZE
284
- . with_label_values ( & [ "staging" , stream, file_type] )
285
- . sub ( file_size as i64 ) ;
286
288
}
287
289
}
288
290
0 commit comments