fix: slow responses on schema cache reload

This commit is contained in:
steve-chavez
2024-03-15 11:53:29 -05:00
committed by Steve Chavez
parent 210cded560
commit 727ef465c1
4 changed files with 19 additions and 7 deletions
+4
View File
@@ -11384,3 +11384,7 @@ GRANT USAGE ON SCHEMA apflora TO postgrest_test_anonymous;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA apflora
TO postgrest_test_anonymous;
create or replace function apflora.notify_pgrst() returns void as $$
notify pgrst;
$$ language sql;
+11 -6
View File
@@ -18,7 +18,7 @@ def test_first_request_succeeds(defaultenv):
"PGRST_SERVER_TIMING_ENABLED": "true",
}
with run(env=env, wait_max_seconds=20) as postgrest:
with run(env=env, wait_max_seconds=30) as postgrest:
response = postgrest.session.get("/tpopmassn?select=*,tpop(*)")
assert response.status_code == 200
@@ -27,8 +27,8 @@ def test_first_request_succeeds(defaultenv):
assert plan_dur < 2.0
def test_requests_wait_for_schema_cache_to_be_loaded(defaultenv):
"requests that use the schema cache (e.g. resource embedding) wait for schema cache to be loaded"
def test_requests_do_not_wait_for_schema_cache_reload(defaultenv):
"requests that use the schema cache (e.g. resource embedding) do not wait for the schema cache to reload"
env = {
**defaultenv,
@@ -38,15 +38,20 @@ def test_requests_wait_for_schema_cache_to_be_loaded(defaultenv):
"PGRST_SERVER_TIMING_ENABLED": "true",
}
with run(env=env, wait_for_readiness=False) as postgrest:
time.sleep(1.5) # manually wait for schema cache to start loading
with run(env=env, wait_max_seconds=30) as postgrest:
# reload the schema cache
response = postgrest.session.get("/rpc/notify_pgrst")
assert response.status_code == 204
time.sleep(1.5) # wait for schema cache to start reloading
response = postgrest.session.get("/tpopmassn?select=*,tpop(*)")
assert response.status_code == 200
# response should be fast
server_timings = parse_server_timings_header(response.headers["Server-Timing"])
plan_dur = server_timings["plan"]
assert plan_dur > 10000.0
assert plan_dur < 2.0
# TODO: This test fails now because of https://github.com/PostgREST/postgrest/pull/2122