diff --git a/pageserver/src/pg_import.rs b/pageserver/src/pg_import.rs index 720548c1b3..b2960f76b6 100644 --- a/pageserver/src/pg_import.rs +++ b/pageserver/src/pg_import.rs @@ -13,7 +13,7 @@ use utils::{id::{NodeId, TenantId, TimelineId}, shard::{ShardCount, ShardNumber, use walkdir::WalkDir; use crate::{context::{DownloadBehavior, RequestContext}, pgdatadir_mapping::{DbDirectory, RelDirectory}, task_mgr::TaskKind, tenant::storage_layer::ImageLayerWriter}; -use crate::pgdatadir_mapping::SlruSegmentDirectory; +use crate::pgdatadir_mapping::{SlruSegmentDirectory, TwoPhaseDirectory}; use crate::config::PageServerConf; use tokio::io::AsyncReadExt; @@ -27,7 +27,7 @@ use crate::tenant::remote_timeline_client::LayerFileMetadata; use pageserver_api::shard::ShardIndex; use pageserver_api::key::Key; use pageserver_api::reltag::SlruKind; -use pageserver_api::key::{slru_block_to_key, slru_dir_to_key, slru_segment_size_to_key}; +use pageserver_api::key::{slru_block_to_key, slru_dir_to_key, slru_segment_size_to_key, TWOPHASEDIR_KEY}; use utils::bin_ser::BeSer; use std::collections::HashSet; @@ -106,6 +106,13 @@ impl PgImportEnv { // pg_multixact/offsets (01:02 keyspace) self.import_slru(&mut one_big_layer, SlruKind::MultiXactOffsets, &pgdata_path.join("pg_multixact/offsets")).await?; + // Import pg_twophase. + // TODO: as empty + let twophasedir_buf = TwoPhaseDirectory::ser( + &TwoPhaseDirectory { xids: HashSet::new() } + )?; + one_big_layer.put_image(TWOPHASEDIR_KEY, Bytes::from(twophasedir_buf), &self.ctx).await?; + let layerdesc = one_big_layer.finish_raw(&self.ctx).await?; // should we anything about the wal? diff --git a/pageserver/src/pgdatadir_mapping.rs b/pageserver/src/pgdatadir_mapping.rs index 1dc4b4667e..4e8a2bb4a5 100644 --- a/pageserver/src/pgdatadir_mapping.rs +++ b/pageserver/src/pgdatadir_mapping.rs @@ -1988,8 +1988,8 @@ pub struct DbDirectory { } #[derive(Debug, Serialize, Deserialize)] -struct TwoPhaseDirectory { - xids: HashSet, +pub(crate) struct TwoPhaseDirectory { + pub(crate) xids: HashSet, } #[derive(Debug, Serialize, Deserialize, Default)]