diff --git a/src/PostgREST/SchemaCache.hs b/src/PostgREST/SchemaCache.hs index 0c30e7623..f1f28ce7e 100644 --- a/src/PostgREST/SchemaCache.hs +++ b/src/PostgREST/SchemaCache.hs @@ -145,9 +145,6 @@ type SqlQuery = ByteString querySchemaCache :: AppConfig -> SQL.Transaction SchemaCache querySchemaCache AppConfig{..} = do - _ <- - let sleepCall = SQL.Statement "select pg_sleep($1 / 1000.0)" (param HE.int4) HD.noResult prepared in - whenJust configInternalSCSleep (`SQL.statement` sleepCall) -- only used for testing SQL.sql "set local schema ''" -- This voids the search path. The following queries need this for getting the fully qualified name(schema.name) of every db object pgVer <- SQL.statement mempty $ pgVersionStatement prepared tabs <- SQL.statement schemas $ allTables pgVer prepared @@ -158,6 +155,9 @@ querySchemaCache AppConfig{..} = do reps <- SQL.statement schemas $ dataRepresentations prepared mHdlers <- SQL.statement schemas $ mediaHandlers pgVer prepared tzones <- SQL.statement mempty $ timezones prepared + _ <- + let sleepCall = SQL.Statement "select pg_sleep($1 / 1000.0)" (param HE.int4) HD.noResult prepared in + whenJust configInternalSCSleep (`SQL.statement` sleepCall) -- only used for testing let tabsWViewsPks = addViewPrimaryKeys tabs keyDeps rels = addInverseRels $ addM2MRels tabsWViewsPks $ addViewM2OAndO2ORels keyDeps m2oRels diff --git a/test/io/config.py b/test/io/config.py index ea6b125fe..2960971b9 100644 --- a/test/io/config.py +++ b/test/io/config.py @@ -71,7 +71,7 @@ def slow_schema_cache_env(defaultenv): "Slow schema cache load environment PostgREST." return { **defaultenv, - "PGRST_INTERNAL_SCHEMA_CACHE_SLEEP": "1", # this does a pg_sleep internally, it will cause the schema cache query to be slow + "PGRST_INTERNAL_SCHEMA_CACHE_SLEEP": "1000", # this does a pg_sleep internally, it will cause the schema cache query to be slow # the slow schema cache query will keep using one pool connection until it finishes # to prevent requests waiting for PGRST_DB_POOL_ACQUISITION_TIMEOUT we'll increase the pool size (must be >= 2) "PGRST_DB_POOL": "2", diff --git a/test/io/test_io.py b/test/io/test_io.py index e825841aa..e86e97632 100644 --- a/test/io/test_io.py +++ b/test/io/test_io.py @@ -714,7 +714,7 @@ def test_admin_ready_includes_schema_cache_state(defaultenv, metapostgrest): } with run(env=env) as postgrest: - # The schema cache query takes at least 500ms, due do PGRST_INTERNAL_SCHEMA_CACHE_SLEEP above. + # The schema cache query takes at least 500ms, due to PGRST_INTERNAL_SCHEMA_CACHE_SLEEP above. # Make it impossible to load the schema cache, by setting statement timeout to 400ms. set_statement_timeout(metapostgrest, role, 400) @@ -1024,7 +1024,9 @@ def test_isolation_level(defaultenv): def test_schema_cache_concurrent_notifications(slow_schema_cache_env): "schema cache should be up-to-date whenever a notification is sent while another reload is in progress, see https://github.com/PostgREST/postgrest/issues/2791" - internal_sleep = int(slow_schema_cache_env["PGRST_INTERNAL_SCHEMA_CACHE_SLEEP"]) + internal_sleep = ( + int(slow_schema_cache_env["PGRST_INTERNAL_SCHEMA_CACHE_SLEEP"]) / 1000 + ) with run(env=slow_schema_cache_env, wait_for_readiness=False) as postgrest: time.sleep(2 * internal_sleep + 0.1) # wait for readiness manually