@@ -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
}
@@ -1025,6 +1026,7 @@ impl SlidingSync {
1025
1026
/// Create the inner stream for the view.
1026
1027
///
1027
1028
/// Run this stream to receive new updates from the server.
1029
+ #[ instrument( name = "sync_stream" , skip_all, parent = & self . client. root_span) ]
1028
1030
pub fn stream ( & self ) -> impl Stream < Item = Result < UpdateSummary , crate :: Error > > + ' _ {
1029
1031
let mut views = {
1030
1032
let mut views = BTreeMap :: new ( ) ;
@@ -1036,12 +1038,17 @@ impl SlidingSync {
1036
1038
} ;
1037
1039
1038
1040
debug ! ( ?self . extensions, "Setting view stream going" ) ;
1041
+ let stream_span = Span :: current ( ) ;
1039
1042
1040
1043
async_stream:: stream! {
1041
1044
loop {
1042
- debug! ( ? self . extensions , "Sync loop running " ) ;
1045
+ let sync_span = info_span! ( parent : & stream_span , "sync_once " ) ;
1043
1046
1044
- match self . sync_once( & mut views) . await {
1047
+ sync_span. in_scope( || {
1048
+ debug!( ?self . extensions, "Sync loop running" ) ;
1049
+ } ) ;
1050
+
1051
+ match self . sync_once( & mut views) . instrument( sync_span. clone( ) ) . await {
1045
1052
Ok ( Some ( updates) ) => {
1046
1053
self . failure_count. store( 0 , Ordering :: SeqCst ) ;
1047
1054
yield Ok ( updates)
@@ -1053,19 +1060,21 @@ impl SlidingSync {
1053
1060
if e. client_api_error_kind( ) == Some ( & ErrorKind :: UnknownPos ) {
1054
1061
// session expired, let's reset
1055
1062
if self . failure_count. fetch_add( 1 , Ordering :: SeqCst ) >= 3 {
1056
- error!( "session expired three times in a row" ) ;
1063
+ sync_span . in_scope ( || error!( "session expired three times in a row" ) ) ;
1057
1064
yield Err ( e. into( ) ) ;
1058
1065
1059
1066
break
1060
1067
}
1061
1068
1062
- warn!( "Session expired. Restarting sliding sync." ) ;
1063
- * self . pos. lock_mut( ) = None ;
1069
+ sync_span. in_scope( || {
1070
+ warn!( "Session expired. Restarting sliding sync." ) ;
1071
+ * self . pos. lock_mut( ) = None ;
1064
1072
1065
- // reset our extensions to the last known good ones.
1066
- * self . extensions. lock( ) . unwrap( ) = self . sent_extensions. lock( ) . unwrap( ) . take( ) ;
1073
+ // reset our extensions to the last known good ones.
1074
+ * self . extensions. lock( ) . unwrap( ) = self . sent_extensions. lock( ) . unwrap( ) . take( ) ;
1067
1075
1068
- debug!( ?self . extensions, "Resetting view stream" ) ;
1076
+ debug!( ?self . extensions, "Resetting view stream" ) ;
1077
+ } ) ;
1069
1078
}
1070
1079
1071
1080
yield Err ( e. into( ) ) ;
0 commit comments