FATAL: Sperrdatei "postmaster.pid" ist leer

Beim Versuch, neu zu erstellen, ist mir zum ersten Mal der folgende Fehler aufgetreten.

2022-10-04 14:39:49.780 UTC [1700] FATAL:  lock file "postmaster.pid" is empty
2022-10-04 14:39:49.780 UTC [1700] HINT:  Either another server is starting, or the lock file is the remnant of a previous server startup crash.

Ich kann den Hinweis natürlich lesen, bin mir aber nicht sicher, wie ich vorgehen soll. Kann mir jemand Einblick geben?

Wann passiert das? Ist das eine Standardinstallation?

Standardinstallation und nach Ausführung von ./launcher rebuild app

Versuchen Sie es vielleicht mit einem

 ./launcher start app

Hat das vorher funktioniert?

Ist es ein Fehler oder eine Warnung. Haben Sie versucht, es in Ihrem Browser zu öffnen?

Was sagt

 docker ps

Antwort auf ./launcher start app:

57c2a0746e93
Nichts zu tun, Ihr Container wurde bereits gestartet!

Und dann erhalte ich im Browser 502 Bad Gateway.

docker ps Ausgabe

CONTAINER ID   IMAGE                 COMMAND        ERSTELLT       STATUS          PORTS                                                                                                                 NAMEN
57c2a0746e93   local_discourse/app   „/sbin/boot“   6 Monate ago   Up 16 Minuten   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp   app

Das ist seltsam. Ich glaube, ich werde neu starten und es noch einmal neu erstellen.

Oder vielleicht

   ./launcher stop app; ./launcher rebuild app

Sie führen einen alten Container aus, keinen, den Sie gerade erstellt haben (vor 6 Monaten erstellt).

Und vielleicht gab es einige andere Fehler beim Neuerstellen, die Sie nicht bemerkt haben.

Gleiches Ergebnis

2022-10-04 15:26:43.452 UTC [1699] FATAL:  lock file "postmaster.pid" ist leer
2022-10-04 15:26:43.452 UTC [1699] HINT:  Entweder startet ein anderer Server, oder die Lock-Datei ist ein Überbleibsel eines früheren Serverstart-Absturzes.

Hier sind nicht genügend Daten vorhanden, um das Problem zu beheben.

Dies geschieht, weil der Build-Prozess davon ausgeht, dass PG bereits ausgeführt wird. Möglicherweise ist also etwas mit dem PG-Upgrade-Prozess schiefgelaufen. Können Sie die vollständigen Protokolle des Launchers (Passwörter geschwärzt) einschließen, damit wir sehen können, was los ist?

Vielleicht hilft es, sich ein System anzusehen, das korrekt funktioniert. Ich sehe meine Lockdatei hier:

# ls -l /var/discourse/shared/standalone/postgres_data/postmaster.pid
-rw------- 1 systemd-resolve input 92 Nov 15 16:20 /var/discourse/shared/standalone/postgres_data/postmaster.pid

und der 15. November ist das Datum, an dem ich die App zuletzt gestartet habe. Wenn ich die App betrete, sehe ich die Postgres-Prozesse:

# cd /var/discourse/
# ./launcher enter app
x86_64 arch detected.
# ps auxfc|egrep -1 postm
root        45  0.0  0.0   2332     0 ?        S    Nov15   0:00      \_ svlogd
postgres    48  0.0  0.1 213160  1784 ?        S    Nov15   0:27      \_ postmaster
postgres    67  0.0  2.6 213380 26924 ?        Ss   Nov15   0:34          \_ postmaster
postgres    68  0.0  0.4 213292  4236 ?        Ss   Nov15   0:15          \_ postmaster
postgres    69  0.0  0.1 213160  1068 ?        Ss   Nov15   3:44          \_ postmaster
postgres    70  0.0  0.1 213840  1520 ?        Ss   Nov15   0:16          \_ postmaster
postgres    71  0.0  0.0  68184   380 ?        Ss   Nov15   0:56          \_ postmaster
postgres    72  0.0  0.0 213716   468 ?        Ss   Nov15   0:00          \_ postmaster
postgres    92  0.0  0.0 225364   324 ?        Ss   Nov15   0:01          \_ postmaster
postgres   176  0.0  0.1 217944  1484 ?        Ss   Nov15   0:01          \_ postmaster
postgres  9126  0.0  0.7 215052  7336 ?        Ss   Nov16   0:19          \_ postmaster
postgres  1574  0.0  5.7 223540 58300 ?        Ss   17:28   0:00          \_ postmaster
postgres  1973  0.0  3.3 221032 33960 ?        Ss   17:34   0:00          \_ postmaster
postgres  2320  0.1  3.5 218080 36120 ?        Ss   17:39   0:00          \_ postmaster
postgres  2321  0.1  2.9 218068 29928 ?        Ss   17:39   0:00          \_ postmaster
postgres  2336  0.0  1.4 215052 14340 ?        Ss   17:40   0:00          \_ postmaster
# exit

Wenn ich die App stoppen würde, würde ich erwarten, dass keine Lockdatei an diesem Ort vorhanden ist und keine Postgres-Prozesse laufen. (Ich müsste natürlich den ps-Befehl direkt auf dem Host ausführen, da der Container nicht mehr laufen würde.)

In Ihrer Situation denke ich, das wäre das Erste, was ich tun würde: die App stoppen und überprüfen, ob keine Postgres-Prozesse laufen. Es scheint möglich, dass zwei Instanzen laufen, die sich gegenseitig behindern.

Es ist unwahrscheinlich, aber auch möglich, dass die Festplatte voll ist und deshalb die Lockdatei leer ist. Oder vielleicht gibt es irgendwie ein Berechtigungsproblem.

Bearbeiten: Innerhalb des Containers befindet sich die Lockdatei an einem anderen Ort und hat eine andere Berechtigung:

# ./launcher enter app
x86_64 arch detected.
# ls -l /shared/postgres_data/postmaster.pid
-rw------- 1 postgres postgres 92 Nov 15 16:20 /shared/postgres_data/postmaster.pid
# exit
logout
# 

Wie Sam anmerkt, bräuchten wir mehr Informationen.

1 „Gefällt mir“