Merge pull request #73 from paritytech/thread_names
Name all spawned threads
This commit is contained in:
commit
960f8f0455
|
@ -4,7 +4,7 @@ use std::net::SocketAddr;
|
||||||
use parking_lot::RwLock;
|
use parking_lot::RwLock;
|
||||||
use futures::{Future, finished, failed};
|
use futures::{Future, finished, failed};
|
||||||
use futures::stream::Stream;
|
use futures::stream::Stream;
|
||||||
use futures_cpupool::CpuPool;
|
use futures_cpupool::{CpuPool, Builder as CpuPoolBuilder};
|
||||||
use tokio_io::IoFuture;
|
use tokio_io::IoFuture;
|
||||||
use tokio_core::net::{TcpListener, TcpStream};
|
use tokio_core::net::{TcpListener, TcpStream};
|
||||||
use tokio_core::reactor::{Handle, Remote, Timeout, Interval};
|
use tokio_core::reactor::{Handle, Remote, Timeout, Interval};
|
||||||
|
@ -429,7 +429,10 @@ impl Drop for P2P {
|
||||||
|
|
||||||
impl P2P {
|
impl P2P {
|
||||||
pub fn new(config: Config, local_sync_node: LocalSyncNodeRef, handle: Handle) -> Result<Self, Box<error::Error>> {
|
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()));
|
let context = try!(Context::new(local_sync_node, pool.clone(), handle.remote().clone(), config.clone()));
|
||||||
|
|
||||||
|
|
|
@ -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_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 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 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 light_verifier = AsyncVerifier::new(
|
||||||
let heavy_verifier = AsyncVerifier::new(heavy_chain_verifier, db.clone(), memory_pool.clone(), verifier_sink, verification_params);
|
"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);
|
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))
|
Arc::new(SyncNode::new(consensus, db, memory_pool, peers, sync_state, sync_client, sync_server))
|
||||||
}
|
}
|
||||||
|
|
|
@ -175,12 +175,19 @@ impl VerificationTask {
|
||||||
|
|
||||||
impl AsyncVerifier {
|
impl AsyncVerifier {
|
||||||
/// Create new async verifier
|
/// 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();
|
let (verification_work_sender, verification_work_receiver) = channel();
|
||||||
AsyncVerifier {
|
AsyncVerifier {
|
||||||
verification_work_sender: Mutex::new(verification_work_sender),
|
verification_work_sender: Mutex::new(verification_work_sender),
|
||||||
verification_worker_thread: Some(thread::Builder::new()
|
verification_worker_thread: Some(thread::Builder::new()
|
||||||
.name("Sync verification thread".to_string())
|
.name(thread_name)
|
||||||
.spawn(move || {
|
.spawn(move || {
|
||||||
let verifier = ChainVerifierWrapper::new(verifier, &storage, verification_params);
|
let verifier = ChainVerifierWrapper::new(verifier, &storage, verification_params);
|
||||||
AsyncVerifier::verification_worker_proc(sink, storage, memory_pool, verifier, verification_work_receiver)
|
AsyncVerifier::verification_worker_proc(sink, storage, memory_pool, verifier, verification_work_receiver)
|
||||||
|
|
Loading…
Reference in New Issue