-
Bug
-
Resolution: Unresolved
-
Minor
-
None
-
timestamper 1.30
There was a line in our console output with timestamp only (and no whitespace after)
[2025-07-23T16:46:19.778Z]
This caused StringIndexOutOfBoundsException
10:22:52 Also: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: 0f98af8e-a673-4ce3-a230-58c082ac2516 10:22:52 java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 26 10:22:52 at java.base/jdk.internal.util.Preconditions$1.apply(Unknown Source) 10:22:52 at java.base/jdk.internal.util.Preconditions$1.apply(Unknown Source) 10:22:52 at java.base/jdk.internal.util.Preconditions$4.apply(Unknown Source) 10:22:52 at java.base/jdk.internal.util.Preconditions$4.apply(Unknown Source) 10:22:52 at java.base/jdk.internal.util.Preconditions.outOfBounds(Unknown Source) 10:22:52 at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckFromToIndex(Unknown Source) 10:22:52 at java.base/jdk.internal.util.Preconditions.checkFromToIndex(Unknown Source) 10:22:52 at java.base/java.lang.String.checkBoundsBeginEnd(Unknown Source) 10:22:52 at java.base/java.lang.String.substring(Unknown Source) 10:22:52 at java.base/java.lang.String.substring(Unknown Source) 10:22:52 at PluginClassLoader for timestamper//hudson.plugins.timestamper.accessor.TimestampLogFileLineAccessor.readLine(TimestampLogFileLineAccessor.java:108) 10:22:52 at PluginClassLoader for timestamper//hudson.plugins.timestamper.action.TimestampsActionOutput$1.readNextLine(TimestampsActionOutput.java:156) 10:22:52 at PluginClassLoader for timestamper//hudson.plugins.timestamper.action.TimestampsActionOutput$1.read(TimestampsActionOutput.java:119) 10:22:52 at java.base/java.io.BufferedReader.fill(Unknown Source) 10:22:52 at java.base/java.io.BufferedReader.implReadLine(Unknown Source) 10:22:52 at java.base/java.io.BufferedReader.readLine(Unknown Source) 10:22:52 at java.base/java.io.BufferedReader.readLine(Unknown Source) 10:22:52 at PluginClassLoader for log-parser//hudson.plugins.logparser.LogParserParser.parseLogBody(LogParserParser.java:366) 10:22:52 at PluginClassLoader for log-parser//hudson.plugins.logparser.LogParserParser.parseLog(LogParserParser.java:161) 10:22:52 at PluginClassLoader for log-parser//hudson.plugins.logparser.LogParserPublisher.perform(LogParserPublisher.java:120) 10:22:52 at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123) 10:22:52 at PluginClassLoader for workflow-basic-steps//org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:101) 10:22:52 at PluginClassLoader for workflow-basic-steps//org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:71) 10:22:52 at PluginClassLoader for workflow-step-api//org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:49) 10:22:52 at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 10:22:52 at java.base/java.util.concurrent.FutureTask.run(Unknown Source) 10:22:52 at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 10:22:52 at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 10:22:52 at java.base/java.lang.Thread.run(Unknown Source)
Code expected string of length 27 or more
https://github.com/jenkinsci/timestamper-plugin/blob/master/src/main/java/hudson/plugins/timestamper/accessor/TimestampLogFileLineAccessor.java#L108
103: timestamp = GlobalAnnotator.parseTimestamp(logFileLine, build.getStartTimeInMillis()) 104: .orElse(null); 105: if (timestamp != null) { 106: // If we succeeded, then the log file was decorated by GlobalDecorator. Strip the 107: // timestamp decoration from the front of the line. 108: logFileLine = logFileLine.substring(27);