Description
Problem
When a build fails, an error is thrown:
2014-10-09 15:04:59,329 INFO [11-BAM::Camel Integration Agent::Agent:pool-26-thread-1] [DefaultErrorHandler] Recording an error: Error occurred while running Task 'Maven 3 test(3)' of type com.atlassian.bamboo.plugins.maven:task.builder.mvn3. : INT-9999-JOB1 com.atlassian.bamboo.task.TaskException: Failed to execute task at com.atlassian.bamboo.plugins.maven.task.Maven3BuildTask.execute(Maven3BuildTask.java:112) at com.atlassian.bamboo.task.TaskExecutorImpl.executeTasks(TaskExecutorImpl.java:220) at com.atlassian.bamboo.task.TaskExecutorImpl.execute(TaskExecutorImpl.java:98) at com.atlassian.bamboo.build.pipeline.tasks.ExecuteBuildTask.call(ExecuteBuildTask.java:75) at com.atlassian.bamboo.v2.build.agent.DefaultBuildAgent.build(DefaultBuildAgent.java:188) at com.atlassian.bamboo.v2.build.agent.BuildAgentControllerImpl.waitAndPerformBuild(BuildAgentControllerImpl.java:112) at com.atlassian.bamboo.v2.build.agent.DefaultBuildAgent$1.run(DefaultBuildAgent.java:110) at com.atlassian.bamboo.utils.BambooRunnables$1.run(BambooRunnables.java:49) at com.atlassian.bamboo.security.ImpersonationHelper.runWith(ImpersonationHelper.java:31) at com.atlassian.bamboo.security.ImpersonationHelper.runWithSystemAuthority(ImpersonationHelper.java:20) at com.atlassian.bamboo.security.ImpersonationHelper$1.run(ImpersonationHelper.java:52) at java.lang.Thread.run(Thread.java:662) Caused by: java.util.UnknownFormatConversionException: Conversion = '\' at java.util.Formatter.checkText(Formatter.java:2503) at java.util.Formatter.parse(Formatter.java:2467) at java.util.Formatter.format(Formatter.java:2414) at java.util.Formatter.format(Formatter.java:2367) at java.lang.String.format(String.java:2769) at com.atlassian.bamboo.task.TaskResultBuilder.checkReturnCode(TaskResultBuilder.java:155) at com.atlassian.bamboo.task.TaskResultBuilder.checkReturnCode(TaskResultBuilder.java:137) at com.atlassian.bamboo.plugins.maven.task.Maven3BuildTask.execute(Maven3BuildTask.java:86) ... 11 more
The character reported in java.util.UnknownFormatConversionException: Conversion = '\' can be different. In this example it's a backslash, but it can be another character.
Cause
components/bamboo-api/src/main/java/com/atlassian/bamboo/task/TaskResultBuilder.java
String logString = String.format("Failing task since return code of [" + externalProcess.getCommandLine() + "] was %d while expected %d", exitCode, expectedReturnCode);
If the commandline contains a % (percentage sign), it is interpreted as the start of a format specifier by String.format().
E.g. commandline = "dir %downloaddir%\foo"
The first % is erroneously interpreted as a %d, but harmless.
The second % is interpreted as {{%\ }}, which is not a valid format specifier.
Workaround
Avoid % (percentage sign) in your commandline and parameters.