@@ -1237,6 +1237,35 @@ mod tests {
1237
1237
}
1238
1238
}
1239
1239
1240
+ #[ tokio:: test]
1241
+ #[ cfg( feature = "futures" ) ]
1242
+ async fn test_channel_manager_persist_error_async ( ) {
1243
+ // Test that if we encounter an error during manager persistence, the thread panics.
1244
+ let nodes = create_nodes ( 2 , "test_persist_error_sync" . to_string ( ) ) ;
1245
+ open_channel ! ( nodes[ 0 ] , nodes[ 1 ] , 100000 ) ;
1246
+
1247
+ let data_dir = nodes[ 0 ] . persister . get_data_dir ( ) ;
1248
+ let persister = Arc :: new ( Persister :: new ( data_dir) . with_manager_error ( std:: io:: ErrorKind :: Other , "test" ) ) ;
1249
+
1250
+ let bp_future = super :: process_events_async (
1251
+ persister, |_: _ | { async { } } , nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) ,
1252
+ nodes[ 0 ] . rapid_gossip_sync ( ) , nodes[ 0 ] . peer_manager . clone ( ) , nodes[ 0 ] . logger . clone ( ) ,
1253
+ Some ( nodes[ 0 ] . scorer . clone ( ) ) , move |dur : Duration | {
1254
+ Box :: pin ( async move {
1255
+ tokio:: time:: sleep ( dur) . await ;
1256
+ false // Never exit
1257
+ } )
1258
+ } , false ,
1259
+ ) ;
1260
+ match bp_future. await {
1261
+ Ok ( _) => panic ! ( "Expected error persisting manager" ) ,
1262
+ Err ( e) => {
1263
+ assert_eq ! ( e. kind( ) , std:: io:: ErrorKind :: Other ) ;
1264
+ assert_eq ! ( e. get_ref( ) . unwrap( ) . to_string( ) , "test" ) ;
1265
+ } ,
1266
+ }
1267
+ }
1268
+
1240
1269
#[ test]
1241
1270
fn test_network_graph_persist_error ( ) {
1242
1271
// Test that if we encounter an error during network graph persistence, an error gets returned.
0 commit comments