Bonjour
Working on linux with postgres (postgresql-6.5.3) I found
indication the postmaster is not flushing everything from
system cache while receiving the SIGTERM or SIGINT signal.
conditions:
I start (on an empty data-base) to upload a data-base
via the commands:
first I start portmaster such:
/usr/bin/postmaster -B512 -D /bigbase -p port# -s -o -F
then load the database
psql -q -p -f bigbase.tbl -p port# database name
Once the database is loaded, if I "kill -TERM postmaster_pid"
then restart postmaster and use psql, I can see all indexes
and data-records A_OK (so everything is on disk).
Now If I start postmaster in silent mode "-S"
/usr/bin/postmaster -B512 -D /bigbase -p port# -s -o -F -S
reload the data-base base again:
psql -q -p -f bigbase.tbl -p port# database name
(previous data-base has been fully deleted)
Do my "kill -TERM postmaster_pid"
Then if I restart postmaster and use psql, I can see indexes
are incomplete (obviously, previous to the kill indexes are A_ONE).
as fare I can see the problem stand only on the indexes (data
records seems all here, bigbase is around 120000 records, 1K record).
I know "-F" is dangerous if you have a system crash, but
according my understanding and my postgres source code review,
"fsync" is done everytime a "gentle" kill is done (no -KILL).
I first noticed the problem while starting the command
/usr/bin/postmaster -B512 -D /bigbase -p port# -s -o -F
(note: no -S) via a "rsh".
I feel the problem is related to stdin state, (but why
the problem only show up for indexes), any help or hint
will higly appreciated.
I looked at previous post, was not able to locate
post about same kind of problem.
A bientot
==========================================================================
Jean-Marc Pigeon Internet: Jean-Marc.Pigeon@safe.ca
SAFE Inc. Phone: (514) 493-4280 Fax: (514) 493-1946
REGULUS, a real time accounting/billing package for ISP
REGULUS' Home base <"http://www.regulus.safe.ca">
==========================================================================