• [^] # Re: Tu n'es pas le centre du monde

    Posté par . En réponse au journal Archlinux est morte.... Évalué à 7.

    Avec systemd ca se passe comme ca :
    - systemd crée la socket utilisée par postgresql au tout début
    - démarrage de postgresql et de tout ce qui en dépend, en parallèle
    - bacula ou autre service utilisant postgresql démarre et tente de communiquer avec postgresql en ouvrant sa socket. Pas d'erreur, la socket est la, puisque crée par systemd. Le kernel bufferise ce qui arrive sur la socket en attendant que quelqu'un lise dessus.
    - postgresql démarre, commence à lire ce qui est a été bufferisé sur la socket, et y répond

    Avec un system d'init qui ne crée pas les socket :
    - démarrage de postgresql, fork. la main est rendue au system d'init, qui passe au démarrage du service suivant.
    - postgresql commence à lire sa conf, ses données, et quelques operations qui prennent du temps
    - démarrage de bacula, et tentative d'ouverture de la socket => erreur, la socket n'existe pas, postgresql n'a pas encore eu le temps de la créer => bacula quitte avec une erreur
    - postgresql qui a fini de lire sa conf, ouvre sa socket et commence à écouter dessus, mais c'est trop tard pour bacula

    Plus de details la :
    http://0pointer.de/blog/projects/systemd.html