X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/d856788bf5cf7b4b3e2b4de10f37cf3002ae6826..fbb6edfdaf9d1643b541aa08542749132f1d34ea:/src/nominatim_db/tools/replication.py diff --git a/src/nominatim_db/tools/replication.py b/src/nominatim_db/tools/replication.py index 91171deb..e50eedee 100644 --- a/src/nominatim_db/tools/replication.py +++ b/src/nominatim_db/tools/replication.py @@ -18,7 +18,7 @@ import urllib.request as urlrequest from ..errors import UsageError from ..db import status -from ..db.connection import Connection, connect, server_version_tuple +from ..db.connection import Connection, connect from .exec_utils import run_osm2pgsql try: @@ -33,6 +33,7 @@ except ModuleNotFoundError as exc: LOG = logging.getLogger() + def init_replication(conn: Connection, base_url: str, socket_timeout: int = 60) -> None: """ Set up replication for the server at the given base URL. @@ -83,6 +84,7 @@ def check_for_updates(conn: Connection, base_url: str, LOG.warning("New data available (%i => %i).", seq, state.sequence) return 0 + class UpdateState(Enum): """ Possible states after an update has run. """ @@ -125,8 +127,7 @@ def update(dsn: str, options: MutableMapping[str, Any], # Read updates into file. with _make_replication_server(options['base_url'], socket_timeout) as repl: outhandler = WriteHandler(str(options['import_file'])) - # tyoing: work around typing bug in pyosmium 4.0 - endseq = repl.apply_diffs(outhandler, startseq + 1, # type: ignore[arg-type] + endseq = repl.apply_diffs(outhandler, startseq + 1, max_size=options['max_diff_size'] * 1024) outhandler.close() @@ -155,7 +156,7 @@ def run_osm2pgsql_updates(conn: Connection, options: MutableMapping[str, Any]) - # Consume updates with osm2pgsql. options['append'] = True - options['disable_jit'] = server_version_tuple(conn) >= (11, 0) + options['disable_jit'] = True run_osm2pgsql(options) # Handle deletions @@ -177,12 +178,12 @@ def _make_replication_server(url: str, timeout: int) -> ContextManager[Replicati """ Download a resource from the given URL and return a byte sequence of the content. """ - headers = {"User-Agent" : f"Nominatim (pyosmium/{pyo_version.pyosmium_release})"} + headers = {"User-Agent": f"Nominatim (pyosmium/{pyo_version.pyosmium_release})"} if self.session is not None: return self.session.get(url.get_full_url(), - headers=headers, timeout=timeout or None, - stream=True) + headers=headers, timeout=timeout or None, + stream=True) @contextmanager def _get_url_with_session() -> Iterator[requests.Response]: