Server aktualisieren mit OSMOSIS - Verständnisfrage

Hallo ich habe einen Server mit Planet installiert.

Zum Update der DB verwende ich OSMOSIS nach folgendem Toutorial
http://wiki.openstreetmap.org/wiki/Ubuntu_tile_server

Das ganze läuft nun auch einmal auf der Console durch - muss ich nun immer wenn ich den Server Update möchte per “hand”

sudo -u www-data /usr/bin/openstreetmap-tiles-update-expire.sh

ausführen ? in der configuration.txt steht ja ein Wert mit XXX Sekunden wo greifen denn diese ? das ganze müsste doch automatisch dann wieder starten ?

Zudem habe ich probehalber ein paar Gebäude bei OSM eingezeichnet. Wann sehe ich diese bei mir in der lokalen Karte ? Habe nach dem Update die entpsrechnde Kachel sicherheitshalber auch noch als dirty markiert Änderungen sind aber nicht drin.

aus dem Wiki: "If your tile server is behind more than an hour you will need to call the openstreetmap-tiles-expire script multiple times. If you want to continuously keep your server up to data, you need to add the openstreetmap-tiles-expire.sh script to your crontab. "

im configuration.txt steht drin, wieviele Daten er sich in einem Rutsch holt (schätze mal da steht 3600, macht 1 Stunde)

Möglichkeit 1: Wert erhöhen
Möglichkeit 2: Script mehrfach laufen lassen, bis die Daten aktuell sind. Es wird vorgeschlagen, das mit einem Cron-Job zu machen. So mach ich das auch aber in einem anderen Umfeld.
Kannst ihn ruhig immer laufen lassen wenn der Rechner an ist, nur muß der mehrmals pro Stunde gestartet werden, sonst holt der das Delay nie auf.

Gruss
walter

p.s. bau mal in den Script HINTER dem osmosis-Befehl (also nachdem der Update fertig ist) das ein:


osmosis  --read-replication-lag humanReadable=yes workingDirectory=.   

dann sieht du, was abgeht. Bei Problemen workingDirectory=/full_path_to_working_directory eingeben (da wo state.txt liegt).

Danke für die schnelle Hilfe.

Dh. konkret wenn ich den Planet vor 2 Wochen importiert habe und ich die 3600 mache kommen pro Durchlauf dei Änderungen seit des Imports +1h etc.

kann man auch alle Daten auf einmal holen ? oder gibts da ne Beschränkung ? habe inzwischen 6h.

jo, wenn in configuration.txt 3600 drin steht nimmt er die erste Stunde, die ihm fehlt - also die ca 2 Wochen alte,

nö, geht. einfach auf z.b. 24000 oder passend setzen. mach aber nicht viel aus. Das ist nur die maximale Größe des Zeitfensters.

je größer das Fenster so länger braucht der Job. Aber insgesamt ist 1*10 Stunden schneller als 10x1 Stunde, da er Dubletten (mehrfache Änderungen an einem Objekt) rausschmeisst und somit weniger Datensätze verarbeiten muß.

poste doch mal dein configuration.txt der BaseUrl interessiert mich.
Und vergiss die zusätzliche osmosis-Zeile nicht. Das erklärt wirklich viel. Noch besser: 1x vor dem Update und 1x nachher.

Gruss
walter

Muss die Zusazziele in openstreetmap-tiles-update-expire.sh ?

habs mal auf Kommandozeile ausgeführt:

Apr 19, 2013 3:12:02 PM org.openstreetmap.osmosis.core.Osmosis run
INFO: Osmosis Version 0.40.1
Apr 19, 2013 3:12:02 PM org.openstreetmap.osmosis.core.Osmosis run
INFO: Preparing pipeline.
Apr 19, 2013 3:12:02 PM org.openstreetmap.osmosis.core.Osmosis run
INFO: Launching pipeline execution.
Apr 19, 2013 3:12:02 PM org.openstreetmap.osmosis.core.Osmosis run
INFO: Pipeline executing, waiting for completion.
2 day(s) and 0 hour(s)
Apr 19, 2013 3:12:04 PM org.openstreetmap.osmosis.core.Osmosis run
INFO: Pipeline complete.
Apr 19, 2013 3:12:04 PM org.openstreetmap.osmosis.core.Osmosis run
INFO: Total execution time: 2150 milliseconds.

anbei die Configuration.txt

# The URL of the directory containing change files.
baseUrl=http://planet.openstreetmap.org/replication/minute

# Defines the maximum time interval in seconds to download in a single invocation.
# Setting to 0 disables this feature.
maxInterval = 21600

ja, genau. es kommt auf die Ausgabe “2 day(s) and 0 hour(s)” an. die sollte immer besser werden.

prima, ist das minute-update. macht aber nix, da er sich schon die richtigen Daten runterlädt. lass es so.

ach ja, wenn du das mit cron laufen lassen willst, mußt du verhindern, dass der “neue” Job den noch rennenden Job stört.
Hier mal mein update-bat mit locking. d.h. der erste Job erstellt ein Lockfile, dass den 2. Job solange stopt, bis der erste fertig ist.


#!/bin/bash
#
#set -x
#
cd /home/walter/osm/db/diff
date
PIDFILE=`basename $0`.pid
RUNLOG=`basename $0`.log

OSMOSIS=/opt/install/osmosis-0.42/bin/osmosis

m_info()
{
        echo "[`date +"%Y-%m-%d %H:%M:%S"`] $$ $1"
    echo "[`date +"%Y-%m-%d %H:%M:%S"`] $$ $1" >> "$RUNLOG"
}
getlock()
{
    if [ -s $PIDFILE ]; then
        if [ "$(ps -p `cat $PIDFILE` | wc -l)" -gt 1 ]; then
            return 1 #false
        fi
    fi
    echo $$ >"$PIDFILE"
    return 0 #true
}
freelock()
{
    rm "$PIDFILE"
}
if ! getlock; then
    m_info "pid `cat $PIDFILE` still running"
    exit 3
fi

JAVACMD_OPTIONS="-server -Xmx2048M"
export JAVACMD_OPTIONS

TSTART=`date "+%s"`
m_info "starting osmosis"

$OSMOSIS  \
        --read-replication-interval  \
        --simc \
        --lpc interval=60 \
        --write-pgsql-change database=osm authFile=authFile.txt

RC=$?
m_info "osmosis done RC=$RC"

m_info "lag is `$OSMOSIS   --read-replication-lag humanReadable=yes workingDirectory=.`"

freelock

ACHTUNG: Hinter den \ darf kein einziges Zeichen stehen - noch nicht mal ein Blank

Gruss
walter

Ok Danke das sieht gut aus
Da ich in Linux noch ziemleich neu unterwegs bin -welche Stellen / Pfade muss im CronJob File angepasst werden auf meine Ordnerstruktur und was kann blieben

das ist mein crontab-eintrag: “*/1 * * * * /home/walter/osm/db/diff/update >> /home/walter/osm/db/cron.log 2>&1” natürlich ohne "

update ist der vorhin gepostete script. muttu nur noch deinen Pfad anpassen.
startet bei mir 1x pro Minute, da ich hier NUR die Daten abhole und in die DB schreiben lasse. Must du halt anpassen. Erzeugt 2 logfiles - einmal cron.log und einmal update.log

update.log ist kürzer und könnte so aussehen; dann ist alles ok:


...
[2013-04-19 18:55:01] 1173 starting osmosis
[2013-04-19 18:56:01] 1246 pid 1173 still running
[2013-04-19 18:56:06] 1173 osmosis done RC=0
[2013-04-19 18:56:06] 1173 lag is 2 minute(s) and 1 second(s)
[2013-04-19 18:57:01] 1299 starting osmosis
[2013-04-19 18:58:01] 1336 pid 1299 still running
[2013-04-19 18:58:39] 1299 osmosis done RC=0
[2013-04-19 18:58:39] 1299 lag is 1 minute(s) and 59 second(s)
[2013-04-19 18:59:02] 1404 starting osmosis
[2013-04-19 19:00:01] 1462 pid 1404 still running
[2013-04-19 19:00:51] 1404 osmosis done RC=0
[2013-04-19 19:00:52] 1404 lag is 2 minute(s) and 0 second(s)
[2013-04-19 19:01:01] 1554 starting osmosis
[2013-04-19 19:02:01] 1554 osmosis done RC=0
[2013-04-19 19:02:01] 1618 pid 1554 still running
[2013-04-19 19:02:01] 1554 lag is                                                        <---------------------- *
[2013-04-19 19:03:01] 1639 starting osmosis
...

RC=0 alles ok, RC !=0 Fehler

*) manchmal fehlt hinter lag was; das ist ein uralter osmosis-bug, der auftritt wenn das lag kleiner als 60 Sekunden ist. Gibt im cron.log eine riesige Fehlermeldung es ist aber alles ok. don’t panic.

Gruss
walter