pageserver: permit reads behind GC cutoff during LSN grace period (#9833)

## Problem

In https://github.com/neondatabase/neon/issues/9754 and the flakiness of
`test_readonly_node_gc`, we saw that although our logic for controlling
GC was sound, the validation of getpage requests was not, because it
could not consider LSN leases when requests arrived shortly after
restart.

Closes https://github.com/neondatabase/neon/issues/9754

## Summary of changes

This is the "Option 3" discussed verbally -- rather than holding back gc
cutoff, we waive the usual validation of request LSN if we are still
waiting for leases to be sent after startup

- When validating LSN in `wait_or_get_last_lsn`, skip the validation
relative to GC cutoff if the timeline is still in its LSN lease grace
period
- Re-enable test_readonly_node_gc
This commit is contained in:
John Spray
2024-11-22 09:24:23 +00:00
committed by GitHub
parent 83b73fc24e
commit d9de65ee8f
3 changed files with 19 additions and 10 deletions

View File

@@ -121,7 +121,6 @@ def test_readonly_node(neon_simple_env: NeonEnv):
)
@pytest.mark.skip("See https://github.com/neondatabase/neon/issues/9754")
def test_readonly_node_gc(neon_env_builder: NeonEnvBuilder):
"""
Test static endpoint is protected from GC by acquiring and renewing lsn leases.