[solved] Differential Update der DB knallt (zumindest bei mir)

Moin

hat jemand von euch, der seine DB mit den Diffs und osm2pgsql aktuell hält, das gleiche Problem?


Reading in file: /osm/db/planet3/diffs/2019/02/11/2019-02-11T10:33:01.osc
Using XML parser.
node cache: stored: 1591(100.00%), storage efficiency: 17.37% (dense blocks: 1, sparse nodes: 484), hit rate: 28.31%
Osm2pgsql failed due to ERROR: insert_rel failed: FEHLER:  Wert »42698« ist außerhalb des gültigen Bereichs für Typ smallint
(7)
Arguments were: 2632934, 4616, 42698, {6116226169,......

Grund ist die Anzahl von 42698 Members in dieser Route. Dort flippt osm2pgsql aus, da der Wert (in osm2pgsql?) maximal 36767 sein darf.

Hab schon auf TALK nachgefragt: https://lists.openstreetmap.org/pipermail/talk/2019-February/082064.html

Gruss
walter

ps: Die Relation taucht natürlich auch im letzten Hourly-Datensatz auf: https://planet.openstreetmap.org/replication/hour/000/056/235.osc.gz

Ich importiere minütliche diffs, und da scheint es bisher keine Probleme zu geben heute.

https://print.get-map.org/munin/localdomain/localhost.localdomain/osm_lag.html

Welche konkrete osm2pgsql Version ist das?

Die Relation selbst ist kaputt. Die Member sind da teilweise 10x oder häufiger drin.

Hallo,

der Bug in Osm2pgsql ist im März 2017 schon einmal aufgetreten und behoben worden. Alle Versionen ab 0.90.2 und 0.92.1 haben das Problem nicht. Die Lösung ist, einfach nur 32767 Mitglieder der Relation in die Tabelle planet_osm_relations zu schreiben.

Viele Grüße

Michael

Gibt es denn auf der Server-Seite ein kein offizielles Limit für die Anzahl der Mitglieder? Wenn man nur 2000 Punkte in einem Weg haben darf, dann sollte doch auch bei den Relationen irgendein Limit existieren?

Nein und es hat wohl vor zwei Jahren schon mal geknallt, als die Brasilianer irgendeinen Import durchgeführt haben und eine Relation von denen 70000 Member enthielt.

leider eine “etwas” veraltete: osm2pgsql-0.93.0-dev

ok, wenn du eine bessere verwendest, werde ich wohl manuell eingreifen müssen. Halt den Modify aus dem OSC löschen.

hatte ich schon fast vermutet.

Danke und Gruss
walter

“eigentlich” fahre ich 0.93, sollte also kein Problem haben. Aber sicher ist da die Ursache zu suchen.

danke für die Links
walter

Ich hatte damals schon ein issue dazu aufgemacht: https://github.com/openstreetmap/openstreetmap-website/issues/1711

Frage ist, ob wir das nochmal aufmachen sollen?

Nö, die gibt es nicht.

Gruss
walter

Leider gibt es no limit. :stuck_out_tongue:

Nö, dürfte nicht nötig sein. Ist ja anscheinend behoben https://github.com/openstreetmap/osm2pgsql/pull/716 und da Hartmut keine Probleme damit hat, liegt es wohl an meiner alten Version.

Komisch ist nur, dass die 0.93 eigentlich auch gefixt sein sollte - aber das ist definitiv meine lokale Baustelle.

Und genau das wollte ich wissen.

Mein Diff-Update schnurrt inzwischen wieder (bis die nächste Hammer-Rel kommt ;))

Gruss
walter

PS: Um die Rel an sich (Schrott entfernen) kümmern sich schon die Kollegen auf TALK.

Naja, generell betrifft das ja nicht nur osm2pgsql. Ich würde es deutlich besser finden, wenn die API wirklich extreme Sachen zurückweisen würde. Ich kann heute bestimmt eine Relation mit 1 Mio. Member anlegen, ohne dass das abgelehnt würde (wahrscheinlich läuft das aber ewig).

Vermutlich würde das am erähnten “max number of objects per changeset” Limit scheitern, zumindest, wenn Du es in einem CS versuchst.
Aber ich würde mal als vernünftiges Limit bei der Mitgliederzahl einen Wert wie 32767 ansetzen. Wenn dann doch mal einer noch mehr Inseln in einem MP-See erfassen will, kann man es ja immer noch höher setzen.
Ein amoklaufendes Script oder JOSM Plugin o.ä. reicht ja schon, um solche Sachen zu produzieren, und anschließend hätten viele Leute viel Arbeit damit, Ihre Datenbanken aufzuräumen.

Das ist kein wirkliches Limit in diesem Fall - https://upload.apis.dev.openstreetmap.org/changeset/1022 hat 1 Relation und beinhaltet 60148 existierende Objekte. Für das Limit relevant ist hier die Zahl “1 Relation”.

https://upload.apis.dev.openstreetmap.org/api/0.6/changeset/1022/download

Wie ich gerade auf OSM Talk geschrieben habe, wird der neue cgimap-basierte Changeset-Upload ein Limit von 32’000 Relationsmitgliedern haben. Die handvoll Relationen, die dieses Limit überschreiten, müssten dann vor dem Upload entsprechend verkleinert werden (sofern euer Editor nicht vorher schon abgeraucht ist).

Ah, interessant. Gibt es da schon einen geplannte Release-Termin? Frage mich gerade, ob man in die Editoren schon jetzt eine entsprechende Prüfung einbauen sollte?

Mal sehen: https://github.com/zerebubuth/openstreetmap-cgimap/pull/174

Gruss
walter

Stutz: “Most likely this pull request will be one of the last changes before releasing 0.7.0

Das ist ein guter Punkt, das Annoncieren von bestimmten Limits gehört eigentlich nach /api/capabilities, was wiederum im Rails port liegt. Ich hab das mal hier https://github.com/openstreetmap/openstreetmap-website/issues/1711#issuecomment-466629773 ergänzt.

Ich denke mal, das betrifft eher nur JOSM, denn iD ist mit solchen Relationen heute schon hoffnungslos überfordert.

Konkrete Termine gibt es nicht. Ich werde demnächst ein Operations-Issue aufmachen und dann mal schauen wie es weiter geht.

Das ist nur eine cgimap interne Versionsnummer. Wegen Semantic Versioning springt die jetzt von 0.6.2 zu 0.7.0.

In den XMLs steht aber überall API Version 0.6 drin, und die neue Version macht auch nur Dinge, die unter https://wiki.openstreetmap.org/wiki/API_v0.6 beschrieben sind.