pentaho/pentaho-kettle · error · KettleException
AutoDoc.Exception.FilenameFieldNotFound
Error message
AutoDoc.Exception.FilenameFieldNotFound
What it means
AutoDoc.processRow throws KettleException 'AutoDoc.Exception.FilenameFieldNotFound' when the row's input row metadata does not contain the configured filename field. indexOfValue returns -1 and the step aborts. It is a configuration/row-shape mismatch: the field selected in the step settings is absent from the incoming stream.
Solutions
- Open the AutoDoc step settings and reselect the correct filename field from the available fields list.
- Confirm the upstream step actually outputs the filename field (check with a 'Get fields' preview).
- Fix the upstream field name or add a Select values step to (re)create it.
- Preview the input rows to confirm the exact field name and casing.
Example fix
// before (step config referencing removed field)
meta.setFilenameField("old_filename");
// after
meta.setFilenameField("filename"); // matches the field produced upstream Defensive patterns
Strategy: validation
Validate before calling
public static void requireField(RowMetaInterface rowMeta, String fieldName) {
try {
rowMeta.indexOfValue(fieldName);
} catch (KettleValueException e) {
throw new IllegalStateException("Field not in input stream: " + fieldName);
}
}
// call: requireField(inputRowMeta, "filename"); Prevention
- Preview rows before the AutoDoc step to confirm field names.
- After renaming fields upstream, update dependent step configs.
- Use 'Get fields' in the step dialog instead of typing field names manually.
When it happens
Trigger: The 'filename field' configured on the AutoDoc step does not match any field in the incoming row (renamed upstream, wrong step input, or field produced by a later step).
Common situations: Renaming or removing the filename field in an upstream Select values / Java Script step; connecting the wrong input hop; pass-through rows where the metadata differs from expectations.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- AutoDoc.Exception.FileTypeFieldNotFound
- AutoDoc.Exception.UnableToDetermineLocation
- DynamicSQLRow.Exception.FieldNotFound
- GetTableNames.Exception.CouldnotFindField
- HTTP.Exception.CouldnotFindField
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/6ba4fe1d717f7f96.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/autodoc/AutoDoc.java:143
}
setOutputDone();
return false;
}
if ( first ) {
first = false;
data.outputRowMeta = getInputRowMeta().clone();
meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,
metaStore );
// Get the filename field index...
//
String filenameField = environmentSubstitute( meta.getFilenameField() );
data.fileNameFieldIndex = getInputRowMeta().indexOfValue( filenameField );
if ( data.fileNameFieldIndex < 0 ) {
throw new KettleException( BaseMessages.getString(
PKG, "AutoDoc.Exception.FilenameFieldNotFound", filenameField ) );
}
// Get the file type field index...
//
String fileTypeField = environmentSubstitute( meta.getFileTypeField() );
data.fileTypeFieldIndex = getInputRowMeta().indexOfValue( fileTypeField );
if ( data.fileTypeFieldIndex < 0 ) {
throw new KettleException( BaseMessages.getString(
PKG, "AutoDoc.Exception.FileTypeFieldNotFound", fileTypeField ) );
}
data.repository = getTrans().getRepository();
if ( data.repository != null ) {
data.tree = data.repository.loadRepositoryDirectoryTree();
}
// Initialize the repository information handlers (images, metadata, loading, etc)View on GitHub (pinned to f3058517a1)