@@ -164,7 +164,7 @@ impl TimelineBuilder {
164164 room. client ( ) . event_cache ( ) . subscribe ( ) ?;
165165
166166 let ( room_event_cache, event_cache_drop) = room. event_cache ( ) . await ?;
167- let ( _, event_subscriber) = room_event_cache. subscribe ( ) . await . unwrap ( ) ;
167+ let ( _, event_subscriber) = room_event_cache. subscribe ( ) . await ? ;
168168
169169 let is_room_encrypted = room
170170 . latest_encryption_state ( )
@@ -209,36 +209,40 @@ impl TimelineBuilder {
209209 . instrument ( span)
210210 } ) ;
211211
212- let thread_update_join_handle =
213- if let TimelineFocus :: Thread { root_event_id : root } = & focus {
214- Some ( {
215- let span = info_span ! (
216- parent: Span :: none( ) ,
217- "thread_live_update_handler" ,
218- room_id = ?room. room_id( ) ,
219- focus = focus. debug_string( ) ,
220- prefix = internal_id_prefix
221- ) ;
222- span. follows_from ( Span :: current ( ) ) ;
223-
224- // Note: must be done here *before* spawning the task, to avoid race conditions
225- // with event cache updates happening in the background.
226- let ( _events, receiver) =
227- room_event_cache. subscribe_to_thread ( root. clone ( ) ) . await . unwrap ( ) ;
228-
229- spawn (
230- thread_updates_task (
231- receiver,
232- room_event_cache. clone ( ) ,
233- controller. clone ( ) ,
234- root. clone ( ) ,
235- )
236- . instrument ( span) ,
212+ let thread_update_join_handle = if let TimelineFocus :: Thread { root_event_id : root } =
213+ & focus
214+ {
215+ Some ( {
216+ let span = info_span ! (
217+ parent: Span :: none( ) ,
218+ "thread_live_update_handler" ,
219+ room_id = ?room. room_id( ) ,
220+ focus = focus. debug_string( ) ,
221+ prefix = internal_id_prefix
222+ ) ;
223+ span. follows_from ( Span :: current ( ) ) ;
224+
225+ // Note: must be done here *before* spawning the task, to avoid race conditions
226+ // with event cache updates happening in the background.
227+ let ( _events, receiver) =
228+ room_event_cache
229+ . subscribe_to_thread ( root. clone ( ) )
230+ . await
231+ . expect ( "Failed to thread-subscribe to the `RoomEventCache` because of a store error" ) ;
232+
233+ spawn (
234+ thread_updates_task (
235+ receiver,
236+ room_event_cache. clone ( ) ,
237+ controller. clone ( ) ,
238+ root. clone ( ) ,
237239 )
238- } )
239- } else {
240- None
241- } ;
240+ . instrument ( span) ,
241+ )
242+ } )
243+ } else {
244+ None
245+ } ;
242246
243247 let local_echo_listener_handle = {
244248 let timeline_controller = controller. clone ( ) ;
0 commit comments