Чтение url-адреса consoletext из запущенной сборки возвращает только первые 10000 строк

У меня есть отличный код, который читает из текущего consoleText и выполняет некоторые задания. Когда я запускаю код из IDE, он работает отлично, но когда я запускаю его как часть шага в Jenkins, он читает только 10000 строк из общего числа, что составляет примерно 2,8 миллиона строк. Код для чтения из консоли:

url.withReader { bufferedReader ->
            while ((line = bufferedReader.readLine()) != null) {
                          //do something
            }
}

URL-адрес

${BUILD_URL}/consoleText

Может это проблема с памятью или какое-то ограничение Дженкинса? Вы упомянули, что это этап сборки - сборка завершена? А может зависает ожидание на консоли?

Opal 26.10.2018 09:29

у вас есть ошибка или он просто перестает читать ровно после 10К строк? не могли бы вы удалить весь код из цикла while, кроме подсчета строк, чтобы убедиться, что проблема не в коде?

daggett 26.10.2018 10:46

Сборка ${BUILD_URL} уже завершена к тому моменту, когда вы читаете вывод консоли?

Alex O 26.10.2018 11:07

Чтобы прояснить ситуацию, код работал две недели назад, но с прошлого понедельника он перестал работать после 10000 строк. $ {BUILD_URL} - это URL-адрес текущей сборки. Ошибок нет, цикл while завершается ровно через 10000 строк

Saptak Niyogi 26.10.2018 11:31

когда сборка Jenkins выполняется, ответ для URL-адреса ... / consoleText превышает 10000 строк.

Rcordoval 28.10.2018 07:44
0
5
48
1

Ответы 1

URL-адрес .../consoleText не будет «расти» автоматически - он просто предоставляет «снимок» данных консоли, доступных во время запроса.

Итак, если вы ПОЛУЧИТЕ этот URL для сборки пока эта сборка все еще работает, вы увидите только часть журнала консоли. Количество, которое вы видите, будет зависеть от времени, когда вы запускаете GET - и, возможно, это также будет зависеть от состояния некоторых буферов.

Если раньше это работало лучше, то, вероятно, вы переместили момент времени, когда пытались прочитать консоль.

Код считывает текст консоли только после определенного этапа в качестве условия публикации. Таким образом, до этого этапа в тексте консоли должен быть полный журнал.

Saptak Niyogi 29.10.2018 04:07

Я полагаю, что это зависит от буферизации и внутренней обработки Jenkins API URL-адреса журнала консоли ... Не могли бы вы попытаться запустить новое, второе задание ("B") из вашего задания "A" и прочитать "A" консоль от чего?

Alex O 29.10.2018 07:47

Другие вопросы по теме