pentaho/pentaho-kettle · error · KettleException
GetJobStatusServlet.Error.LogStringIsTooLong
GetJobStatusServlet.Error.LogStringIsTooLong
Error message
GetJobStatusServlet.Error.LogStringIsTooLong
What it means
getLogText in GetJobStatusServlet converts the job's log channel buffer to a String; if that allocation causes an OutOfMemoryError, it is replaced by this KettleException. It signals the accumulated log text is too large to build in memory.
Solutions
- Increase JVM heap for the Carte server.
- Request fewer log lines (use tail-line parameters or a narrower startLineNr/lastLineNr range).
- Limit KettleLogStore buffer size (KETTLE_LOG_BUFFER_SIZE / setMaxNumberOfLines) so buffers stay bounded.
- Reduce log verbosity (log level) for the job channel.
Example fix
// before String log = servlet.getLogText(job, 0, kettleLogStore.getLastBufferLineNr()); // full buffer -> OOM // after String log = servlet.getLogText(job, 0, kettleLogStore.getLastBufferLineNr(), 500); // tail 500 lines
Defensive patterns
Strategy: validation
Validate before calling
long approxBytes = KettleLogStore.getAppender().getBuffer(job.getLogChannelId(), false).length(); boolean safe = approxBytes < 50_000_000; // well under heap headroom
Prevention
- Set KettleLogStore max number of lines (KETTLE_LOG_BUFFER_SIZE) to bound buffers.
- Use tail-line parameters instead of fetching the full log.
- Size Carte heap (e.g. -Xmx4g) relative to expected log volume.
- Lower job log level (Basic instead of Rowlevel) for long-running jobs.
When it happens
Trigger: GET /kettle/jobStatus/ (XML or HTML mode) on a job whose logging buffer grew so large that KettleLogStore.getAppender().getBuffer(...).toString() exhausts heap.
Common situations: Long-running jobs with verbose logging polled over Carte; small heap (-Xmx) on slave servers; startLineNr/lastLineNr spanning thousands of log lines; numberOfTailLines not used so the full buffer is stringified.
Understand the failure class
Background: payload too large / request exceeds maximum size: why libraries cap bytes and how to fix oversize payloads — this error's family across 50 libraries.
Related errors
- Log string is too long
- GetJobStatusServlet.Error.UnableToGetJobStatusInXML
- Central Log Store is not initialized!!!
- Conversion error after getting last logdate from
- Error executing Transformation: " + logging
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/49f29628456b72cd.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/www/GetJobStatusServlet.java:499
public String toString() {
return "Job Status Handler";
}
public String getService() {
return CONTEXT_PATH + " (" + toString() + ")";
}
public String getContextPath() {
return CONTEXT_PATH;
}
private String getLogText( Job job, int startLineNr, int lastLineNr, int numberOfTailLines ) throws KettleException {
try {
return KettleLogStore.getAppender().getBuffer(
job.getLogChannel().getLogChannelId(), false, startLineNr, lastLineNr, numberOfTailLines ).toString();
} catch ( OutOfMemoryError error ) {
throw new KettleException( BaseMessages.getString( PKG, "GetJobStatusServlet.Error.LogStringIsTooLong" ) );
}
}
}
View on GitHub (pinned to f3058517a1)