Skip to content

Commit d76ea7c

Browse files
committed
Remove blocking async overlay events loop
1 parent 15e1dea commit d76ea7c

File tree

2 files changed

+44
-40
lines changed

2 files changed

+44
-40
lines changed

trin-history/src/events.rs

+22-20
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ impl HistoryEvents {
1616
loop {
1717
tokio::select! {
1818
Some(talk_request) = self.event_rx.recv() => {
19-
self.handle_history_talk_request(talk_request).await;
19+
self.handle_history_talk_request(talk_request);
2020
}
2121
Some(event) = self.utp_listener_rx.recv() => {
2222
if let Err(err) = self.network.overlay.process_utp_event(event) {
@@ -28,25 +28,27 @@ impl HistoryEvents {
2828
}
2929

3030
/// Handle history network TalkRequest event
31-
async fn handle_history_talk_request(&self, talk_request: TalkRequest) {
32-
let reply = match self
33-
.network
34-
.overlay
35-
.process_one_request(&talk_request)
36-
.instrument(tracing::info_span!("history_network"))
37-
.await
38-
{
39-
Ok(response) => {
40-
debug!("Sending reply: {:?}", response);
41-
Message::from(response).into()
42-
}
43-
Err(error) => {
44-
error!("Failed to process portal history event: {error}");
45-
error.to_string().into_bytes()
31+
fn handle_history_talk_request(&self, talk_request: TalkRequest) {
32+
let network = Arc::clone(&self.network);
33+
tokio::spawn(async move {
34+
let reply = match network
35+
.overlay
36+
.process_one_request(&talk_request)
37+
.instrument(tracing::info_span!("history_network"))
38+
.await
39+
{
40+
Ok(response) => {
41+
debug!("Sending reply: {:?}", response);
42+
Message::from(response).into()
43+
}
44+
Err(error) => {
45+
error!("Failed to process portal history event: {error}");
46+
error.to_string().into_bytes()
47+
}
48+
};
49+
if let Err(error) = talk_request.respond(reply) {
50+
warn!("Failed to send reply: {error}");
4651
}
47-
};
48-
if let Err(error) = talk_request.respond(reply) {
49-
warn!("Failed to send reply: {error}");
50-
}
52+
});
5153
}
5254
}

trin-state/src/events.rs

+22-20
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ impl StateEvents {
1616
loop {
1717
tokio::select! {
1818
Some(talk_request) = self.event_rx.recv() => {
19-
self.handle_state_talk_request(talk_request).await;
19+
self.handle_state_talk_request(talk_request);
2020
}
2121
Some(event) = self.utp_listener_rx.recv() => {
2222
if let Err(err) = self.network.overlay.process_utp_event(event) {
@@ -28,25 +28,27 @@ impl StateEvents {
2828
}
2929

3030
/// Handle state network TalkRequest event
31-
async fn handle_state_talk_request(&self, talk_request: TalkRequest) {
32-
let reply = match self
33-
.network
34-
.overlay
35-
.process_one_request(&talk_request)
36-
.instrument(tracing::info_span!("state_network"))
37-
.await
38-
{
39-
Ok(response) => {
40-
debug!("Sending reply: {:?}", response);
41-
Message::from(response).into()
42-
}
43-
Err(error) => {
44-
error!("Failed to process portal state event: {error}");
45-
error.to_string().into_bytes()
31+
fn handle_state_talk_request(&self, talk_request: TalkRequest) {
32+
let network = Arc::clone(&self.network);
33+
tokio::spawn(async move {
34+
let reply = match network
35+
.overlay
36+
.process_one_request(&talk_request)
37+
.instrument(tracing::info_span!("state_network"))
38+
.await
39+
{
40+
Ok(response) => {
41+
debug!("Sending reply: {:?}", response);
42+
Message::from(response).into()
43+
}
44+
Err(error) => {
45+
error!("Failed to process portal state event: {error}");
46+
error.to_string().into_bytes()
47+
}
48+
};
49+
if let Err(error) = talk_request.respond(reply) {
50+
warn!("Failed to send reply: {error}");
4651
}
47-
};
48-
if let Err(error) = talk_request.respond(reply) {
49-
warn!("Failed to send reply: {error}");
50-
}
52+
});
5153
}
5254
}

0 commit comments

Comments
 (0)