From 7442d47c3edd05e2400a2e8ea7dcae342eb21ddc Mon Sep 17 00:00:00 2001 From: Alex Chi Z Date: Tue, 29 Jul 2025 12:09:48 -0400 Subject: [PATCH] run some tests in validation mode Signed-off-by: Alex Chi Z --- pageserver/src/pgdatadir_mapping.rs | 5 +++-- test_runner/regress/test_pg_regress.py | 15 ++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/pageserver/src/pgdatadir_mapping.rs b/pageserver/src/pgdatadir_mapping.rs index a45d560aaf..8accb68d28 100644 --- a/pageserver/src/pgdatadir_mapping.rs +++ b/pageserver/src/pgdatadir_mapping.rs @@ -518,6 +518,7 @@ impl Timeline { } // Pre-deserialize the rel directory to avoid duplicated work in `get_relsize_cached`. + // TODO: refactor this read path to use reldir v2. let reldir_key = rel_dir_to_key(spcnode, dbnode); let buf = version.get(self, reldir_key, ctx).await?; let reldir = RelDirectory::des(&buf)?; @@ -2425,9 +2426,9 @@ impl DatadirModification<'_> { } // It's possible that this is the first rel for this db in this // tablespace. Create the reldir entry for it if so. - let mut dbdir = DbDirectory::des(&self.get(DBDIR_KEY, ctx).await?)?; + let mut dbdir: DbDirectory = DbDirectory::des(&self.get(DBDIR_KEY, ctx).await?)?; let mut is_dbdir_dirty = false; - + let dbdir_exists = if let hash_map::Entry::Vacant(e) = dbdir.dbdirs.entry((rel.spcnode, rel.dbnode)) { // Didn't exist. Update dbdir diff --git a/test_runner/regress/test_pg_regress.py b/test_runner/regress/test_pg_regress.py index c2a7c02f2f..94fcd47a40 100644 --- a/test_runner/regress/test_pg_regress.py +++ b/test_runner/regress/test_pg_regress.py @@ -125,8 +125,13 @@ def patch_tenant_conf(tenant_conf: dict[str, Any], reldir_type: str) -> dict[str if reldir_type == "v2": tenant_conf["rel_size_v2_enabled"] = True tenant_conf["rel_size_v1_access_disabled"] = True - else: + elif reldir_type == "v1v2": + tenant_conf["rel_size_v2_enabled"] = True + tenant_conf["rel_size_v1_access_disabled"] = False + elif reldir_type == "v1": tenant_conf["rel_size_v2_enabled"] = False + else: + raise ValueError(f"Invalid reldir_type: {reldir_type}") return tenant_conf @@ -134,7 +139,7 @@ def patch_tenant_conf(tenant_conf: dict[str, Any], reldir_type: str) -> dict[str # @pytest.mark.timeout(3000) # Contains many sub-tests, is slow in debug builds @pytest.mark.parametrize("shard_count", [None, 4]) -@pytest.mark.parametrize("reldir_type", ["v1", "v2"]) +@pytest.mark.parametrize("reldir_type", ["v1", "v1v2", "v2"]) def test_pg_regress( neon_env_builder: NeonEnvBuilder, test_output_dir: Path, @@ -214,7 +219,7 @@ def test_pg_regress( # @pytest.mark.timeout(1500) # Contains many sub-tests, is slow in debug builds @pytest.mark.parametrize("shard_count", [None, 4]) -@pytest.mark.parametrize("reldir_type", ["v1", "v2"]) +@pytest.mark.parametrize("reldir_type", ["v1", "v1v2", "v2"]) def test_isolation( neon_env_builder: NeonEnvBuilder, test_output_dir: Path, @@ -294,7 +299,7 @@ def test_isolation( # Run extra Neon-specific pg_regress-based tests. The tests and their # schedule file are in the sql_regress/ directory. @pytest.mark.parametrize("shard_count", [None, 4]) -@pytest.mark.parametrize("reldir_type", ["v1", "v2"]) +@pytest.mark.parametrize("reldir_type", ["v1", "v1v2", "v2"]) def test_sql_regress( neon_env_builder: NeonEnvBuilder, test_output_dir: Path, @@ -417,7 +422,7 @@ def test_max_wal_rate(neon_simple_env: NeonEnv): @skip_in_debug_build("only run with release build") -@pytest.mark.parametrize("reldir_type", ["v1", "v2"]) +@pytest.mark.parametrize("reldir_type", ["v1", "v1v2", "v2"]) def test_tx_abort_with_many_relations( neon_env_builder: NeonEnvBuilder, reldir_type: str,