خطأ فادح: ملف القفل "postmaster.pid" فارغ

هذه هي المرة الأولى التي أرى فيها الخطأ التالي عند محاولة إعادة البناء.

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.

من الواضح أنني أستطيع قراءة التلميح ولكن لست متأكدًا من كيفية المتابعة. هل يمكن لأي شخص تقديم رؤية؟

متى يحدث هذا؟ هل هذا تثبيت قياسي؟

التثبيت القياسي وبعد تنفيذ ./launcher rebuild app

ربما جرب

./launcher start app

هل نجح هذا من قبل؟
هل هو خطأ أم تحذير. هل حاولت فتحه في متصفحك؟
ماذا يقول

docker ps

الرد على ./launcher start app:

57c2a0746e93
لا يوجد شيء للقيام به، لقد بدأ حاويتك بالفعل!

ثم في المتصفح أحصل على 502 Bad Gateway.

إخراج docker ps

CONTAINER ID   IMAGE                 COMMAND        CREATED        STATUS          PORTS                                                                                                                 NAMES
57c2a0746e93   local_discourse/app   "/sbin/boot"   6 months ago   Up 16 minutes   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

هذا غريب. أعتقد أنني سأقوم بإعادة التشغيل وإعادة البناء مرة أخرى.

أو ربما

   ./launcher stop app; ./launcher rebuild app

أنت تقوم بتشغيل حاوية قديمة، وليس حاوية قمت ببنائها للتو (تم إنشاؤها قبل 6 أشهر).

وربما كانت هناك بعض الأخطاء الأخرى في إعادة البناء التي لم تلاحظها.

نفس النتيجة

2022-10-04 15:26:43.452 UTC [1699] FATAL:  lock file "postmaster.pid" is empty
2022-10-04 15:26:43.452 UTC [1699] HINT:  Either another server is starting, or the lock file is the remnant of a previous server startup crash.

لا توجد بيانات كافية هنا لتصحيح الأخطاء.

يحدث هذا لأن عملية البناء تعتقد أن PG قيد التشغيل بالفعل، لذا ربما يكون هناك خطأ ما في عملية ترقية PG. هل يمكنك تضمين سجلات كاملة للمشغل (مع إزالة كلمات المرور) حتى نتمكن من رؤية ما يحدث.

ربما يساعد إلقاء نظرة على نظام يعمل بشكل صحيح. أرى ملف القفل الخاص بي هنا:

# 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

و 15 نوفمبر هو التاريخ الذي بدأت فيه التطبيق آخر مرة. إذا دخلت إلى التطبيق، يمكنني رؤية عمليات postgres:

# cd /var/discourse/
# ./launcher enter app
تم اكتشاف بنية 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

إذا أوقفت التطبيق، أتوقع ألا أرى ملف قفل في هذا الموقع، ولا توجد عمليات postgres قيد التشغيل. (بالطبع، سأحتاج إلى تشغيل أمر ps مباشرة على المضيف، لأن الحاوية لن تكون قيد التشغيل بعد الآن.)

في وضعك، أعتقد أن هذا ما سأفعله أولاً: إيقاف التطبيق والتحقق من عدم تشغيل أي عمليات postgres. يبدو من الممكن أن يكون لديك نسختان تعملان وتتصادمان مع بعضهما البعض.

من غير المحتمل، ولكنه ممكن أيضًا أن يكون القرص قد امتلأ وهذا هو سبب كون ملف القفل فارغًا. أو ربما تكون هناك مشكلة في الأذونات بطريقة ما.

تعديل: داخل الحاوية، يوجد ملف القفل في موقع مختلف وله ملكية مختلفة:

# ./launcher enter app
تم اكتشاف بنية 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
# 

كما يلاحظ سام، سنحتاج إلى رؤية المزيد من المعلومات.

إعجاب واحد (1)