- Вопрос или проблема
- Текущая настройка:
- Поиск решения на текущий момент:
- Дополнительные вопросы:
- Ответ или решение
- Постоянное возникновение MalformedInputException после обновления Java в Jenkins – установка на Windows
- Описание проблемы
- Текущая настройка
- Попытки устранения неполадок
- Возможные причины и рекомендации
- 1. Кодировка и форматы файлов
- 2. Версии плагинов
- 3. Совместимость Java 21 и Jenkins
- 4. Конфигурация Jenkins
- Заключение
Вопрос или проблема
Я столкнулся с ошибкой MalformedInputException: Input length = 4
после обновления как моего мастера Jenkins, так и агентских узлов до Java 21 на Windows. Это происходит только в производственной среде; наша тестовая среда, которая выполняет идентичный конвейер, работает нормально с Java 21.
Текущая настройка:
- ОС: Windows на обоих узлах – мастере и агенте.
- Версия Java: Недавно обновлена до Java 21.
- Ошибка:
MalformedInputException: Input length = 4
, срабатывающая на определенной стадии сборки. - Версия агента: Использует последнюю
agent.jar
.
Поиск решения на текущий момент:
- Убедился, что
agent.jar
на обоих узлах использует Java 21. - Использовал решение Snyk для установки кодировки, но безуспешно.
- Добавил
-Dfile.encoding=UTF-8
в параметры окружения на мастере и агентах. - Перезапустил службы.
Дополнительные вопросы:
- Есть ли известные проблемы совместимости с Java 21 и Jenkins на Windows?
- Могут ли быть специфические настройки кодировки в
agent.jar
или Jenkins, которые необходимо настроить после обновления?
Буду очень признателен за любой совет! Заранее спасибо за вашу помощь.
[re20-server-tag-release] $ cmd.exe /C " "C:\Program Files (x86)\Microsoft Visual Studio\VB98\vb6.exe" /make /outdir C:\jenkins-agent\workspace\re20-server-tag-release /d UsarQueSocket=1:ConUpTime=1:AntiExternos=0:Lac=1:DEBUGGING=0:PYMMO=1:UNLOCK_CPU=1 /out C:\jenkins-agent\workspace\re20-server-tag-release\vb6build12712032603954651177.log C:\jenkins-agent\workspace\re20-server-tag-release\Server.VBP " && exit %%ERRORLEVEL%%
FATAL: Input length = 4
Also: hudson.remoting.Channel$CallSiteStackTrace: Remote call to ao20-produccion
at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1923)
at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:384)
at hudson.remoting.Channel.call(Channel.java:1112)
at hudson.FilePath.act(FilePath.java:1228)
at hudson.FilePath.act(FilePath.java:1217)
at hudson.FilePath.readToString(FilePath.java:2482)
at PluginClassLoader for visual-basic-6//org.jenkinsci.plugins.vb6.VB6Builder.perform(VB6Builder.java:119)
at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123)
at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:80)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:818)
at hudson.model.Build$BuildExecution.build(Build.java:199)
at hudson.model.Build$BuildExecution.doRun(Build.java:164)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:527)
at hudson.model.Run.execute(Run.java:1831)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:44)
at hudson.model.ResourceController.execute(ResourceController.java:101)
at hudson.model.Executor.run(Executor.java:445)
java.nio.charset.MalformedInputException: Input length = 4
at java.base/java.lang.String.throwMalformed(String.java:1279)
at java.base/java.lang.String.decodeUTF8_UTF16(String.java:1205)
at java.base/java.lang.String.newStringUTF8NoRepl(String.java:759)
at java.base/java.lang.String.newStringNoRepl1(String.java:790)
at java.base/java.lang.String.newStringNoRepl(String.java:772)
at java.base/java.lang.System$2.newStringNoRepl(System.java:2480)
at java.base/java.nio.file.Files.readString(Files.java:3349)
at Jenkins v2.479.1//hudson.FilePath$ReadToString.invoke(FilePath.java:2490)
at Jenkins v2.479.1//hudson.FilePath$ReadToString.invoke(FilePath.java:2485)
at Jenkins v2.479.1//hudson.FilePath$FileCallableWrapper.call(FilePath.java:3614)
at hudson.remoting.UserRequest.perform(UserRequest.java:225)
at hudson.remoting.UserRequest.perform(UserRequest.java:50)
at hudson.remoting.Request$2.run(Request.java:391)
at hudson.remoting.InterceptingExecutorService.lambda$wrap$0(InterceptingExecutorService.java:81)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:140)
at java.base/java.lang.Thread.run(Thread.java:1583)
Отправка уведомления в Discord.
Завершено: ОШИБКА
Ответ или решение
Постоянное возникновение MalformedInputException после обновления Java в Jenkins – установка на Windows
Описание проблемы
Вы столкнулись с ошибкой MalformedInputException: Input length = 4
после обновления как вашего мастера Jenkins, так и агентов до Java 21 на платформе Windows. Обратите внимание, что эта проблема возникает исключительно в производственной среде, в то время как ваше тестовое окружение с идентичным пайплайном работает корректно.
Текущая настройка
- ОС: Windows на всех узлах (мастер и агенты).
- Версия Java: Обновлена до Java 21.
- Ошибка:
MalformedInputException: Input length = 4
, срабатывает во время определенного этапа сборки. - Версия агента: Используется последняя версия
agent.jar
.
Попытки устранения неполадок
Ваша работа по устранению неполадок включает в себя следующие шаги:
- Убедились, что
agent.jar
на обеих сторонах использует Java 21. - Следовали решению от Snyk для установки кодировки, однако эффекта не наблюдалось.
- Добавили параметр
-Dfile.encoding=UTF-8
в переменные окружения на мастере и агентах. - Перезапустили сервисы.
Возможные причины и рекомендации
1. Кодировка и форматы файлов
Ошибка MalformedInputException
обычно возникает из-за некорректной кодировки в файлах. Хотя вы указали, что установили UTF-8
, возможно, есть файлы, не соответствующие этой кодировке. Рекомендуется проверить файлы, которые обрабатываются в данной стадии сборки, на предмет наличия неправильной кодировки (например, попытка прочитать файл, закодированный в ISO-8859-1
как UTF-8
). Проверьте:
- Форматы всех текстовых файлов, с которыми работает Jenkins.
- Наличие скрытых символов или строк, которые не соответствуют ожидаемой кодировке.
2. Версии плагинов
Иногда обновления самой Java могут нарушить совместимость с определенными плагинами Jenkins. Проверьте версии используемых вами плагинов, особенно тех, что будут затронуты в процессе сборки (например, VB6Builder
). Убедитесь, что они соответствуют Java 21 и обновите их, если необходимо.
3. Совместимость Java 21 и Jenkins
Насколько известно на данный момент, не было официальных сообщений о проблемах совместимости между Java 21 и Jenkins на Windows, однако возможно, что некоторые специфические аспекты могут влиять на вашу установку. Рекомендуется:
- Ознакомиться с документацией Jenkins, чтобы выявить известные проблемы.
- Провести тестирование в чистом окружении, используя минимальный набор плагинов для выявления возможных конфликтов.
4. Конфигурация Jenkins
Определённые настройки конфигурации Jenkins могли сбиться после обновления. Проверьте:
- Параметры глобальной конфигурации Jenkins на наличие изменений, особенно касающихся кодировок.
- Настройки конкретного проекта или.pipeline, в котором возникает данная ошибка, на наличие каких-либо специфических конфигураций, которые могут внести ошибку.
Заключение
Возникновение MalformedInputException
в Jenkins после обновления Java может быть вызвано различными причинами, начиная от кодировок файлов до несовместимости плагинов. Рекомендуется поэтапно проверять каждый из перечисленных выше аспектов, чтобы выяснить источник проблемы. Если ни одно из предложенных решений не решает проблему, рассмотрите возможность возврата на предыдущую версию Java, пока не будет найдена более ясная причина ошибки.
Надеюсь, данные рекомендации будут для вас полезными. Удачи в разрешении проблемы!