X-Git-Url: https://git.openstreetmap.org/nominatim.git/blobdiff_plain/89094cf92e82ebb1004498fad8822975f1af4347..28444d94350287d6c27675e740ec8fa64a5403ae:/nominatim/api/core.py?ds=inline

diff --git a/nominatim/api/core.py b/nominatim/api/core.py
index 1c0c4423..333833b0 100644
--- a/nominatim/api/core.py
+++ b/nominatim/api/core.py
@@ -88,7 +88,7 @@ class NominatimAPIAsync: #pylint: disable=too-many-instance-attributes
             if self.config.get_int('API_POOL_SIZE') == 0:
                 extra_args['poolclass'] = sa.pool.NullPool
             else:
-                extra_args['poolclass'] = sa.pool.QueuePool
+                extra_args['poolclass'] = sa.pool.AsyncAdaptedQueuePool
                 extra_args['max_overflow'] = 0
                 extra_args['pool_size'] = self.config.get_int('API_POOL_SIZE')
 
@@ -137,6 +137,10 @@ class NominatimAPIAsync: #pylint: disable=too-many-instance-attributes
                     async with engine.begin() as conn:
                         result = await conn.scalar(sa.text('SHOW server_version_num'))
                         server_version = int(result)
+                        if server_version >= 110000:
+                            await conn.execute(sa.text("SET jit_above_cost TO '-1'"))
+                            await conn.execute(sa.text(
+                                    "SET max_parallel_workers_per_gather TO '0'"))
                 except (PGCORE_ERROR, sa.exc.OperationalError):
                     server_version = 0
 
@@ -146,8 +150,6 @@ class NominatimAPIAsync: #pylint: disable=too-many-instance-attributes
                         cursor = dbapi_con.cursor()
                         cursor.execute("SET jit_above_cost TO '-1'")
                         cursor.execute("SET max_parallel_workers_per_gather TO '0'")
-                    # Make sure that all connections get the new settings
-                    await engine.dispose()
 
             self._property_cache['DB:server_version'] = server_version
 
@@ -372,7 +374,7 @@ class NominatimAPI:
         """ Close all active connections to the database.
 
             This function also closes the asynchronous worker loop making
-            the NominatimAPI object unusuable.
+            the NominatimAPI object unusable.
         """
         self._loop.run_until_complete(self._async_api.close())
         self._loop.close()
@@ -445,7 +447,7 @@ class NominatimAPI:
                   place. Only meaning full for POI-like objects (places with a
                   rank_address of 30).
               linked_place_id (Optional[int]): Internal ID of the place this object
-                  linkes to. When this ID is set then there is no guarantee that
+                  links to. When this ID is set then there is no guarantee that
                   the rest of the result information is complete.
               admin_level (int): Value of the `admin_level` OSM tag. Only meaningful
                   for administrative boundary objects.