X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/882f496e0a1093239a26cdbf29c9af5c5fe9977c..88eaf7fb94a112350c954cc6dd7e34b3408d461a:/nominatim/nominatim.py diff --git a/nominatim/nominatim.py b/nominatim/nominatim.py index ac6d23ff..b29bf343 100755 --- a/nominatim/nominatim.py +++ b/nominatim/nominatim.py @@ -35,9 +35,14 @@ import select log = logging.getLogger() def make_connection(options, asynchronous=False): - return psycopg2.connect(dbname=options.dbname, user=options.user, - password=options.password, host=options.host, - port=options.port, async_=asynchronous) + params = {'dbname' : options.dbname, + 'user' : options.user, + 'password' : options.password, + 'host' : options.host, + 'port' : options.port, + 'async' : asynchronous} + + return psycopg2.connect(**params) class RankRunner(object): @@ -119,6 +124,15 @@ class DBConnection(object): self.wait() self.cursor = self.conn.cursor() + # Disable JIT and parallel workers as they are known to cause problems. + # Update pg_settings instead of using SET because it does not yield + # errors on older versions of Postgres where the settings are not + # implemented. + self.perform( + """ UPDATE pg_settings SET setting = -1 WHERE name = 'jit_above_cost'; + UPDATE pg_settings SET setting = 0 + WHERE name = 'max_parallel_workers_per_gather';""") + self.wait() def wait(self): """ Block until any pending operation is done. @@ -292,14 +306,14 @@ class Indexer(object): if command_stat > 100000: for t in self.threads: while not t.is_done(): - wait_select(t.conn) + t.wait() t.connect() command_stat = 0 ready = self.threads else: ready, _, _ = select.select(self.threads, [], []) - assert(False, "Unreachable code") + assert False, "Unreachable code" def nominatim_arg_parser():