@@ -31,7 +31,7 @@ use std::{
3131 collections:: { HashMap , HashSet } ,
3232 sync:: Arc ,
3333} ;
34- use tracing:: error;
34+ use tracing:: { error, info_span } ;
3535
3636use super :: EventFormat ;
3737use super :: { detect_schema_conflicts, rename_conflicting_fields_in_json} ;
@@ -86,8 +86,12 @@ impl EventFormat for Event {
8686 // IMPORTANT: Detect conflicts BEFORE update_field_type_in_schema, because
8787 // update_field_type_in_schema may override types (e.g., force Utf8 to Timestamp
8888 // if existing schema has Timestamp), which would hide the actual conflict.
89- let raw_inferred_schema = infer_json_schema_from_iterator ( value_arr. iter ( ) . map ( Ok ) )
90- . map_err ( |err| anyhow ! ( "Could not infer schema for this event due to err {:?}" , err) ) ?;
89+ let raw_inferred_schema = {
90+ let _span = info_span ! ( "infer_json_schema" , record_count = value_arr. len( ) ) . entered ( ) ;
91+ infer_json_schema_from_iterator ( value_arr. iter ( ) . map ( Ok ) ) . map_err ( |err| {
92+ anyhow ! ( "Could not infer schema for this event due to err {:?}" , err)
93+ } ) ?
94+ } ;
9195
9296 // Detect schema conflicts using raw inferred schema vs existing stream schema
9397 // Pass the actual values and schema_version to check if values can be coerced to existing types
@@ -110,7 +114,11 @@ impl EventFormat for Event {
110114 collect_keys ( value_arr. iter ( ) ) . expect ( "fields can be collected from array of objects" ) ;
111115
112116 let mut is_first = false ;
113- let ( value_arr, schema) = match derive_arrow_schema ( stream_schema, fields) {
117+ let res = {
118+ let _span = info_span ! ( "derive_arrow_schema" ) . entered ( ) ;
119+ derive_arrow_schema ( stream_schema, fields)
120+ } ;
121+ let ( value_arr, schema) = match res {
114122 Ok ( schema) => ( value_arr, schema) ,
115123 Err ( _) => {
116124 let mut infer_schema = infer_json_schema_from_iterator ( value_arr. iter ( ) . map ( Ok ) )
@@ -155,6 +163,7 @@ impl EventFormat for Event {
155163
156164 // Convert the Data type (defined above) to arrow record batch
157165 fn decode ( data : Self :: Data , schema : Arc < Schema > ) -> Result < RecordBatch , anyhow:: Error > {
166+ let _span = info_span ! ( "json_to_recordbatch" , record_count = data. len( ) ) . entered ( ) ;
158167 let array_capacity = round_upto_multiple_of_64 ( data. len ( ) ) ;
159168 let mut reader = ReaderBuilder :: new ( schema)
160169 . with_batch_size ( array_capacity)
0 commit comments