@@ -174,7 +174,7 @@ use self::{
174174 system_events:: EventManager ,
175175} ;
176176use crate :: {
177- common:: config:: SuiConfig ,
177+ common:: { config:: SuiConfig , utils :: unwrap_or_resume_unwind } ,
178178 event:: {
179179 event_blob_downloader:: { EventBlobDownloader , LastCertifiedEventBlob } ,
180180 event_processor:: {
@@ -2633,8 +2633,8 @@ impl StorageNodeInner {
26332633 let metadata_result = {
26342634 let storage = self . storage . clone ( ) ;
26352635 tokio:: task:: spawn_blocking ( move || storage. get_metadata ( & blob_id) )
2636+ . map ( unwrap_or_resume_unwind)
26362637 . await
2637- . expect ( "spawn_blocking task panicked" )
26382638 } ;
26392639 let deferral_from_size = match metadata_result {
26402640 Ok ( Some ( metadata) ) => {
@@ -2905,8 +2905,8 @@ impl StorageNodeInner {
29052905 let storage = self . storage . clone ( ) ;
29062906 let blob_id = * blob_id;
29072907 tokio:: task:: spawn_blocking ( move || storage. get_metadata ( & blob_id) )
2908- . await
2909- . expect ( "spawn_blocking task panicked" ) ?
2908+ . map ( unwrap_or_resume_unwind )
2909+ . await ?
29102910 } ;
29112911 if let Some ( metadata) = existing {
29122912 tracing:: debug!( %blob_id, "not syncing metadata: already stored" ) ;
@@ -3142,8 +3142,8 @@ impl StorageNodeInner {
31423142 let storage = self . storage . clone ( ) ;
31433143 let blob_id = * blob_id;
31443144 tokio:: task:: spawn_blocking ( move || storage. has_metadata ( & blob_id) )
3145+ . map ( unwrap_or_resume_unwind)
31453146 . await
3146- . expect ( "spawn_blocking task panicked" )
31473147 . context ( "could not check metadata existence" ) ?
31483148 } ;
31493149 if has_metadata {
@@ -3180,8 +3180,8 @@ impl StorageNodeInner {
31803180 let storage = self . storage . clone ( ) ;
31813181 let blob_id = * blob_id;
31823182 tokio:: task:: spawn_blocking ( move || storage. get_metadata ( & blob_id) )
3183+ . map ( unwrap_or_resume_unwind)
31833184 . await
3184- . expect ( "spawn_blocking task panicked" )
31853185 . context ( "database error when storing sliver" ) ?
31863186 } ;
31873187 if let Some ( metadata) = persisted {
@@ -3206,8 +3206,8 @@ impl StorageNodeInner {
32063206 let storage = self . storage . clone ( ) ;
32073207 let blob_id = * blob_id;
32083208 tokio:: task:: spawn_blocking ( move || storage. has_metadata ( & blob_id) )
3209+ . map ( unwrap_or_resume_unwind)
32093210 . await
3210- . expect ( "spawn_blocking task panicked" )
32113211 . context ( "could not check metadata existence" ) ?
32123212 } ;
32133213 if has_metadata {
@@ -3281,8 +3281,8 @@ impl StorageNodeInner {
32813281 let storage = self . storage . clone ( ) ;
32823282 let blob_id = * blob_id;
32833283 tokio:: task:: spawn_blocking ( move || storage. get_metadata ( & blob_id) )
3284+ . map ( unwrap_or_resume_unwind)
32843285 . await
3285- . expect ( "spawn_blocking task panicked" )
32863286 . context ( "unable to fetch metadata while flushing pending slivers" )
32873287 . map_err ( |error| PendingCacheError :: Sliver ( StoreSliverError :: Internal ( error) ) ) ?
32883288 } ;
@@ -3348,8 +3348,8 @@ impl StorageNodeInner {
33483348 let storage = self . storage . clone ( ) ;
33493349 let blob_id = * blob_id;
33503350 let blob_info = tokio:: task:: spawn_blocking ( move || storage. get_blob_info ( & blob_id) )
3351+ . map ( unwrap_or_resume_unwind)
33513352 . await
3352- . expect ( "spawn_blocking task panicked" )
33533353 . context ( "could not retrieve blob info" ) ?;
33543354 let epoch = self . current_committee_epoch ( ) ;
33553355 Ok ( blob_info. is_some_and ( |blob_info| blob_info. is_registered ( epoch) ) )
@@ -3653,8 +3653,8 @@ impl StorageNodeInner {
36533653 . get_metadata ( & blob_id)
36543654 . map ( |option| option. map ( |metadata| metadata. metadata ( ) . encoding_type ( ) ) )
36553655 } )
3656+ . map ( unwrap_or_resume_unwind)
36563657 . await
3657- . expect ( "spawn_blocking task panicked" )
36583658 }
36593659 }
36603660 }
@@ -4063,8 +4063,8 @@ impl ServiceState for StorageNodeInner {
40634063 let storage = self . storage . clone ( ) ;
40644064 let blob_id = * blob_id;
40654065 let metadata = tokio:: task:: spawn_blocking ( move || storage. get_metadata ( & blob_id) )
4066+ . map ( unwrap_or_resume_unwind)
40664067 . await
4067- . expect ( "spawn_blocking task panicked" )
40684068 . context ( "database error when retrieving metadata" ) ?
40694069 . ok_or ( RetrieveMetadataError :: Unavailable ) ?;
40704070 self . metrics . metadata_retrieved_total . inc ( ) ;
@@ -4085,8 +4085,8 @@ impl ServiceState for StorageNodeInner {
40854085 let blob_info = {
40864086 let storage = self . storage . clone ( ) ;
40874087 tokio:: task:: spawn_blocking ( move || storage. get_blob_info ( & blob_id) )
4088+ . map ( unwrap_or_resume_unwind)
40884089 . await
4089- . expect ( "spawn_blocking task panicked" )
40904090 . context ( "could not retrieve blob info" ) ?
40914091 } ;
40924092
@@ -4100,8 +4100,8 @@ impl ServiceState for StorageNodeInner {
41004100 let has_metadata = {
41014101 let storage = self . storage . clone ( ) ;
41024102 tokio:: task:: spawn_blocking ( move || storage. has_metadata ( & blob_id) )
4103+ . map ( unwrap_or_resume_unwind)
41034104 . await
4104- . expect ( "spawn_blocking task panicked" )
41054105 . context ( "could not check metadata existence" ) ?
41064106 } ;
41074107 if has_metadata {
@@ -4175,8 +4175,8 @@ impl ServiceState for StorageNodeInner {
41754175 let storage = self . storage . clone ( ) ;
41764176 let blob_id = * blob_id;
41774177 match tokio:: task:: spawn_blocking ( move || storage. has_metadata ( & blob_id) )
4178+ . map ( unwrap_or_resume_unwind)
41784179 . await
4179- . expect ( "spawn_blocking task panicked" )
41804180 {
41814181 Ok ( true ) => Ok ( StoredOnNodeStatus :: Stored ) ,
41824182 Ok ( false ) => Ok ( StoredOnNodeStatus :: Nonexistent ) ,
@@ -4325,8 +4325,8 @@ impl ServiceState for StorageNodeInner {
43254325 let storage = self . storage . clone ( ) ;
43264326 let oid = sui_object_id;
43274327 tokio:: task:: spawn_blocking ( move || storage. get_per_object_info ( & oid) )
4328+ . map ( unwrap_or_resume_unwind)
43284329 . await
4329- . expect ( "spawn_blocking task panicked" )
43304330 . context ( "database error when checking per object info" ) ?
43314331 } ;
43324332 if let Some ( per_object_info) = per_object_info {
@@ -4341,8 +4341,8 @@ impl ServiceState for StorageNodeInner {
43414341 tokio:: task:: spawn_blocking ( move || {
43424342 storage. get_per_object_pooled_info ( & oid)
43434343 } )
4344+ . map ( unwrap_or_resume_unwind)
43444345 . await
4345- . expect ( "spawn_blocking task panicked" )
43464346 . context (
43474347 "database error when checking per object pooled info" ,
43484348 ) ?
@@ -4386,8 +4386,8 @@ impl ServiceState for StorageNodeInner {
43864386 let storage = self . storage . clone ( ) ;
43874387 let blob_id = * blob_id;
43884388 let blob_info = tokio:: task:: spawn_blocking ( move || storage. get_blob_info ( & blob_id) )
4389+ . map ( unwrap_or_resume_unwind)
43894390 . await
4390- . expect ( "spawn_blocking task panicked" )
43914391 . context ( "could not retrieve blob info" ) ?;
43924392 Ok ( blob_info
43934393 . map ( |blob_info| blob_info. to_blob_status ( self . current_committee_epoch ( ) ) )
0 commit comments