@@ -45,7 +45,7 @@ use ruma::{
45
45
} ;
46
46
use serde:: { Deserialize , Serialize } ;
47
47
use thiserror:: Error ;
48
- use tracing:: { debug, error, instrument, trace, warn} ;
48
+ use tracing:: { debug, error, info_span , instrument, trace, warn, Instrument , Span } ;
49
49
use url:: Url ;
50
50
51
51
#[ cfg( feature = "experimental-timeline" ) ]
@@ -265,6 +265,7 @@ impl SlidingSyncRoom {
265
265
/// Use `Timeline::latest_event` instead if you already have a timeline for
266
266
/// this `SlidingSyncRoom`.
267
267
#[ cfg( feature = "experimental-timeline" ) ]
268
+ #[ instrument( skip_all, parent = & self . client. root_span) ]
268
269
pub async fn latest_event ( & self ) -> Option < EventTimelineItem > {
269
270
self . timeline_no_fully_read_tracking ( ) . await ?. latest_event ( )
270
271
}
@@ -1035,6 +1036,7 @@ impl SlidingSync {
1035
1036
/// Create the inner stream for the view.
1036
1037
///
1037
1038
/// Run this stream to receive new updates from the server.
1039
+ #[ instrument( name = "sync_stream" , skip_all, parent = & self . client. root_span) ]
1038
1040
pub fn stream ( & self ) -> impl Stream < Item = Result < UpdateSummary , crate :: Error > > + ' _ {
1039
1041
let mut views = {
1040
1042
let mut views = BTreeMap :: new ( ) ;
@@ -1046,12 +1048,17 @@ impl SlidingSync {
1046
1048
} ;
1047
1049
1048
1050
debug ! ( ?self . extensions, "Setting view stream going" ) ;
1051
+ let stream_span = Span :: current ( ) ;
1049
1052
1050
1053
async_stream:: stream! {
1051
1054
loop {
1052
- debug! ( ? self . extensions , "Sync loop running " ) ;
1055
+ let sync_span = info_span! ( parent : & stream_span , "sync_once " ) ;
1053
1056
1054
- match self . sync_once( & mut views) . await {
1057
+ sync_span. in_scope( || {
1058
+ debug!( ?self . extensions, "Sync loop running" ) ;
1059
+ } ) ;
1060
+
1061
+ match self . sync_once( & mut views) . instrument( sync_span. clone( ) ) . await {
1055
1062
Ok ( Some ( updates) ) => {
1056
1063
self . failure_count. store( 0 , Ordering :: SeqCst ) ;
1057
1064
yield Ok ( updates)
@@ -1063,19 +1070,21 @@ impl SlidingSync {
1063
1070
if e. client_api_error_kind( ) == Some ( & ErrorKind :: UnknownPos ) {
1064
1071
// session expired, let's reset
1065
1072
if self . failure_count. fetch_add( 1 , Ordering :: SeqCst ) >= 3 {
1066
- error!( "session expired three times in a row" ) ;
1073
+ sync_span . in_scope ( || error!( "session expired three times in a row" ) ) ;
1067
1074
yield Err ( e. into( ) ) ;
1068
1075
1069
1076
break
1070
1077
}
1071
1078
1072
- warn!( "Session expired. Restarting sliding sync." ) ;
1073
- * self . pos. lock_mut( ) = None ;
1079
+ sync_span. in_scope( || {
1080
+ warn!( "Session expired. Restarting sliding sync." ) ;
1081
+ * self . pos. lock_mut( ) = None ;
1074
1082
1075
- // reset our extensions to the last known good ones.
1076
- * self . extensions. lock( ) . unwrap( ) = self . sent_extensions. lock( ) . unwrap( ) . take( ) ;
1083
+ // reset our extensions to the last known good ones.
1084
+ * self . extensions. lock( ) . unwrap( ) = self . sent_extensions. lock( ) . unwrap( ) . take( ) ;
1077
1085
1078
- debug!( ?self . extensions, "Resetting view stream" ) ;
1086
+ debug!( ?self . extensions, "Resetting view stream" ) ;
1087
+ } ) ;
1079
1088
}
1080
1089
1081
1090
yield Err ( e. into( ) ) ;
0 commit comments