Skip to content

Commit 7a1ebfc

Browse files
authored
[ISSUE #1265]🐛Fix RegisterBrokerBody decode error (#1266)
1 parent 1a5dc31 commit 7a1ebfc

1 file changed

Lines changed: 35 additions & 4 deletions

File tree

rocketmq-remoting/src/protocol/body/broker_body/register_broker_body.rs

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ impl RegisterBrokerBody {
104104
}
105105
let bytes = bytes_mut.freeze();
106106

107-
let mut encoder = DeflateEncoder::new(Vec::new(), Compression::default());
107+
let mut encoder = DeflateEncoder::new(Vec::new(), Compression::best());
108108
encoder.write_all(bytes.as_ref()).unwrap();
109109
encoder.finish().unwrap()
110110
}
@@ -120,13 +120,13 @@ impl RegisterBrokerBody {
120120
return SerdeJsonUtils::decode::<RegisterBrokerBody>(bytes.iter().as_slice()).unwrap();
121121
}
122122
let mut decoder = DeflateDecoder::new(bytes.as_ref());
123-
let mut bytes_mut = BytesMut::new();
124-
let result = decoder.read(&mut bytes_mut);
123+
let mut vec = Vec::new();
124+
let result = decoder.read_to_end(&mut vec);
125125
let mut register_broker_body = RegisterBrokerBody::default();
126126
if result.is_err() {
127127
return register_broker_body;
128128
}
129-
let mut bytes = bytes_mut.freeze();
129+
let mut bytes = Bytes::from(vec);
130130
let data_version_length = bytes.get_i32();
131131
let data_version_bytes = bytes.copy_to_bytes(data_version_length as usize);
132132
let data_version = DataVersion::decode(data_version_bytes.as_ref()).unwrap();
@@ -209,4 +209,35 @@ mod tests {
209209
RegisterBrokerBody::decode(&Bytes::from(encoded), false, RocketMqVersion::V500);
210210
assert_eq!(decoded.filter_server_list, body.filter_server_list);
211211
}
212+
213+
#[test]
214+
fn test_encode() {
215+
let mut register_broker_body = RegisterBrokerBody::default();
216+
let mut topic_config_table = HashMap::new();
217+
for i in 0..1 {
218+
topic_config_table.insert(
219+
CheetahString::from_string(i.to_string()),
220+
TopicConfig::new(CheetahString::from_string(i.to_string())),
221+
);
222+
}
223+
register_broker_body
224+
.topic_config_serialize_wrapper
225+
.topic_config_serialize_wrapper
226+
.topic_config_table = topic_config_table;
227+
let compare_encode = register_broker_body.encode(true);
228+
let compare_decode =
229+
RegisterBrokerBody::decode(&Bytes::from(compare_encode), true, RocketMqVersion::V500);
230+
assert_eq!(
231+
register_broker_body
232+
.topic_config_serialize_wrapper
233+
.topic_config_serialize_wrapper
234+
.topic_config_table
235+
.get("1"),
236+
compare_decode
237+
.topic_config_serialize_wrapper
238+
.topic_config_serialize_wrapper
239+
.topic_config_table
240+
.get("1")
241+
);
242+
}
212243
}

0 commit comments

Comments
 (0)