Compare commits

..

No commits in common. "7d9ec7a0e5dff80a53e0dd9eb0b83d443968bd2d" and "4085a90c1f5ddda14411a22457bee6f003a296a1" have entirely different histories.

View file

@ -5,7 +5,7 @@ use axum_client_ip::InsecureClientIp;
use conduwuit::{ use conduwuit::{
Err, Error, Result, debug, Err, Error, Result, debug,
debug::INFO_SPAN_LEVEL, debug::INFO_SPAN_LEVEL,
debug_warn, err, error, info, debug_warn, err, error,
result::LogErr, result::LogErr,
trace, trace,
utils::{ utils::{
@ -79,11 +79,13 @@ pub(crate) async fn send_transaction_message_route(
} }
let txn_start_time = Instant::now(); let txn_start_time = Instant::now();
info!( trace!(
pdus = body.pdus.len(), pdus = body.pdus.len(),
edus = body.edus.len(), edus = body.edus.len(),
elapsed = ?txn_start_time.elapsed(),
id = ?body.transaction_id, id = ?body.transaction_id,
"Processing transaction", origin =?body.origin(),
"Starting txn",
); );
let pdus = body let pdus = body
@ -102,21 +104,14 @@ pub(crate) async fn send_transaction_message_route(
.filter_map(Result::ok) .filter_map(Result::ok)
.stream(); .stream();
info!(
pdus = body.pdus.len(),
edus = body.edus.len(),
elapsed = ?txn_start_time.elapsed(),
id = ?body.transaction_id,
"Validated transaction",
);
let results = handle(&services, &client, body.origin(), txn_start_time, pdus, edus).await?; let results = handle(&services, &client, body.origin(), txn_start_time, pdus, edus).await?;
info!( debug!(
pdus = body.pdus.len(), pdus = body.pdus.len(),
edus = body.edus.len(), edus = body.edus.len(),
elapsed = ?txn_start_time.elapsed(), elapsed = ?txn_start_time.elapsed(),
id = ?body.transaction_id, id = ?body.transaction_id,
origin =?body.origin(),
"Finished txn", "Finished txn",
); );
for (id, result) in &results { for (id, result) in &results {
@ -143,10 +138,6 @@ async fn handle(
pdus: impl Stream<Item = Pdu> + Send, pdus: impl Stream<Item = Pdu> + Send,
edus: impl Stream<Item = Edu> + Send, edus: impl Stream<Item = Edu> + Send,
) -> Result<ResolvedMap> { ) -> Result<ResolvedMap> {
edus.for_each_concurrent(automatic_width(), |edu| handle_edu(services, client, origin, edu))
.boxed()
.await;
// group pdus by room // group pdus by room
let pdus = pdus let pdus = pdus
.collect() .collect()
@ -163,8 +154,7 @@ async fn handle(
.into_iter() .into_iter()
.try_stream() .try_stream()
.broad_and_then(|(room_id, pdus): (_, Vec<_>)| { .broad_and_then(|(room_id, pdus): (_, Vec<_>)| {
let count = pdus.len(); handle_room(services, client, origin, started, room_id, pdus.into_iter())
handle_room(services, client, origin, started, room_id, pdus.into_iter(), count)
.map_ok(Vec::into_iter) .map_ok(Vec::into_iter)
.map_ok(IterStream::try_stream) .map_ok(IterStream::try_stream)
}) })
@ -173,6 +163,11 @@ async fn handle(
.boxed() .boxed()
.await?; .await?;
// evaluate edus after pdus, at least for now.
edus.for_each_concurrent(automatic_width(), |edu| handle_edu(services, client, origin, edu))
.boxed()
.await;
Ok(results) Ok(results)
} }
@ -183,7 +178,6 @@ async fn handle_room(
txn_start_time: Instant, txn_start_time: Instant,
room_id: OwnedRoomId, room_id: OwnedRoomId,
pdus: impl Iterator<Item = Pdu> + Send, pdus: impl Iterator<Item = Pdu> + Send,
count: usize,
) -> Result<Vec<(OwnedEventId, Result)>> { ) -> Result<Vec<(OwnedEventId, Result)>> {
let _room_lock = services let _room_lock = services
.rooms .rooms
@ -193,20 +187,10 @@ async fn handle_room(
.await; .await;
let room_id = &room_id; let room_id = &room_id;
let mut n = 0;
pdus.try_stream() pdus.try_stream()
.and_then(|(_, event_id, value)| async move { .and_then(|(_, event_id, value)| async move {
services.server.check_running()?; services.server.check_running()?;
let pdu_start_time = Instant::now(); let pdu_start_time = Instant::now();
info!(
%room_id,
%event_id,
pdu = n + 1,
total = count,
pdu_elapsed = ?pdu_start_time.elapsed(),
txn_elapsed = ?txn_start_time.elapsed(),
"Handling PDU",
);
let result = services let result = services
.rooms .rooms
.event_handler .event_handler
@ -214,16 +198,11 @@ async fn handle_room(
.await .await
.map(|_| ()); .map(|_| ());
info!( debug!(
%room_id,
%event_id,
pdu = n + 1,
total = count,
pdu_elapsed = ?pdu_start_time.elapsed(), pdu_elapsed = ?pdu_start_time.elapsed(),
txn_elapsed = ?txn_start_time.elapsed(), txn_elapsed = ?txn_start_time.elapsed(),
"Finished handling PDU {event_id}", "Finished PDU {event_id}",
); );
n += 1;
Ok((event_id, result)) Ok((event_id, result))
}) })