handle start_http failure in rpc_service (#25400)
This commit is contained in:
parent
e025376719
commit
e263be2000
|
@ -769,8 +769,8 @@ impl Validator {
|
|||
} else {
|
||||
None
|
||||
};
|
||||
(
|
||||
Some(JsonRpcService::new(
|
||||
|
||||
let json_rpc_service = JsonRpcService::new(
|
||||
rpc_addr,
|
||||
config.rpc_config.clone(),
|
||||
config.snapshot_config.clone(),
|
||||
|
@ -789,7 +789,14 @@ impl Validator {
|
|||
max_slots.clone(),
|
||||
leader_schedule_cache.clone(),
|
||||
max_complete_transaction_status_slot,
|
||||
)),
|
||||
)
|
||||
.unwrap_or_else(|s| {
|
||||
error!("Failed to create JSON RPC Service: {}", s);
|
||||
abort();
|
||||
});
|
||||
|
||||
(
|
||||
Some(json_rpc_service),
|
||||
if !config.rpc_config.full_api {
|
||||
None
|
||||
} else {
|
||||
|
|
|
@ -353,7 +353,7 @@ impl JsonRpcService {
|
|||
max_slots: Arc<MaxSlots>,
|
||||
leader_schedule_cache: Arc<LeaderScheduleCache>,
|
||||
current_transaction_status_slot: Arc<AtomicU64>,
|
||||
) -> Self {
|
||||
) -> Result<Self, String> {
|
||||
info!("rpc bound to {:?}", rpc_addr);
|
||||
info!("rpc configuration: {:?}", config);
|
||||
let rpc_threads = 1.max(config.rpc_threads);
|
||||
|
@ -519,28 +519,29 @@ impl JsonRpcService {
|
|||
e,
|
||||
rpc_addr.port()
|
||||
);
|
||||
close_handle_sender.send(Err(e.to_string())).unwrap();
|
||||
return;
|
||||
}
|
||||
|
||||
let server = server.unwrap();
|
||||
close_handle_sender.send(server.close_handle()).unwrap();
|
||||
close_handle_sender.send(Ok(server.close_handle())).unwrap();
|
||||
server.wait();
|
||||
exit_bigtable_ledger_upload_service.store(true, Ordering::Relaxed);
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
let close_handle = close_handle_receiver.recv().unwrap();
|
||||
let close_handle = close_handle_receiver.recv().unwrap()?;
|
||||
let close_handle_ = close_handle.clone();
|
||||
validator_exit
|
||||
.write()
|
||||
.unwrap()
|
||||
.register_exit(Box::new(move || close_handle_.close()));
|
||||
Self {
|
||||
Ok(Self {
|
||||
thread_hdl,
|
||||
#[cfg(test)]
|
||||
request_processor: test_request_processor,
|
||||
close_handle: Some(close_handle),
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
pub fn exit(&mut self) {
|
||||
|
@ -632,7 +633,8 @@ mod tests {
|
|||
Arc::new(MaxSlots::default()),
|
||||
Arc::new(LeaderScheduleCache::default()),
|
||||
Arc::new(AtomicU64::default()),
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
let thread = rpc_service.thread_hdl.thread();
|
||||
assert_eq!(thread.name().unwrap(), "solana-jsonrpc");
|
||||
|
||||
|
|
Loading…
Reference in New Issue