use child_token instead of cloning

This commit is contained in:
Joonas Koivunen
2023-12-13 23:05:35 +00:00
parent 9790a7c2e8
commit e021298dec
3 changed files with 6 additions and 6 deletions

View File

@@ -376,7 +376,7 @@ fn start_pageserver(
// Set up deletion queue
let (deletion_queue, deletion_workers) = DeletionQueue::new(
remote_storage.clone(),
ControlPlaneClient::new(conf, &shutdown_pageserver),
ControlPlaneClient::new(conf, shutdown_pageserver.child_token()),
conf,
);
if let Some(deletion_workers) = deletion_workers {
@@ -420,12 +420,12 @@ fn start_pageserver(
deletion_queue_client,
},
order,
shutdown_pageserver.clone(),
shutdown_pageserver.child_token(),
))?;
let tenant_manager = Arc::new(tenant_manager);
BACKGROUND_RUNTIME.spawn({
let shutdown_pageserver = shutdown_pageserver.clone();
let shutdown_pageserver = shutdown_pageserver.child_token();
let drive_init = async move {
// NOTE: unlike many futures in pageserver, this one is cancellation-safe
let guard = scopeguard::guard_on_success((), |_| {

View File

@@ -40,7 +40,7 @@ pub trait ControlPlaneGenerationsApi {
impl ControlPlaneClient {
/// A None return value indicates that the input `conf` object does not have control
/// plane API enabled.
pub fn new(conf: &'static PageServerConf, cancel: &CancellationToken) -> Option<Self> {
pub fn new(conf: &'static PageServerConf, cancel: CancellationToken) -> Option<Self> {
let mut url = match conf.control_plane_api.as_ref() {
Some(u) => u.clone(),
None => return None,
@@ -67,7 +67,7 @@ impl ControlPlaneClient {
http_client: client.build().expect("Failed to construct HTTP client"),
base_url: url,
node_id: conf.id,
cancel: cancel.clone(),
cancel,
})
}

View File

@@ -283,7 +283,7 @@ async fn init_load_generations(
"Emergency mode! Tenants will be attached unsafely using their last known generation"
);
emergency_generations(tenant_confs)
} else if let Some(client) = ControlPlaneClient::new(conf, cancel) {
} else if let Some(client) = ControlPlaneClient::new(conf, cancel.child_token()) {
info!("Calling control plane API to re-attach tenants");
// If we are configured to use the control plane API, then it is the source of truth for what tenants to load.
match client.re_attach().await {