Bonjour,

A chaque démarrage de mon serveur, un script exécute les commandes suivantes:
1 - sauvegarde a froid de la base de données (tar des répertoires)
2 - Démarrage du serveur (pg_ctl -w start-D xxx)
1 Si la commande failed (retour != 0) -> Fait autre chose
2 Sinon le programme continue

Ce code fonctionne très bien dans la majorité des cas.
Cependant il se pose un problème dans le cas ou il y a eu arrêt brutal de la machine (Genre coupure courant).
Dans ce cas la commande pg_ctl -w start me renvoi immédiatement un code retour != 0 mais continue a essayer de démarrer le serveur jusqu'a y parvenir.

Ce qui me surprend, c'est que la commande wait est censé attendre la fin du démarrage du serveur avant de rendre la main.

Voici la log de mon programme qui commence juste après la tentative de démarrage du serveur (pg_ctl -w start)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Postgres>pg_ctl: another server might be running; trying to start server anyway
Postgres>pg_ctl: could not start server
Postgres>Examine the log output
APPLI>Command failed: pg_ctl -w start -D /data/mabase <-- LA COMMANDE REND LA MAIN ICI
Postgres>LOG:  database system was interrupted at 2009-11-20 19:04:28 UTC
Postgres>LOG:  checkpoint record is at 0/21AF40C
Postgres>LOG:  redo record is at 0/21AF40C; undo record is at 0/0; shutdown FALSE
Postgres>LOG:  next transaction ID: 0/14029; next OID: 17192
Postgres>LOG:  next MultiXactId: 1; next MultiXactOffset: 0
Postgres>LOG:  database system was not properly shut down; automatic recovery in progress
Postgres>LOG:  redo starts at 0/21AF454
Postgres>LOG:  record with zero length at 0/21B2070
Postgres>LOG:  redo done at 0/21B2048
Postgres>LOG:  database system is ready
Voici ma config:
Postgres 8.2
Mandriva 2007

Si quelqu'un a une idée, je suis bien évidemment très intéressé.

Arnaud