mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-14 17:02:56 +00:00
Fix #7204. https://github.com/neondatabase/postgres/pull/400 https://github.com/neondatabase/postgres/pull/401 https://github.com/neondatabase/postgres/pull/402 These commits never go into prod. Detailed investigation will be posted in another issue. Reverting the commits so that things can keep running in prod. This pull request adds the test to start two replicas. It fails on the current main https://github.com/neondatabase/neon/pull/7210 but passes in this pull request. --------- Signed-off-by: Alex Chi Z <chi@neon.tech>
33 lines
1.7 KiB
Python
33 lines
1.7 KiB
Python
import pytest
|
|
from fixtures.log_helper import log
|
|
from fixtures.neon_fixtures import NeonEnv, wait_replica_caughtup
|
|
|
|
|
|
@pytest.mark.xfail
|
|
def test_replication_start(neon_simple_env: NeonEnv):
|
|
env = neon_simple_env
|
|
|
|
with env.endpoints.create_start(branch_name="main", endpoint_id="primary") as primary:
|
|
with primary.connect() as p_con:
|
|
with p_con.cursor() as p_cur:
|
|
p_cur.execute("begin")
|
|
p_cur.execute("create table t(pk integer primary key, payload integer)")
|
|
p_cur.execute("insert into t values (generate_series(1,100000), 0)")
|
|
p_cur.execute("select txid_current()")
|
|
xid = p_cur.fetchall()[0][0]
|
|
log.info(f"Master transaction {xid}")
|
|
with env.endpoints.new_replica_start(
|
|
origin=primary, endpoint_id="secondary"
|
|
) as secondary:
|
|
wait_replica_caughtup(primary, secondary)
|
|
with secondary.connect() as s_con:
|
|
with s_con.cursor() as s_cur:
|
|
# Enforce setting hint bits for pg_class tuples.
|
|
# If master's transaction is not marked as in-progress in MVCC snapshot,
|
|
# then XMIN_INVALID hint bit will be set for table's 't' tuple makeing it invisible.
|
|
s_cur.execute("select * from pg_class")
|
|
p_cur.execute("commit")
|
|
wait_replica_caughtup(primary, secondary)
|
|
s_cur.execute("select * from t where pk = 1")
|
|
assert s_cur.fetchone() == (1, 0)
|