Python Error on Indexing Rank on Full Planet Import: How to Fix It?

I have 2T free SSD space, 7.7 G free RAM.
Ubuntu 24.04.2 LTS
Using flatnode
I believe I followed all of the instructions

Command
nohup nominatim import --osm-file planet-250519.osm.pbf 2>&1 &

Error

2025-05-28 21:21:52: Setting up tokenizer
2025-05-28 21:21:53: Calculate postcodes
2025-05-28 22:52:10: Indexing places
2025-05-28 22:52:10: Starting indexing rank (0 to 4) using 32 threads
...
2025-05-29 00:22:15: Starting rank 16 (using batch size 1)
...
2025-05-29 06:27:09: Done 1262502 in 5106 @ 247.272 per second - rank 22 ETA (seconds): 2696.64
Traceback (most recent call last):
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/indexer/indexer.py", line 202, in _index
    params.extend(runner.index_places_params(place))
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/indexer/runners.py", line 67, in index_places_params
    _analyze_place(place, self.analyzer))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/indexer/runners.py", line 28, in _analyze_place
    return Json(analyzer.process_place(PlaceInfo(place)))
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/tokenizer/icu_tokenizer.py", line 534, in process_place
    token_info.set_names(*self._compute_name_tokens(names))
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/tokenizer/icu_tokenizer.py", line 649, in _compute_name_tokens
    cur.execute("SELECT * FROM getorcreate_full_word(%s, %s, %s)",
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/psycopg/cursor.py", line 97, in execute
    raise ex.with_traceback(None)
psycopg.errors.AdminShutdown: terminating connection due to administrator command

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/srv/nominatim/nominatim-venv/bin/nominatim", line 5, in <module>
    exit(cli.nominatim())
         ^^^^^^^^^^^^^^^
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/cli.py", line 244, in nominatim
    return get_set_parser().run(cli_args=cli_args, environ=environ)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/cli.py", line 116, in run
    return args.command.run(args)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/clicmd/setup.py", line 82, in run
    return asyncio.run(self.async_run(args))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/asyncio/runners.py", line 194, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/clicmd/setup.py", line 121, in async_run
    await indexer.index_full(analyse=not args.index_noanalyse)
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/indexer/indexer.py", line 65, in index_full
    if await self.index_by_rank(5, 25) > 100:
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/indexer/indexer.py", line 147, in index_by_rank
    total += await self._index(runners.RankRunner(rank, analyzer),
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/indexer/indexer.py", line 190, in _index
    async with await psycopg.AsyncConnection.connect(
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/db/query_pool.py", line 83, in __aexit__
    await self.finish()
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/db/query_pool.py", line 57, in finish
    raise excp
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/db/query_pool.py", line 70, in _worker_loop
    await cur.execute(item[0], item[1])
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/psycopg/cursor_async.py", line 97, in execute
    raise ex.with_traceback(None)
psycopg.errors.AdminShutdown: terminating connection due to administrator command
2025-05-29 06:27:26: Task exception was never retrieved
future: <Task finished name='Task-770' coro=<QueryPool._worker_loop() done, defined at /srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/db/query_pool.py:59> exception=AdminShutdown('terminating connection due to administrator command\nCONTEXT:  PL/pgSQL function array_merge(integer[],integer[]) line 9 at IF\nPL/pgSQL function insert_addresslines(bigint,smallint,smallint,jsonb,geometry,geometry,text) line 112 at assignment\nSQL statement "SELECT * FROM insert_addresslines(NEW.place_id, NEW.partition, max_rank,\n                                    NEW.token_info, geom, NEW.centroid,\n                                    NEW.country_code)"\nPL/pgSQL function placex_update() line 453 at SQL statement')>
Traceback (most recent call last):
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/db/query_pool.py", line 70, in _worker_loop
    await cur.execute(item[0], item[1])
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/psycopg/cursor_async.py", line 97, in execute
    raise ex.with_traceback(None)
psycopg.errors.AdminShutdown: terminating connection due to administrator command
CONTEXT:  PL/pgSQL function array_merge(integer[],integer[]) line 9 at IF
PL/pgSQL function insert_addresslines(bigint,smallint,smallint,jsonb,geometry,geometry,text) line 112 at assignment
SQL statement "SELECT * FROM insert_addresslines(NEW.place_id, NEW.partition, max_rank,
                                    NEW.token_info, geom, NEW.centroid,
                                    NEW.country_code)"
PL/pgSQL function placex_update() line 453 at SQL statement
2025-05-29 06:27:26: Task exception was never retrieved
future: <Task finished name='Task-765' coro=<QueryPool._worker_loop() done, defined at /srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/db/query_pool.py:59> exception=AdminShutdown('terminating connection due to administrator command\nCONTEXT:  SQL statement "SELECT array_agg(country_code) FROM location_area_country\n    WHERE country_code is not null and st_covers(geometry, place)"\nPL/pgSQL function get_country_code(geometry) line 9 at SQL statement\nPL/pgSQL function placex_update() line 93 at assignment')>
Traceback (most recent call last):
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/db/query_pool.py", line 70, in _worker_loop
    await cur.execute(item[0], item[1])
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/psycopg/cursor_async.py", line 97, in execute
    raise ex.with_traceback(None)
psycopg.errors.AdminShutdown: terminating connection due to administrator command
CONTEXT:  SQL statement "SELECT array_agg(country_code) FROM location_area_country
    WHERE country_code is not null and st_covers(geometry, place)"
PL/pgSQL function get_country_code(geometry) line 9 at SQL statement
PL/pgSQL function placex_update() line 93 at assignment
2025-05-29 06:27:26: Task exception was never retrieved
future: <Task finished name='Task-751' coro=<QueryPool._worker_loop() done, defined at /srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/db/query_pool.py:59> exception=AdminShutdown('terminating connection due to administrator command\nCONTEXT:  PL/pgSQL function placex_update() line 204 at FOR over SELECT rows')>
Traceback (most recent call last):
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/db/query_pool.py", line 70, in _worker_loop
    await cur.execute(item[0], item[1])
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/psycopg/cursor_async.py", line 97, in execute
    raise ex.with_traceback(None)
psycopg.errors.AdminShutdown: terminating connection due to administrator command
CONTEXT:  PL/pgSQL function placex_update() line 204 at FOR over SELECT rows
2025-05-29 06:27:26: Task exception was never retrieved
future: <Task finished name='Task-747' coro=<QueryPool._worker_loop() done, defined at /srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/db/query_pool.py:59> exception=AdminShutdown('terminating connection due to administrator command\nCONTEXT:  PL/pgSQL function getnearfeatures(integer,geometry,geometry,integer) line 3228 at FOR over SELECT rows\nPL/pgSQL function insert_addresslines(bigint,smallint,smallint,jsonb,geometry,geometry,text) line 58 at FOR over SELECT rows\nSQL statement "SELECT * FROM insert_addresslines(NEW.place_id, NEW.partition, max_rank,\n                                    NEW.token_info, geom, NEW.centroid,\n                                    NEW.country_code)"\nPL/pgSQL function placex_update() line 453 at SQL statement')>
Traceback (most recent call last):
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/nominatim_db/db/query_pool.py", line 70, in _worker_loop
    await cur.execute(item[0], item[1])
  File "/srv/nominatim/nominatim-venv/lib/python3.12/site-packages/psycopg/cursor_async.py", line 97, in execute
    raise ex.with_traceback(None)
psycopg.errors.AdminShutdown: terminating connection due to administrator command
CONTEXT:  PL/pgSQL function getnearfeatures(integer,geometry,geometry,integer) line 3228 at FOR over SELECT rows
PL/pgSQL function insert_addresslines(bigint,smallint,smallint,jsonb,geometry,geometry,text) line 58 at FOR over SELECT rows
SQL statement "SELECT * FROM insert_addresslines(NEW.place_id, NEW.partition, max_rank,
                                    NEW.token_info, geom, NEW.centroid,
                                    NEW.country_code)"
PL/pgSQL function placex_update() line 453 at SQL statement

If you suggest a configuration fix, please let me know if I have to drop the database and start from scratch, or if there is a way to continue the processing from where it failed. If the latter, please let me know what command I should run.

Full Nominatim Import Command Output

Postgres Configuration

/srv/nominatim/nominatim-project/.env file

NOMINATIM_FLATNODE_FILE="/srv/nominatim/nominatim-project/flatnode.file"

Ubuntu Packages Installed

Pip packages (virtualenv)

Package            Version
------------------ ---------
anyio              4.9.0
asyncpg            0.30.0
certifi            2025.4.26
charset-normalizer 3.4.2
click              8.2.1
falcon             4.0.2
greenlet           3.2.2
gunicorn           23.0.0
h11                0.16.0
idna               3.10
Jinja2             3.1.6
MarkupSafe         3.0.2
nominatim-api      5.1.0
nominatim-db       5.1.0
osmium             4.0.2
packaging          25.0
pip                24.0
psutil             7.0.0
psycopg            3.2.9
psycopg-binary     3.2.9
pyicu              2.15.2
python-dotenv      1.1.0
PyYAML             6.0.2
requests           2.32.3
sniffio            1.3.1
SQLAlchemy         2.0.41
starlette          0.46.2
typing_extensions  4.13.2
urllib3            2.4.0
uvicorn            0.34.2

Your database was restarted by something external. Find out why the restart happened and make sure it doesn’t happen again. Then continue the import as described in the FAQ:

nominatim import --continue indexing

@lonvia, Sure enough, it was the apt-daily-upgrade service that ran a postgres upgrade and restarted the service. Since you’re recommending Ubuntu to users, it may be a good idea to add to the instructions to stop and disable the daily upgrade timer and service while the import is running.