when adding Tiger data, check first if database is in frozen state

This commit is contained in:
Marc Tobias
2023-05-02 18:37:36 +02:00
parent 5751686fdc
commit e5f332bd71
5 changed files with 36 additions and 4 deletions

View File

@@ -50,3 +50,9 @@ def drop_flatnode_file(fpath: Optional[Path]) -> None:
"""
if fpath and fpath.exists():
fpath.unlink()
def is_frozen(conn: Connection) -> bool:
""" Returns true if database is in a frozen state
"""
return conn.table_exists('place') is False

View File

@@ -23,6 +23,7 @@ from nominatim.db.sql_preprocessor import SQLPreprocessor
from nominatim.errors import UsageError
from nominatim.data.place_info import PlaceInfo
from nominatim.tokenizer.base import AbstractAnalyzer, AbstractTokenizer
from nominatim.tools import freeze
LOG = logging.getLogger()
@@ -113,6 +114,13 @@ def add_tiger_data(data_dir: str, config: Configuration, threads: int,
"""
dsn = config.get_libpq_dsn()
with connect(dsn) as conn:
is_frozen = freeze.is_frozen(conn)
conn.close()
if is_frozen:
raise UsageError("Tiger cannot be imported when database frozen (Github issue #3048)")
with TigerInput(data_dir) as tar:
if not tar:
return 1