@@ -161,7 +161,6 @@ use std::convert::TryInto;
161
161
use std:: default:: Default ;
162
162
use std:: fs;
163
163
use std:: net:: ToSocketAddrs ;
164
- use std:: sync:: atomic:: { AtomicBool , Ordering } ;
165
164
use std:: sync:: { Arc , Mutex , RwLock } ;
166
165
use std:: time:: { Duration , Instant , SystemTime } ;
167
166
@@ -1208,22 +1207,16 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
1208
1207
1209
1208
let con_node_id = peer_info. node_id ;
1210
1209
let con_addr = peer_info. address . clone ( ) ;
1211
- let con_success = Arc :: new ( AtomicBool :: new ( false ) ) ;
1212
- let con_success_cloned = Arc :: clone ( & con_success) ;
1213
1210
let con_logger = Arc :: clone ( & self . logger ) ;
1214
1211
let con_pm = Arc :: clone ( & self . peer_manager ) ;
1215
1212
1213
+ // We need to use our main runtime here as a local runtime might not be around to poll
1214
+ // connection futures going forward.
1216
1215
tokio:: task:: block_in_place ( move || {
1217
1216
runtime. block_on ( async move {
1218
- let res =
1219
- connect_peer_if_necessary ( con_node_id, con_addr, con_pm, con_logger) . await ;
1220
- con_success_cloned. store ( res. is_ok ( ) , Ordering :: Release ) ;
1217
+ connect_peer_if_necessary ( con_node_id, con_addr, con_pm, con_logger) . await
1221
1218
} )
1222
- } ) ;
1223
-
1224
- if !con_success. load ( Ordering :: Acquire ) {
1225
- return Err ( Error :: ConnectionFailed ) ;
1226
- }
1219
+ } ) ?;
1227
1220
1228
1221
log_info ! ( self . logger, "Connected to peer {}@{}. " , peer_info. node_id, peer_info. address) ;
1229
1222
@@ -1286,22 +1279,16 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
1286
1279
1287
1280
let con_node_id = peer_info. node_id ;
1288
1281
let con_addr = peer_info. address . clone ( ) ;
1289
- let con_success = Arc :: new ( AtomicBool :: new ( false ) ) ;
1290
- let con_success_cloned = Arc :: clone ( & con_success) ;
1291
1282
let con_logger = Arc :: clone ( & self . logger ) ;
1292
1283
let con_pm = Arc :: clone ( & self . peer_manager ) ;
1293
1284
1285
+ // We need to use our main runtime here as a local runtime might not be around to poll
1286
+ // connection futures going forward.
1294
1287
tokio:: task:: block_in_place ( move || {
1295
1288
runtime. block_on ( async move {
1296
- let res =
1297
- connect_peer_if_necessary ( con_node_id, con_addr, con_pm, con_logger) . await ;
1298
- con_success_cloned. store ( res. is_ok ( ) , Ordering :: Release ) ;
1289
+ connect_peer_if_necessary ( con_node_id, con_addr, con_pm, con_logger) . await
1299
1290
} )
1300
- } ) ;
1301
-
1302
- if !con_success. load ( Ordering :: Acquire ) {
1303
- return Err ( Error :: ConnectionFailed ) ;
1304
- }
1291
+ } ) ?;
1305
1292
1306
1293
let user_config = UserConfig {
1307
1294
channel_handshake_limits : ChannelHandshakeLimits {
0 commit comments