Почему команды psql в моем скрипте внезапно убиваются Дженкинсом / Хадсоном? - PullRequest
0 голосов
/ 11 апреля 2019

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

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

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

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

Также попытался отключить Process Tree Killer 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...