Skip to content

Commit 8dfeb9a

Browse files
authored
[ISSUE #1223]Change the return type of the get_transaction_id method in MessageTrait to &CheetahString (#1224)
1 parent cd12693 commit 8dfeb9a

File tree

10 files changed

+43
-31
lines changed

10 files changed

+43
-31
lines changed

rocketmq-broker/src/processor/end_transaction_processor.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -429,14 +429,14 @@ mod tests {
429429
msg_ext.reconsume_times
430430
);
431431
assert!(msg_inner.is_wait_store_msg_ok());
432-
/* assert_eq!(
432+
assert_eq!(
433433
msg_inner.get_transaction_id(),
434-
&msg_ext
434+
msg_ext
435435
.get_user_property(&CheetahString::from_static_str(
436436
MessageConst::PROPERTY_UNIQ_CLIENT_MESSAGE_ID_KEYIDX
437437
))
438-
.unwrap_or_default()
439-
);*/
438+
.as_ref()
439+
);
440440
assert_eq!(msg_inner.message_ext_inner.sys_flag, msg_ext.sys_flag);
441441
/* assert_eq!(
442442
msg_inner.tags_code,

rocketmq-broker/src/transaction/queue/transactional_message_util.rs

+8-9
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,12 @@ impl TransactionalMessageUtil {
7979
.message_ext_inner
8080
.set_born_timestamp(msg_ext.born_timestamp);
8181
msg_inner.message_ext_inner.set_born_host(msg_ext.born_host);
82-
msg_inner.set_transaction_id(
83-
msg_ext
84-
.get_property(&CheetahString::from_static_str(
85-
MessageConst::PROPERTY_UNIQ_CLIENT_MESSAGE_ID_KEYIDX,
86-
))
87-
.unwrap_or_default(),
88-
);
82+
83+
if let Some(transaction_id) = msg_ext.get_property(&CheetahString::from_static_str(
84+
MessageConst::PROPERTY_UNIQ_CLIENT_MESSAGE_ID_KEYIDX,
85+
)) {
86+
msg_inner.set_transaction_id(transaction_id);
87+
}
8988

9089
MessageAccessor::set_properties(&mut msg_inner, msg_ext.get_properties().clone());
9190
MessageAccessor::put_property(
@@ -168,11 +167,11 @@ mod tests {
168167
assert_eq!(msg_inner.get_flag(), msg_ext.get_flag());
169168
assert_eq!(
170169
msg_inner.get_transaction_id(),
171-
&msg_ext
170+
msg_ext
172171
.get_property(&CheetahString::from_static_str(
173172
MessageConst::PROPERTY_UNIQ_CLIENT_MESSAGE_ID_KEYIDX
174173
))
175-
.unwrap_or_default()
174+
.as_ref()
176175
);
177176
}
178177

rocketmq-client/examples/transaction/transaction_producer.rs

+7-2
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,18 @@ impl TransactionListener for TransactionListenerImpl {
9292
.fetch_add(1, std::sync::atomic::Ordering::AcqRel);
9393
let status = value % 3;
9494
let mut guard = self.local_trans.lock();
95-
guard.insert(msg.get_transaction_id().clone(), status);
95+
guard.insert(
96+
msg.get_transaction_id().cloned().unwrap_or_default(),
97+
status,
98+
);
9699
LocalTransactionState::Unknown
97100
}
98101

99102
fn check_local_transaction(&self, msg: &MessageExt) -> LocalTransactionState {
100103
let mut guard = self.local_trans.lock();
101-
let status = guard.get(msg.get_transaction_id()).unwrap_or(&-1);
104+
let status = guard
105+
.get(&msg.get_transaction_id().cloned().unwrap_or_default())
106+
.unwrap_or(&-1);
102107
match status {
103108
1 => LocalTransactionState::CommitMessage,
104109
2 => LocalTransactionState::RollbackMessage,

rocketmq-client/src/producer/producer_impl/default_mq_producer_impl.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2029,7 +2029,7 @@ impl DefaultMQProducerImpl {
20292029
producer_group: self.producer_config.producer_group().clone(),
20302030
message: msg,
20312031
msg_id: msg_id.clone(),
2032-
transaction_id: msg.get_transaction_id().clone(),
2032+
transaction_id: msg.get_transaction_id().cloned().unwrap_or_default(),
20332033
broker_addr: broker_addr.clone(),
20342034
from_transaction_check,
20352035
transaction_state: local_transaction_state,

rocketmq-common/src/common/message.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ pub trait MessageTrait: Any + Display + Debug {
302302
/// # Returns
303303
///
304304
/// A reference to the transaction ID as a `&str`.
305-
fn get_transaction_id(&self) -> &CheetahString;
305+
fn get_transaction_id(&self) -> Option<&CheetahString>;
306306

307307
/// Sets the transaction ID for the message.
308308
///

rocketmq-common/src/common/message/message_batch.rs

+2-5
Original file line numberDiff line numberDiff line change
@@ -179,11 +179,8 @@ impl MessageTrait for MessageBatch {
179179
self.final_message.properties = properties;
180180
}
181181

182-
fn get_transaction_id(&self) -> &CheetahString {
183-
self.final_message
184-
.transaction_id
185-
.as_ref()
186-
.expect("transaction_id is None")
182+
fn get_transaction_id(&self) -> Option<&CheetahString> {
183+
self.final_message.transaction_id.as_ref()
187184
}
188185

189186
fn set_transaction_id(&mut self, transaction_id: CheetahString) {

rocketmq-common/src/common/message/message_client_ext.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ impl MessageTrait for MessageClientExt {
105105
self.message_ext_inner.set_properties(properties);
106106
}
107107

108-
fn get_transaction_id(&self) -> &CheetahString {
108+
fn get_transaction_id(&self) -> Option<&CheetahString> {
109109
self.message_ext_inner.get_transaction_id()
110110
}
111111

rocketmq-common/src/common/message/message_ext.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ impl MessageExt {
230230
impl Default for MessageExt {
231231
fn default() -> Self {
232232
Self {
233-
message: Default::default(),
233+
message: Message::default(),
234234
broker_name: CheetahString::default(),
235235
queue_id: 0,
236236
store_size: 0,
@@ -321,7 +321,7 @@ impl MessageTrait for MessageExt {
321321
}
322322

323323
#[inline]
324-
fn get_transaction_id(&self) -> &CheetahString {
324+
fn get_transaction_id(&self) -> Option<&CheetahString> {
325325
self.message.get_transaction_id()
326326
}
327327

rocketmq-common/src/common/message/message_ext_broker_inner.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ impl MessageTrait for MessageExtBrokerInner {
235235
self.message_ext_inner.set_properties(properties);
236236
}
237237

238-
fn get_transaction_id(&self) -> &CheetahString {
238+
fn get_transaction_id(&self) -> Option<&CheetahString> {
239239
self.message_ext_inner.get_transaction_id()
240240
}
241241

rocketmq-common/src/common/message/message_single.rs

+16-5
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ use crate::common::sys_flag::message_sys_flag::MessageSysFlag;
3838
use crate::common::TopicFilterType;
3939
use crate::MessageUtils;
4040

41-
#[derive(Clone, Debug, Default)]
41+
#[derive(Clone, Debug)]
4242
pub struct Message {
4343
pub topic: CheetahString,
4444
pub flag: i32,
@@ -50,6 +50,19 @@ pub struct Message {
5050
pub transaction_id: Option<CheetahString>,
5151
}
5252

53+
impl Default for Message {
54+
fn default() -> Self {
55+
Self {
56+
topic: CheetahString::new(),
57+
flag: 0,
58+
properties: HashMap::new(),
59+
body: None,
60+
compressed_body: None,
61+
transaction_id: None,
62+
}
63+
}
64+
}
65+
5366
impl Message {
5467
pub fn new(topic: impl Into<CheetahString>, body: &[u8]) -> Self {
5568
Self::with_details(
@@ -328,10 +341,8 @@ impl MessageTrait for Message {
328341
}
329342

330343
#[inline]
331-
fn get_transaction_id(&self) -> &CheetahString {
332-
self.transaction_id
333-
.as_ref()
334-
.expect("transaction_id is None")
344+
fn get_transaction_id(&self) -> Option<&CheetahString> {
345+
self.transaction_id.as_ref()
335346
}
336347

337348
fn set_transaction_id(&mut self, transaction_id: CheetahString) {

0 commit comments

Comments
 (0)