Merge pull request #73 from paritytech/thread_names

Name all spawned threads
This commit is contained in:
Svyatoslav Nikolsky 2019-04-05 15:08:30 +03:00 committed by GitHub
commit 960f8f0455
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 30 additions and 6 deletions

View File

@ -4,7 +4,7 @@ use std::net::SocketAddr;
use parking_lot::RwLock;
use futures::{Future, finished, failed};
use futures::stream::Stream;
use futures_cpupool::CpuPool;
use futures_cpupool::{CpuPool, Builder as CpuPoolBuilder};
use tokio_io::IoFuture;
use tokio_core::net::{TcpListener, TcpStream};
use tokio_core::reactor::{Handle, Remote, Timeout, Interval};
@ -429,7 +429,10 @@ impl Drop for P2P {
impl P2P {
pub fn new(config: Config, local_sync_node: LocalSyncNodeRef, handle: Handle) -> Result<Self, Box<error::Error>> {
let pool = CpuPool::new(config.threads);
let pool = CpuPoolBuilder::new()
.name_prefix("I/O thread")
.pool_size(config.threads)
.create();
let context = try!(Context::new(local_sync_node, pool.clone(), handle.remote().clone(), config.clone()));

View File

@ -117,8 +117,22 @@ pub fn create_local_sync_node(consensus: ConsensusParams, db: storage::SharedSto
let sync_server = Arc::new(ServerImpl::new(peers.clone(), db.clone(), memory_pool.clone(), sync_executor.clone()));
let sync_client_core = SynchronizationClientCore::new(sync_client_config, sync_state.clone(), peers.clone(), sync_executor.clone(), sync_chain);
let verifier_sink = Arc::new(CoreVerificationSink::new(sync_client_core.clone()));
let light_verifier = AsyncVerifier::new(light_chain_verifier, db.clone(), memory_pool.clone(), verifier_sink.clone(), verification_params.clone());
let heavy_verifier = AsyncVerifier::new(heavy_chain_verifier, db.clone(), memory_pool.clone(), verifier_sink, verification_params);
let light_verifier = AsyncVerifier::new(
"Light verification".into(),
light_chain_verifier,
db.clone(),
memory_pool.clone(),
verifier_sink.clone(),
verification_params.clone(),
);
let heavy_verifier = AsyncVerifier::new(
"Heavy verification".into(),
heavy_chain_verifier,
db.clone(),
memory_pool.clone(),
verifier_sink,
verification_params,
);
let sync_client = SynchronizationClient::new(sync_state.clone(), sync_client_core, light_verifier, heavy_verifier);
Arc::new(SyncNode::new(consensus, db, memory_pool, peers, sync_state, sync_client, sync_server))
}

View File

@ -175,12 +175,19 @@ impl VerificationTask {
impl AsyncVerifier {
/// Create new async verifier
pub fn new<T: VerificationSink>(verifier: Arc<ChainVerifier>, storage: StorageRef, memory_pool: MemoryPoolRef, sink: Arc<T>, verification_params: VerificationParameters) -> Self {
pub fn new<T: VerificationSink>(
thread_name: String,
verifier: Arc<ChainVerifier>,
storage: StorageRef,
memory_pool: MemoryPoolRef,
sink: Arc<T>,
verification_params: VerificationParameters,
) -> Self {
let (verification_work_sender, verification_work_receiver) = channel();
AsyncVerifier {
verification_work_sender: Mutex::new(verification_work_sender),
verification_worker_thread: Some(thread::Builder::new()
.name("Sync verification thread".to_string())
.name(thread_name)
.spawn(move || {
let verifier = ChainVerifierWrapper::new(verifier, &storage, verification_params);
AsyncVerifier::verification_worker_proc(sink, storage, memory_pool, verifier, verification_work_receiver)