Correcting one point of my last mail.
> Ouch! It brought another bug.
My patch also did.
regards,
====
> > I completely understood the behavior thanks to your detailed
> > explanation. (And how to use log messages effectively :-)
>
> Sorry, I just found that it's wrong, and found another problem
> brought by your patch.
>
> > I agree that the fix is appropriate.
> >
> > > I believe the attached fix is the right way to fix this.
> >
> > It also worked for me. Thank you.
>
> | * as if we had just replayed the record before the REDO location
> | * (or the checkpoint record itself, if it's a shutdown checkpoint).
>
> The test script following raises assertion failure. It's added
> with 'non-shutdown' checkpoint' just before shutting down
> immediately. Starting server aborts with the following message.
>
> | LOG: database system was not properly shut down; automatic recovery in progress
> | TRAP: FailedAssertion("!(((oldestActiveXID) != ((TransactionId) 0)))", File: "xlog.c", Line: 6771)
> | LOG: startup process (PID 28561) was terminated by signal 6: Aborted
>
> regards,
>
> --
> Kyotaro Horiguchi
> NTT Open Source Software Center
>
> ===
> #! /bin/sh
>
> killall postgres
> rm -rf $PGDATA/*
> initdb
> pg_ctl start -w
> sleep 1
> psql postgres -c 'checkpoint'
> pg_ctl stop -m i
> cat > $PGDATA/recovery.conf <<EOF
> standby_mode = 'on'
> primary_conninfo = 'host=localhost port=9999 user=repuser application_name=pm01 keepalives_idle=60
keepalives_interval=5keepalives_count=5'
> #restore_command = '/bin/true'
> recovery_target_timeline = 'latest'
> EOF
> cat >> $PGDATA/postgresql.conf <<EOF
> #log_min_messages = debug5
> hot_standby = on
> EOF
> pg_ctl start
> ====
--
Kyotaro Horiguchi
NTT Open Source Software Center