From 0260ee23b9749d13763a963a2987a0384caa5a2e Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Thu, 24 Nov 2022 15:26:33 +0200 Subject: [PATCH] Start background loops on create_tenant correctly. This was caught by the test_gc_cutoff test. --- pageserver/src/tenant.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pageserver/src/tenant.rs b/pageserver/src/tenant.rs index 0447a3b9de..bc13c3ac0d 100644 --- a/pageserver/src/tenant.rs +++ b/pageserver/src/tenant.rs @@ -707,16 +707,17 @@ impl Tenant { ) -> anyhow::Result> { let wal_redo_manager = Arc::new(PostgresRedoManager::new(conf, tenant_id)); create_tenant_files(conf, tenant_conf, tenant_id)?; - // create tenant in Active state so it is possible to issue create_timeline - // request. Which on timeline activation will trigger tenant activation + // create tenant in Loading state, and activate it immediately so that it is + // possible to issue create_timeline request on it. let tenant = Arc::new(Tenant::new( - TenantState::Active, + TenantState::Loading, conf, tenant_conf, wal_redo_manager, tenant_id, remote_storage, )); + tenant.activate()?; Ok(tenant) } @@ -1287,6 +1288,8 @@ impl Tenant { TenantState::Loading | TenantState::Attaching => { *current_state = TenantState::Active; + info!("Activating tenant {}", self.tenant_id); + let timelines_accessor = self.timelines.lock().unwrap(); let not_broken_timelines = timelines_accessor .values()