Назад | Перейти на главную страницу

Почему команды psql в моем скрипте внезапно прерываются jenkins / hudson?

У меня есть существующая работа jenkins, которая запускает сценарий оболочки для копирования моей среды prod в qa.

Мы добавили много данных в prod (дамп gzip увеличился с 2 гигабайт до 15 гигабайт), и внезапно мои работы jenkins перестали работать.

Мы запускаем postgres 9.5 в aws и jenkins 2.171. все задания jenkins выполняются на главном сервере, который является одним и тем же сервером с 6 исполнителями. Нет проблем с памятью / процессором / дисковым пространством

Пробовал несколько вещей: statement_timeout в экземпляре postgres уже есть 0. Переход с bash на sh по какой-то причине помог в некоторых скриптах, но не в других. В частности, у этого все еще есть различные убитые операторы psql. сценарий отлично работает при запуске из интерактивной оболочки.

Также попытался отключить Убийцу дерева процессов https://wiki.jenkins.io/display/JENKINS/ProcessTreeKiller. нет идти.

Вот код двух наиболее безобидных команд, которые должны выполняться довольно быстро. $POSTGRES_HOST_OPTS имеет только имя и порт БД:

echo -e "Running POSTGIS command"
psql $POSTGRES_HOST_OPTS -U $POSTGRES_ENV_POSTGRES_USER_PROD -d postgres -c "CREATE EXTENSION postgis;"

echo -e "Creating temporary user dv3_qa_tmp so we can rename the $POSTGRES_ENV_POSTGRES_USER_PROD user\n"
psql $POSTGRES_HOST_OPTS -U $POSTGRES_ENV_POSTGRES_USER_PROD -d postgres -c "create role dv3_qa_tmp password '$PGPASSWORD_QA' createdb createrole inherit login;"

Вот результат консоли jenkins:

Waiting for new instance to be available...
-e Renaming database dv3_prod to dv3_qa 

Killed
-e Running POSTGIS command
Killed
-e Creating temporary user dv3_qa_tmp so we can rename the dv3_prod_user user

Killed
-e Renaming user dv3_prod_user to dv3_qa_user 

Killed
Killed
-e 
All done

В jenkins.log есть кое-что о дескрипторах файлов, но я не уверен, как это связано. Я также пробовал перенаправить stderr, который избавляется от этого сообщения, но не останавливает уничтожение команд.

Apr 10, 2019 4:23:31 PM hudson.Proc$LocalProc join
WARNING: Process leaked file descriptors. See https://jenkins.io/redirect/troubleshooting/process-leaked-file-descriptors for more information
java.lang.Exception
        at hudson.Proc$LocalProc.join(Proc.java:334)
        at hudson.tasks.CommandInterpreter.join(CommandInterpreter.java:155)
        at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:109)
        at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:66)
        at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
        at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:741)
        at hudson.model.Build$BuildExecution.build(Build.java:206)
        at hudson.model.Build$BuildExecution.doRun(Build.java:163)
        at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
        at hudson.model.Run.execute(Run.java:1818)
        at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
        at hudson.model.ResourceController.execute(ResourceController.java:97)
        at hudson.model.Executor.run(Executor.java:429)