FATAL: el archivo de bloqueo "postmaster.pid" está vacío

La primera vez que veo el siguiente error al intentar reconstruir.

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.

Obviamente puedo leer la pista, pero no estoy seguro de cómo proceder. ¿Alguien puede ofrecer alguna información?

¿Cuándo está sucediendo esto? ¿Es una instalación estándar?

Instalación estándar y después de ejecutar ./launcher rebuild app

Quizás intenta con

 ./launcher start app

¿Funcionó esto antes?

¿Es un error o una advertencia? ¿Intentaste abrirlo en tu navegador?

¿Qué dice

 docker ps

Respuesta a ./launcher start app:

57c2a0746e93
¡No hay nada que hacer, tu contenedor ya ha comenzado!

Y luego en el navegador obtengo 502 Bad Gateway.

salida de docker ps

CONTAINER ID   IMAGE                 COMMAND        CREATED        STATUS          PORTS                                                                                                                 NAMES
57c2a0746e93   local_discourse/app   “/sbin/boot”   6 meses ago    Arriba 16 minutos   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

Eso es extraño. Creo que reiniciaré y reconstruiré de nuevo.

O tal vez

   ./launcher stop app; ./launcher rebuild app

Estás ejecutando un contenedor antiguo, no uno que acabas de construir (creado hace 6 meses).

Y tal vez hubo algunos otros errores en la reconstrucción que no notaste.

Mismo resultado

2022-10-04 15:26:43.452 UTC [1699] FATAL:  el archivo de bloqueo \"postmaster.pid\" está vacío
2022-10-04 15:26:43.452 UTC [1699] HINT:  O bien se está iniciando otro servidor, o el archivo de bloqueo es el remanente de un bloqueo anterior al inicio del servidor.

Aquí no hay suficientes datos para depurar.

Esto está sucediendo porque el proceso de compilación cree que PG ya se está ejecutando, así que tal vez algo sobre el proceso de actualización de PG esté fuera de lugar. ¿Puede incluir los registros completos del lanzador (eliminando las contraseñas) para que podamos ver qué está pasando?

Quizás ayude ver un sistema que funcione correctamente. Veo mi archivo de bloqueo aquí:

# 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

y el 15 de noviembre es la fecha en que inicié la aplicación por última vez. Si entro en la aplicación, puedo ver los procesos de postgres:

# cd /var/discourse/
# ./launcher enter app
Se detectó la arquitectura x86_64.
# 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

Si detuviera la aplicación, esperaría no ver ningún archivo de bloqueo en esa ubicación y ningún proceso de postgres en ejecución. (Por supuesto, necesitaría ejecutar el comando ps directamente en el host, porque el contenedor ya no estaría en ejecución).

En tu situación, creo que eso es lo primero que haría: detener la aplicación y comprobar que no se están ejecutando procesos de postgres. Parece posible que tengas dos instancias en ejecución que están colisionando entre sí.

Es poco probable, pero también es posible que el disco se haya llenado y por eso el archivo de bloqueo esté vacío. O tal vez haya algún problema de permisos.

Editar: dentro del contenedor, el archivo de bloqueo tiene una ubicación y propiedad diferentes:

# ./launcher enter app
Se detectó la arquitectura x86_64.
# ls -l /shared/postgres_data/postmaster.pid
-rw------- 1 postgres postgres 92 Nov 15 16:20 /shared/postgres_data/postmaster.pid
# exit
logout
# 

Como señala Sam, necesitaríamos ver más información.

1 me gusta