pentaho/pentaho-kettle · error · KettleException
ParGzipCsvInput.Exception.FilenameFieldNotFound
Error message
ParGzipCsvInput.Exception.FilenameFieldNotFound
What it means
Message key ParGzipCsvInput.Exception.FilenameFieldNotFound thrown in getFilenamesFromPreviousSteps: the configured filename field (after variable substitution) is not present in the incoming rows — indexOfValue returned a negative index — so the step cannot locate the files to read.
Solutions
- Set the filename field to an actual field name present in the incoming stream
- Add or rename the upstream field that carries the file path
- Check variable substitution on the field name for typos
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at engine/src/main/java/org/pentaho/di/trans/steps/parallelgzipcsv/ParGzipCsvInput.java:235 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/1deb214b2c135fb0.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/parallelgzipcsv/ParGzipCsvInput.java:235
}
}
private void getFilenamesFromPreviousSteps() throws KettleException {
List<String> filenames = new ArrayList<String>();
boolean firstRow = true;
int index = -1;
Object[] row = getRow();
while ( row != null ) {
if ( firstRow ) {
firstRow = false;
// Get the filename field index...
//
String filenameField = environmentSubstitute( meta.getFilenameField() );
index = getInputRowMeta().indexOfValue( filenameField );
if ( index < 0 ) {
throw new KettleException( BaseMessages.getString(
PKG, "ParGzipCsvInput.Exception.FilenameFieldNotFound", filenameField ) );
}
}
String filename = getInputRowMeta().getString( row, index );
filenames.add( filename ); // add it to the list...
row = getRow(); // Grab another row...
}
data.filenames = filenames.toArray( new String[filenames.size()] );
logBasic( BaseMessages.getString( PKG, "ParGzipCsvInput.Log.ReadingFromNrFiles", Integer
.toString( data.filenames.length ) ) );
}
public void dispose( StepMetaInterface smi, StepDataInterface sdi ) {
try {View on GitHub (pinned to f3058517a1)