PostgreSQL:后台工作程序“逻辑复制启动器”以退出代码1退出

时间:2019-11-20 11:08:28

标签: postgresql docker gitlab gitlab-ci-runner

使用我们自己的Gitlab实例,尝试在跑步者中使用postgres服务时会收到错误<?php $count = 100000; $uniqueArray = range(0,$count-1); shuffle($uniqueArray); array_walk($uniqueArray,function(&$v,$k){$v = "AB".sprintf("%06d",$v);}); 。尚未在互联网上找到任何有用的信息。知道发生了什么吗?

版本:

  • Gitlab 12.4.3
  • gitlab-runner 12.5.0(最多4个并发作业)
  • postgres 12.1(尝试使用11且结果相同)
  • DigitalOcean小滴:CPU优化/ 8 GB / 4个vCPU

background worker "logical replication launcher" exited with exit code 1中的相关部分:

gitlab-ci.yml

故障日志:

image: golang:1.12

services:
  - postgres

variables:
  POSTGRES_USER: postgres
  POSTGRES_DB: xproject_test
  POSTGRES_PASSWORD: postgres

4 个答案:

答案 0 :(得分:3)

该错误只是PostgreSQL收到的“快速关闭请求”的无害结果。

答案 1 :(得分:2)

首先,如您从日志中看到的那样,您的数据库容器已准备好接受连接

2019-11-20T10:16:25.248887712Z 2019-11-20 10:16:25.248 UTC [1] LOG:  database system is ready to accept connections

这是Postgres官方图片的预期行为。如果您查看Postgres的entrypoint,它将执行两项任务。

  • 它将运行任何*.sql文件,运行任何可执行文件*.sh,并提供在该目录中找到的所有不可执行的*.sh脚本,以进行进一步的初始化,然后从此启动服务。目录/docker-entrypoint-initdb.d
  • 初始化完成后,它将停止该过程,并再次运行它作为容器的主要过程。
  

您知道我为什么收到该关机请求吗?

# stop postgresql server after done setting up user and running scripts
docker_temp_server_stop() {
    PGUSER="${PGUSER:-postgres}" \
    pg_ctl -D "$PGDATA" -m fast -w stop
}

然后完成

.
.

            echo 'PostgreSQL init process complete; ready for start up.'

.
.
exec "$@"

答案 2 :(得分:0)

这不是错误,而是日志。当数据库关闭时,这是正常的。值得怀疑的是,为什么值得记录(当然,当数据库关闭时启动器也将关闭),并且在将来的某些版本中它可能会被静音。但这并不表示任何问题。

如果您还有其他问题,请在另一个问题中提出。

答案 3 :(得分:0)

最终重新启动了安装了gitlab的计算机,从而解决了该问题。不知道为什么服务会给出超时并打印误导性日志。

与docker进行更好的健康检查的相关问题:https://gitlab.com/gitlab-org/gitlab-runner/issues/3984