[Tile-serving] [openstreetmap/osm2pgsql] Osm2pgql failed to output expired tiles for “delete” operation when running in cron (#1268)

chentoz notifications at github.com
Tue Aug 25 13:29:06 UTC 2020


# !/bin/bash
set -e

set > /tmp/set-output1
echo "yes" >> /tmp/run.log
PATH=/home/chentoz/Downloads/local-osmosis/bin:/usr/local/go/bin:/home/chentoz/Downloads/local-osmosis/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/chentoz/go/bin:/home/chentoz/go/bin
echo "no" >> /tmp/run.log
echo $PATH > /tmp/path

NOW=$(date -u +"%Y-%m-%d_%H:%M:%S")

MIN_AGO=$(date -u -d "$1 min ago" +"%Y-%m-%d_%H:%M:%S")
MAPSTYLE=ajt
PGHOST=localhost
PGUSER=chentoz
PGPASS=1
PGDATABASE_EDIT=gis-edit
PGDATABASE_RENDER=gis

OSMOSIS_BIN=/home/chentoz/Downloads/local-osmosis/bin/osmosis
OSM2PGSQL_BIN=/usr/local/bin/osm2pgsql
OSM2PGSQL_OPTIONS="-v -d $PGDATABASE_RENDER -G --hstore -r xml --tag-transform-script /home/chentoz/Downloads/openstreetmap-carto/openstreetmap-carto.lua -C 9999 --number-processes 5 -S /home/chentoz/Downloads/openstreetmap-carto/openstreetmap-carto.style"

RENDER_BIN=/usr/local/bin/render_expired
RENDER_OPTIONS="-m $MAPSTYLE -z $EXPIRY_MINZOOM -Z $EXPIRY_MAXZOOM -n 5"
# RENDER_OPTIONS="-m $MAPSTYLE -z $EXPIRY_MINZOOM -Z $EXPIRY_MAXZOOM -d $EXPIRY_MINZOOM -n 5"

BASE_DIR=/tmp
LOG_DIR=/tmp

# BASE_DIR=/var/lib/mod_tile
# LOG_DIR=/var/log/tiles/

WORKOSM_DIR=$BASE_DIR/.osmosis

LOCK_FILE=/tmp/openstreetmap-update-expire-lock.txt
CHANGE_FILE=$BASE_DIR/changes.osc.$$
EXPIRY_FILE=$BASE_DIR/dirty_tiles.$$
# EXPIRY_FILE=/home/chentoz/Downloads/dirty_tiles.$$
STOP_FILE=$BASE_DIR/stop.txt

OSMOSISLOG=$LOG_DIR/osmosis.log
PGSQLLOG=$LOG_DIR/osm2pgsql.log
EXPIRYLOG=$LOG_DIR/expiry.log
RUNLOG=$LOG_DIR/run.log

EXPIRY_MINZOOM=14
EXPIRY_MAXZOOM=20

#*************************************************************************
#*************************************************************************

m_info()
{
        echo "[`date +"%Y-%m-%d %H:%M:%S"`] $$ $1" >> "$RUNLOG"
}

m_debug()
{
        # return 0
        echo "[`date +"%Y-%m-%d %H:%M:%S"`] $$ $1" >> "$RUNLOG"
}

m_error()
{
    echo "[`date +"%Y-%m-%d %H:%M:%S"`] $$ [error] $1" >> "$RUNLOG"

    m_info "resetting state"
    # /bin/cp $WORKOSM_DIR/last.state.txt $WORKOSM_DIR/state.txt || true

    rm "$CHANGE_FILE" #|| true
    rm "$EXPIRY_FILE" #|| true
    rm "$LOCK_FILE"
    exit
}

m_ok()
{
    echo "[`date +"%Y-%m-%d %H:%M:%S"`] $$ $1" >> "$RUNLOG"
}

getlock()
{
    if [ -s $1 ]; then
        if [ "$(ps -p `cat $1` | wc -l)" -gt 1 ]; then
            return 1 #false
        fi
    fi

    echo $$ >"$1"

    rm "$CHANGE_FILE" #|| true
    rm "$EXPIRY_FILE" #|| true

    return 0 #true
}

freelock()
{
    rm "$1"
}


if [ $# -eq 1 ] ; then
    # make sure the lockfile is removed when we exit and then claim it

    if ! getlock "$LOCK_FILE"; then
        m_info "pid `cat $LOCK_FILE` still running"
        exit 3
    fi

    if [ -e $STOP_FILE ]; then
        m_info "stopped"
        exit 2
    fi

    m_info "============================= Updating : $(date -u +"%Y-%m-%d_%H:%M:%S") ============================="
    m_ok "diff openstreetmap database changes between $MIN_AGO and $NOW dates."
    m_debug "$OSMOSIS_BIN --read-apidb-change host=$PGHOST database=$PGDATABASE_EDIT  user=$PGUSER password=$PGPASS \
	    intervalBegin=$MIN_AGO intervalEnd=$NOW validateSchemaVersion=no --write-xml-change file=$CHANGE_FILE"
    if ! $OSMOSIS_BIN --read-apidb-change host="$PGHOST" database="$PGDATABASE_EDIT"  user="$PGUSER" password="$PGPASS" \
	    intervalBegin=$MIN_AGO intervalEnd=$NOW validateSchemaVersion="no" --write-xml-change file="$CHANGE_FILE" 1>&2 2> "$OSMOSISLOG" ; then
        m_error "Osmosis error"
    fi

    m_info "Change file $CHANGE_FILE, lines : $(wc -l $CHANGE_FILE | cut -f1 -d' ')"

    if [ $(grep judyzhu $CHANGE_FILE 2>/dev/null | wc -l) -le 0 ] ; then

        m_ok "importing diff"
        EXPIRY_METAZOOM=`expr $EXPIRY_MAXZOOM - 0`
        m_debug "$OSM2PGSQL_BIN -a --slim -e$EXPIRY_MINZOOM-$EXPIRY_MAXZOOM $OSM2PGSQL_OPTIONS -o "$EXPIRY_FILE" $CHANGE_FILE"
        if ! $OSM2PGSQL_BIN -a --slim -e$EXPIRY_MINZOOM-$EXPIRY_MAXZOOM $OSM2PGSQL_OPTIONS -o "$EXPIRY_FILE" $CHANGE_FILE 1>&2 2> "$PGSQLLOG" ; then
            m_error "osm2pgsql error"
        fi

        cat $EXPIRY_FILE | sort | uniq | tee -a > $EXPIRY_FILE

        m_ok "generating dirty tiles url"
        rm /tmp/render.list
        touch /tmp/render.list
        while IFS= read -r line; do
            m_info "dirty tiles : $line"
            # echo "http://localhost/$line.png" >> $(($EXPIRY_FILE)_url)
            var1=$(echo $line | cut -f1 -d/)
            var2=$(echo $line | cut -f2 -d/)
            var3=$(echo $line | cut -f3 -d/)
            echo "$var2 $var3 $var1" >> /tmp/render.list
        done < $EXPIRY_FILE

        m_ok "expiring tiles"
        if ! $RENDER_BIN $RENDER_OPTIONS < $EXPIRY_FILE 2>&1 | tail -8 >> "$EXPIRYLOG"; then
            m_info "Expiry failed"
        fi

        m_ok "Dirty tile : $EXPIRY_FILE, lines : $(wc -l $EXPIRY_FILE | cut -f1 -d' ')"
    else

        m_info "importing *delete* diff / expiry manually"
    fi

    m_info "============================= Updating Done : $(date -u +"%Y-%m-%d_%H:%M:%S") ============================="
    freelock "$LOCK_FILE"

    set > /tmp/set-output2

fi

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openstreetmap/osm2pgsql/issues/1268#issuecomment-680025280
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/tile-serving/attachments/20200825/a22a1bdd/attachment.htm>


More information about the Tile-serving mailing list