@@ -337,35 +337,42 @@ impl BatchLogProcessor {
337337 match message_receiver. recv_timeout ( remaining_time) {
338338 Ok ( BatchMessage :: ExportLog ( log) ) => {
339339 logs. push ( log) ;
340- if logs. len ( ) == config. max_export_batch_size
341- || last_export_time. elapsed ( ) >= config. scheduled_delay
342- {
340+ if logs. len ( ) == config. max_export_batch_size {
341+ otel_debug ! (
342+ name: "BatchLogProcessor.ExportingDueToBatchSize" ,
343+ ) ;
343344 let _ = export_with_timeout_sync (
344- remaining_time ,
345+ config . max_export_timeout ,
345346 & mut exporter,
346347 logs. split_off ( 0 ) ,
347348 & mut last_export_time,
348349 ) ;
349350 }
350351 }
351352 Ok ( BatchMessage :: ForceFlush ( sender) ) => {
353+ otel_debug ! ( name: "BatchLogProcessor.ExportingDueToForceFlush" ) ;
352354 let result = export_with_timeout_sync (
353- remaining_time ,
355+ config . max_export_timeout ,
354356 & mut exporter,
355357 logs. split_off ( 0 ) ,
356358 & mut last_export_time,
357359 ) ;
358360 let _ = sender. send ( result) ;
359361 }
360362 Ok ( BatchMessage :: Shutdown ( sender) ) => {
363+ otel_debug ! ( name: "BatchLogProcessor.ExportingDueToShutdown" ) ;
361364 let result = export_with_timeout_sync (
362- remaining_time ,
365+ config . max_export_timeout ,
363366 & mut exporter,
364367 logs. split_off ( 0 ) ,
365368 & mut last_export_time,
366369 ) ;
367370 let _ = sender. send ( result) ;
368371
372+ otel_debug ! (
373+ name: "BatchLogProcessor.ThreadExiting" ,
374+ reason = "ShutdownRequested"
375+ ) ;
369376 //
370377 // break out the loop and return from the current background thread.
371378 //
@@ -375,19 +382,24 @@ impl BatchLogProcessor {
375382 exporter. set_resource ( & resource) ;
376383 }
377384 Err ( RecvTimeoutError :: Timeout ) => {
385+ otel_debug ! (
386+ name: "BatchLogProcessor.ExportingDueToTimer" ,
387+ ) ;
378388 let _ = export_with_timeout_sync (
379- remaining_time ,
389+ config . max_export_timeout ,
380390 & mut exporter,
381391 logs. split_off ( 0 ) ,
382392 & mut last_export_time,
383393 ) ;
384394 }
385- Err ( err) => {
386- // TODO: this should not happen! Log the error and continue for now.
387- otel_error ! (
388- name: "BatchLogProcessor.InternalError" ,
389- error = format!( "{}" , err)
395+ Err ( RecvTimeoutError :: Disconnected ) => {
396+ // Channel disconnected, only thing to do is break
397+ // out (i.e exit the thread)
398+ otel_debug ! (
399+ name: "BatchLogProcessor.ThreadExiting" ,
400+ reason = "MessageSenderDisconnected"
390401 ) ;
402+ break ;
391403 }
392404 }
393405 }
0 commit comments