Skip to content

Commit ed95e69

Browse files
committed
fix(dmq): flakiness in macOS unit tests
Likely due to some deadlock on the mutex in the drop server/client (which is a blocking operation).
1 parent c7c2c63 commit ed95e69

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

internal/mithril-dmq/src/consumer/client/pallas.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ impl<M: TryFromBytes + Debug> DmqConsumerClientPallas<M> {
7474
"socket" => ?self.socket,
7575
"network" => ?self.network
7676
);
77-
let mut client_lock = self.client.lock().await;
77+
let mut client_lock = self.client.try_lock()?;
7878
if let Some(client) = client_lock.take() {
7979
client.abort().await;
8080
}
@@ -249,11 +249,14 @@ mod tests {
249249
}
250250

251251
#[tokio::test(flavor = "multi_thread")]
252-
async fn pallas_dmq_consumer_publisher_succeeds_when_messages_are_available() {
252+
async fn pallas_dmq_consumer_client_succeeds_when_messages_are_available() {
253253
let socket_path = create_temp_dir(current_function!()).join("node.socket");
254254
let reply_messages = fake_msgs();
255255
let server = setup_dmq_server(socket_path.clone(), reply_messages);
256256
let client = tokio::spawn(async move {
257+
// sleep to avoid refused connection from the server
258+
tokio::time::sleep(Duration::from_millis(10)).await;
259+
257260
let consumer = DmqConsumerClientPallas::new(
258261
socket_path,
259262
CardanoNetwork::TestNet(0),
@@ -282,11 +285,14 @@ mod tests {
282285
}
283286

284287
#[tokio::test]
285-
async fn pallas_dmq_consumer_publisher_blocks_when_no_message_available() {
288+
async fn pallas_dmq_consumer_client_blocks_when_no_message_available() {
286289
let socket_path = create_temp_dir(current_function!()).join("node.socket");
287290
let reply_messages = vec![];
288291
let server = setup_dmq_server(socket_path.clone(), reply_messages);
289292
let client = tokio::spawn(async move {
293+
// sleep to avoid refused connection from the server
294+
tokio::time::sleep(Duration::from_millis(10)).await;
295+
290296
let consumer = DmqConsumerClientPallas::<DmqMessageTestPayload>::new(
291297
socket_path,
292298
CardanoNetwork::TestNet(0),
@@ -311,6 +317,9 @@ mod tests {
311317
let reply_messages = fake_msgs();
312318
let server = setup_dmq_server(socket_path.clone(), reply_messages);
313319
let client = tokio::spawn(async move {
320+
// sleep to avoid refused connection from the server
321+
tokio::time::sleep(Duration::from_millis(10)).await;
322+
314323
let consumer = DmqConsumerClientPallas::<DmqMessageTestPayload>::new(
315324
socket_path,
316325
CardanoNetwork::TestNet(0),

internal/mithril-dmq/src/consumer/server/pallas.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ impl DmqConsumerServerPallas {
9898
"socket" => ?self.socket,
9999
"network" => ?self.network
100100
);
101-
let mut server_lock = self.server.lock().await;
101+
let mut server_lock = self.server.try_lock()?;
102102
if let Some(server) = server_lock.take() {
103103
server.abort().await;
104104
}
@@ -464,7 +464,7 @@ mod tests {
464464
});
465465

466466
let result = tokio::select!(
467-
_res = sleep(Duration::from_millis(1000)) => {Err(anyhow!("Timeout"))},
467+
_res = sleep(Duration::from_millis(100)) => {Err(anyhow!("Timeout"))},
468468
_res = dmq_consumer_server.run() => {Ok(())},
469469
_res = client => {Ok(())},
470470
);

internal/mithril-dmq/src/publisher/server/pallas.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ impl DmqPublisherServerPallas {
9999
"socket" => ?self.socket,
100100
"network" => ?self.network
101101
);
102-
let mut server_lock = self.server.lock().await;
102+
let mut server_lock = self.server.try_lock()?;
103103
if let Some(server) = server_lock.take() {
104104
server.abort().await;
105105
}

0 commit comments

Comments
 (0)