@@ -97,6 +97,9 @@ pub struct Messenger<RW> {
97
97
/// This will be used by [`request`](Self::request) to queue up messages.
98
98
stream_write : Arc < AsyncMutex < WriteHalf < RW > > > ,
99
99
100
+ /// Client ID.
101
+ client_id : Arc < str > ,
102
+
100
103
/// The next correlation ID.
101
104
///
102
105
/// This is used to map responses to active requests.
@@ -175,7 +178,7 @@ impl<RW> Messenger<RW>
175
178
where
176
179
RW : AsyncRead + AsyncWrite + Send + ' static ,
177
180
{
178
- pub fn new ( stream : RW , max_message_size : usize ) -> Self {
181
+ pub fn new ( stream : RW , max_message_size : usize , client_id : Arc < str > ) -> Self {
179
182
let ( stream_read, stream_write) = tokio:: io:: split ( stream) ;
180
183
let state = Arc :: new ( Mutex :: new ( MessengerState :: RequestMap ( HashMap :: default ( ) ) ) ) ;
181
184
let state_captured = Arc :: clone ( & state) ;
@@ -255,6 +258,7 @@ where
255
258
256
259
Self {
257
260
stream_write : Arc :: new ( AsyncMutex :: new ( stream_write) ) ,
261
+ client_id,
258
262
correlation_id : AtomicI32 :: new ( 0 ) ,
259
263
version_ranges : RwLock :: new ( HashMap :: new ( ) ) ,
260
264
state,
@@ -304,7 +308,7 @@ where
304
308
correlation_id : Int32 ( correlation_id) ,
305
309
// Technically we don't need to send a client_id, but newer redpanda version fail to parse the message
306
310
// without it. See https://github.com/influxdata/rskafka/issues/169 .
307
- client_id : Some ( NullableString ( Some ( String :: from ( env ! ( "CARGO_PKG_NAME" ) ) ) ) ) ,
311
+ client_id : Some ( NullableString ( Some ( String :: from ( self . client_id . as_ref ( ) ) ) ) ) ,
308
312
tagged_fields : Some ( TaggedFields :: default ( ) ) ,
309
313
} ;
310
314
let header_version = if use_tagged_fields_in_request {
@@ -620,12 +624,15 @@ mod tests {
620
624
621
625
use super :: * ;
622
626
623
- use crate :: protocol:: {
624
- error:: Error as ApiError ,
625
- messages:: {
626
- ApiVersionsResponse , ApiVersionsResponseApiKey , ListOffsetsRequest , NORMAL_CONSUMER ,
627
+ use crate :: {
628
+ build_info:: DEFAULT_CLIENT_ID ,
629
+ protocol:: {
630
+ error:: Error as ApiError ,
631
+ messages:: {
632
+ ApiVersionsResponse , ApiVersionsResponseApiKey , ListOffsetsRequest , NORMAL_CONSUMER ,
633
+ } ,
634
+ traits:: WriteType ,
627
635
} ,
628
- traits:: WriteType ,
629
636
} ;
630
637
631
638
#[ test]
@@ -666,7 +673,7 @@ mod tests {
666
673
#[ tokio:: test]
667
674
async fn test_sync_versions_ok ( ) {
668
675
let ( sim, rx) = MessageSimulator :: new ( ) ;
669
- let messenger = Messenger :: new ( rx, 1_000 ) ;
676
+ let messenger = Messenger :: new ( rx, 1_000 , Arc :: from ( DEFAULT_CLIENT_ID ) ) ;
670
677
671
678
// construct response
672
679
let mut msg = vec ! [ ] ;
@@ -703,7 +710,7 @@ mod tests {
703
710
#[ tokio:: test]
704
711
async fn test_sync_versions_ignores_error_code ( ) {
705
712
let ( sim, rx) = MessageSimulator :: new ( ) ;
706
- let messenger = Messenger :: new ( rx, 1_000 ) ;
713
+ let messenger = Messenger :: new ( rx, 1_000 , Arc :: from ( DEFAULT_CLIENT_ID ) ) ;
707
714
708
715
// construct error response
709
716
let mut msg = vec ! [ ] ;
@@ -766,7 +773,7 @@ mod tests {
766
773
#[ tokio:: test]
767
774
async fn test_sync_versions_ignores_read_code ( ) {
768
775
let ( sim, rx) = MessageSimulator :: new ( ) ;
769
- let messenger = Messenger :: new ( rx, 1_000 ) ;
776
+ let messenger = Messenger :: new ( rx, 1_000 , Arc :: from ( DEFAULT_CLIENT_ID ) ) ;
770
777
771
778
// construct error response
772
779
let mut msg = vec ! [ ] ;
@@ -817,7 +824,7 @@ mod tests {
817
824
#[ tokio:: test]
818
825
async fn test_sync_versions_err_flipped_range ( ) {
819
826
let ( sim, rx) = MessageSimulator :: new ( ) ;
820
- let messenger = Messenger :: new ( rx, 1_000 ) ;
827
+ let messenger = Messenger :: new ( rx, 1_000 , Arc :: from ( DEFAULT_CLIENT_ID ) ) ;
821
828
822
829
// construct response
823
830
let mut msg = vec ! [ ] ;
@@ -850,7 +857,7 @@ mod tests {
850
857
#[ tokio:: test]
851
858
async fn test_sync_versions_ignores_garbage ( ) {
852
859
let ( sim, rx) = MessageSimulator :: new ( ) ;
853
- let messenger = Messenger :: new ( rx, 1_000 ) ;
860
+ let messenger = Messenger :: new ( rx, 1_000 , Arc :: from ( DEFAULT_CLIENT_ID ) ) ;
854
861
855
862
// construct response
856
863
let mut msg = vec ! [ ] ;
@@ -914,7 +921,7 @@ mod tests {
914
921
#[ tokio:: test]
915
922
async fn test_sync_versions_err_no_working_version ( ) {
916
923
let ( sim, rx) = MessageSimulator :: new ( ) ;
917
- let messenger = Messenger :: new ( rx, 1_000 ) ;
924
+ let messenger = Messenger :: new ( rx, 1_000 , Arc :: from ( DEFAULT_CLIENT_ID ) ) ;
918
925
919
926
// construct error response
920
927
for ( i, v) in ( ( ApiVersionsRequest :: API_VERSION_RANGE . min ( ) . 0 . 0 )
@@ -953,7 +960,7 @@ mod tests {
953
960
#[ tokio:: test]
954
961
async fn test_poison_hangup ( ) {
955
962
let ( sim, rx) = MessageSimulator :: new ( ) ;
956
- let messenger = Messenger :: new ( rx, 1_000 ) ;
963
+ let messenger = Messenger :: new ( rx, 1_000 , Arc :: from ( DEFAULT_CLIENT_ID ) ) ;
957
964
messenger. set_version_ranges ( HashMap :: from ( [ (
958
965
ApiKey :: ListOffsets ,
959
966
ListOffsetsRequest :: API_VERSION_RANGE ,
@@ -975,7 +982,7 @@ mod tests {
975
982
#[ tokio:: test]
976
983
async fn test_poison_negative_message_size ( ) {
977
984
let ( sim, rx) = MessageSimulator :: new ( ) ;
978
- let messenger = Messenger :: new ( rx, 1_000 ) ;
985
+ let messenger = Messenger :: new ( rx, 1_000 , Arc :: from ( DEFAULT_CLIENT_ID ) ) ;
979
986
messenger. set_version_ranges ( HashMap :: from ( [ (
980
987
ApiKey :: ListOffsets ,
981
988
ListOffsetsRequest :: API_VERSION_RANGE ,
@@ -1008,7 +1015,7 @@ mod tests {
1008
1015
#[ tokio:: test]
1009
1016
async fn test_broken_msg_header_does_not_poison ( ) {
1010
1017
let ( sim, rx) = MessageSimulator :: new ( ) ;
1011
- let messenger = Messenger :: new ( rx, 1_000 ) ;
1018
+ let messenger = Messenger :: new ( rx, 1_000 , Arc :: from ( DEFAULT_CLIENT_ID ) ) ;
1012
1019
messenger. set_version_ranges ( HashMap :: from ( [ (
1013
1020
ApiKey :: ApiVersions ,
1014
1021
ApiVersionsRequest :: API_VERSION_RANGE ,
@@ -1053,7 +1060,7 @@ mod tests {
1053
1060
let ( tx_front, rx_middle) = tokio:: io:: duplex ( 1 ) ;
1054
1061
let ( tx_middle, mut rx_back) = tokio:: io:: duplex ( 1 ) ;
1055
1062
1056
- let messenger = Messenger :: new ( tx_front, 1_000 ) ;
1063
+ let messenger = Messenger :: new ( tx_front, 1_000 , Arc :: from ( DEFAULT_CLIENT_ID ) ) ;
1057
1064
1058
1065
// create two barriers:
1059
1066
// - pause: will be passed after 3 bytes were sent by the client
0 commit comments