mirror of
https://github.com/neondatabase/neon.git
synced 2026-06-04 14:00:38 +00:00
`WARN ... found future (image|delta) layer` are not actionable log lines. They don't need to be warnings. `info!` is enough. This also fixes some known but not tracked flakyness in [`test_remote_timeline_client_calls_started_metric`][evidence]. [evidence]: https://neon-github-public-dev.s3.amazonaws.com/reports/pr-4829/5683495367/index.html#/testresult/34fe79e24729618b Closes #3369. Closes #4473.
44 lines
1.7 KiB
Python
44 lines
1.7 KiB
Python
import subprocess
|
|
|
|
import pytest
|
|
from fixtures.neon_fixtures import NeonEnvBuilder, PgBin
|
|
|
|
|
|
# Test gc_cutoff
|
|
#
|
|
# This test sets fail point at the end of GC, and checks that pageserver
|
|
# normally restarts after it. Also, there should be GC ERRORs in the log,
|
|
# but the fixture checks the log for any unexpected ERRORs after every
|
|
# test anyway, so it doesn't need any special attention here.
|
|
@pytest.mark.timeout(600)
|
|
def test_gc_cutoff(neon_env_builder: NeonEnvBuilder, pg_bin: PgBin):
|
|
env = neon_env_builder.init_start()
|
|
|
|
pageserver_http = env.pageserver.http_client()
|
|
|
|
# Use aggressive GC and checkpoint settings, so that we also exercise GC during the test
|
|
tenant_id, _ = env.neon_cli.create_tenant(
|
|
conf={
|
|
"gc_period": "10 s",
|
|
"gc_horizon": f"{1024 ** 2}",
|
|
"checkpoint_distance": f"{1024 ** 2}",
|
|
"compaction_period": "5 s",
|
|
# set PITR interval to be small, so we can do GC
|
|
"pitr_interval": "1 s",
|
|
"compaction_threshold": "3",
|
|
"image_creation_threshold": "2",
|
|
}
|
|
)
|
|
endpoint = env.endpoints.create_start("main", tenant_id=tenant_id)
|
|
connstr = endpoint.connstr(options="-csynchronous_commit=off")
|
|
pg_bin.run_capture(["pgbench", "-i", "-s10", connstr])
|
|
|
|
pageserver_http.configure_failpoints(("after-timeline-gc-removed-layers", "exit"))
|
|
|
|
for _ in range(5):
|
|
with pytest.raises(subprocess.SubprocessError):
|
|
pg_bin.run_capture(["pgbench", "-P1", "-N", "-c5", "-T500", "-Mprepared", connstr])
|
|
env.pageserver.stop()
|
|
env.pageserver.start()
|
|
pageserver_http.configure_failpoints(("after-timeline-gc-removed-layers", "exit"))
|