@@ -7,6 +7,7 @@ use std::sync::Arc;
77use futures:: future:: { self , FutureExt } ;
88use futures:: stream:: StreamExt ;
99use maplit:: hashmap;
10+ use rdkafka_sys:: RDKafkaErrorCode ;
1011use tokio:: time:: { self , Duration } ;
1112
1213use rdkafka:: consumer:: { CommitMode , Consumer , ConsumerContext , StreamConsumer } ;
@@ -546,13 +547,41 @@ async fn test_consume_partition_order() {
546547 let mut i = 0 ;
547548 while i < 12 {
548549 if let Some ( m) = consumer. recv ( ) . now_or_never ( ) {
549- let partition = m. unwrap ( ) . partition ( ) ;
550+ // retry on transient errors until we get a message
551+ let m = match m {
552+ Err ( KafkaError :: MessageConsumption (
553+ RDKafkaErrorCode :: BrokerTransportFailure ,
554+ ) )
555+ | Err ( KafkaError :: MessageConsumption ( RDKafkaErrorCode :: AllBrokersDown ) )
556+ | Err ( KafkaError :: MessageConsumption ( RDKafkaErrorCode :: OperationTimedOut ) ) => {
557+ continue
558+ }
559+ Err ( err) => {
560+ panic ! ( "Unexpected error receiving message: {:?}" , err) ;
561+ }
562+ Ok ( m) => m,
563+ } ;
564+ let partition: i32 = m. partition ( ) ;
550565 assert ! ( partition == 0 || partition == 2 ) ;
551566 i += 1 ;
552567 }
553568
554569 if let Some ( m) = partition1. recv ( ) . now_or_never ( ) {
555- assert_eq ! ( m. unwrap( ) . partition( ) , 1 ) ;
570+ // retry on transient errors until we get a message
571+ let m = match m {
572+ Err ( KafkaError :: MessageConsumption (
573+ RDKafkaErrorCode :: BrokerTransportFailure ,
574+ ) )
575+ | Err ( KafkaError :: MessageConsumption ( RDKafkaErrorCode :: AllBrokersDown ) )
576+ | Err ( KafkaError :: MessageConsumption ( RDKafkaErrorCode :: OperationTimedOut ) ) => {
577+ continue
578+ }
579+ Err ( err) => {
580+ panic ! ( "Unexpected error receiving message: {:?}" , err) ;
581+ }
582+ Ok ( m) => m,
583+ } ;
584+ assert_eq ! ( m. partition( ) , 1 ) ;
556585 i += 1 ;
557586 }
558587 }
0 commit comments