From 02a9883f0fc1df5860e73d04eb10262d5315890b Mon Sep 17 00:00:00 2001 From: Bojan Serafimov Date: Wed, 15 Jun 2022 09:24:46 -0400 Subject: [PATCH] Add TenantTaskManager --- pageserver/src/tenant_mgr.rs | 4 ---- pageserver/src/tenant_threads.rs | 3 ++- pageserver/src/thread_mgr.rs | 7 ++----- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/pageserver/src/tenant_mgr.rs b/pageserver/src/tenant_mgr.rs index 7d1187866f..500f73a266 100644 --- a/pageserver/src/tenant_mgr.rs +++ b/pageserver/src/tenant_mgr.rs @@ -230,8 +230,6 @@ pub fn shutdown_all_tenants() { drop(m); thread_mgr::shutdown_threads(Some(ThreadKind::WalReceiverManager), None, None); - thread_mgr::shutdown_threads(Some(ThreadKind::GarbageCollector), None, None); - thread_mgr::shutdown_threads(Some(ThreadKind::Compactor), None, None); // Ok, no background threads running anymore. Flush any remaining data in // memory to disk. @@ -344,8 +342,6 @@ pub fn set_tenant_state(tenant_id: ZTenantId, new_state: TenantState) -> anyhow: Some(tenant_id), None, ); - thread_mgr::shutdown_threads(Some(ThreadKind::GarbageCollector), Some(tenant_id), None); - thread_mgr::shutdown_threads(Some(ThreadKind::Compactor), Some(tenant_id), None); } } diff --git a/pageserver/src/tenant_threads.rs b/pageserver/src/tenant_threads.rs index ead445ef15..8f8e99e813 100644 --- a/pageserver/src/tenant_threads.rs +++ b/pageserver/src/tenant_threads.rs @@ -95,7 +95,7 @@ pub fn init_tenant_task_pool() -> Result<()> { START_COMPACTION_LOOP.set(compaction_send).unwrap(); thread_mgr::spawn( - ThreadKind::WalReceiverManager, // TODO + ThreadKind::TenantTaskManager, None, None, "WAL receiver manager main thread", @@ -105,6 +105,7 @@ pub fn init_tenant_task_pool() -> Result<()> { loop { tokio::select! { _ = thread_mgr::shutdown_watcher() => break, + // TODO don't spawn if already running tenantid = gc_recv.recv() => { tokio::spawn(gc_loop(tenantid.unwrap())); }, diff --git a/pageserver/src/thread_mgr.rs b/pageserver/src/thread_mgr.rs index 6e4bc1a787..ab0d894c70 100644 --- a/pageserver/src/thread_mgr.rs +++ b/pageserver/src/thread_mgr.rs @@ -94,11 +94,8 @@ pub enum ThreadKind { // Main walreceiver manager thread that ensures that every timeline spawns a connection to safekeeper, to fetch WAL. WalReceiverManager, - // Thread that handles compaction of all timelines for a tenant. - Compactor, - - // Thread that handles GC of a tenant - GarbageCollector, + // Thread that schedules new compaction and gc jobs + TenantTaskManager, // Thread that flushes frozen in-memory layers to disk LayerFlushThread,