pentaho/pentaho-kettle · error · KettleFileException
Exception reading line of data
Error message
Exception reading line of data
What it means
Wrapper error in ParGzipCsvInput.readOneRow: parsing one line of the gzip CSV block failed — corrupt data, unexpected end of block, or conversion issues while assembling outputRowData (filename injection, row number). The original exception is chained as the cause.
Solutions
- Check the input file for corrupted rows or encoding mismatches
- Verify the field definitions (delimiters, formats) match the actual data
- Inspect the chained cause for the precise parse or conversion failure
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at engine/src/main/java/org/pentaho/di/trans/steps/parallelgzipcsv/ParGzipCsvInput.java:676 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/d7b77e4f016a3188.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/parallelgzipcsv/ParGzipCsvInput.java:676
// Optionally add the current filename to the mix as well...
//
if ( meta.isIncludingFilename() && !Utils.isEmpty( meta.getFilenameField() ) ) {
if ( meta.isLazyConversionActive() ) {
outputRowData[data.filenameFieldIndex] = data.binaryFilename;
} else {
outputRowData[data.filenameFieldIndex] = data.filenames[data.filenr - 1];
}
}
if ( data.isAddingRowNumber ) {
outputRowData[data.rownumFieldIndex] = new Long( data.rowNumber++ );
}
incrementLinesInput();
return outputRowData;
} catch ( Exception e ) {
throw new KettleFileException( "Exception reading line of data", e );
}
}
public boolean init( StepMetaInterface smi, StepDataInterface sdi ) {
meta = (ParGzipCsvInputMeta) smi;
data = (ParGzipCsvInputData) sdi;
if ( super.init( smi, sdi ) ) {
data.bufferSize = Integer.parseInt( environmentSubstitute( meta.getBufferSize() ) );
data.byteBuffer = new byte[] {}; // empty
// If the step doesn't have any previous steps, we just get the filename.
// Otherwise, we'll grab the list of filenames later...
//
if ( getTransMeta().findNrPrevSteps( getStepMeta() ) == 0 ) {
String filename = environmentSubstitute( meta.getFilename() );View on GitHub (pinned to f3058517a1)