pentaho/pentaho-kettle · error · KettleStepException

XBaseInputMeta.Exception.NoFilesFoundToProcess

Error message

XBaseInputMeta.Exception.NoFilesFoundToProcess

What it means

Thrown by XBaseInputMeta.getFields() when the resolved file list (getTextFileList, honoring filename wildcards and 'accepting files from a previous step') contains zero files. The step cannot build any output fields without at least one DBF file, so it fails fast with this localized KettleStepException.

Solutions

  1. Check the File/dirname and wildcard settings in the XBase Input dialog point to a directory containing .dbf files.
  2. If 'Accept filenames from previous step' is enabled, verify the previous step name and accept field are correctly set and the upstream step emits rows.
  3. Test the wildcard on the runtime environment (case sensitivity, path separators) — Linux is case-sensitive.
  4. Use variables/parameters correctly resolved in the execution environment (check parameter values in the execution log).
  5. Preview the step in Spoon; it will show the same 'no files found' condition at design time.

Example fix

// before: wildcard that matches nothing on a case-sensitive FS
wildcard = "*.DBF"; directory = "/data/incoming"

// after: lowercase wildcard or normalize
wildcard = "*.dbf"; // or list files case-insensitively before the step
Defensive patterns

Strategy: validation

Validate before calling

FileInputList fileList = meta.getTextFileList( bowl, space );
if ( fileList.nrOfFiles() == 0 ) {
  throw new KettleStepException( "No XBase files match the configured directory/wildcard: "
    + space.environmentSubstitute( directory ) + "/" + wildcard );
}

Prevention

When it happens

Trigger: getFields() computes FileInputList via getTextFileList(); if fileList.nrOfFiles() == 0 — no file configured, wildcard matched nothing, or accepted filenames field is empty — the exception is thrown immediately.

Common situations: Wildcard pattern (e.g. *.dbf) that matches no files in the directory, wrong directory path, using 'accept filenames from previous step' where the upstream step produced no rows or the accept field/step was not configured, environment differences between dev and prod paths.

Understand the failure class

Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/9e046c4c959f4f2e. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/xbaseinput/XBaseInputMeta.java:347

      rowMeta.addValueMeta( rnr );
    }

    if ( includeFilename ) {
      ValueMetaInterface v = new ValueMetaString( filenameField );
      v.setLength( 100, -1 );
      v.setOrigin( name );
      rowMeta.addValueMeta( v );
    }
    return rowMeta;
  }

  @Override
  public void getFields( Bowl bowl, RowMetaInterface row, String name, RowMetaInterface[] info, StepMeta nextStep,
    VariableSpace space, Repository repository, IMetaStore metaStore ) throws KettleStepException {

    FileInputList fileList = getTextFileList( bowl, space );
    if ( fileList.nrOfFiles() == 0 ) {
      throw new KettleStepException( BaseMessages
        .getString( PKG, "XBaseInputMeta.Exception.NoFilesFoundToProcess" ) );
    }

    row.addRowMeta( getOutputFields( fileList, name ) );
  }

  @Override
  public String getXML() {
    StringBuilder retval = new StringBuilder();

    retval.append( "    " + XMLHandler.addTagValue( "file_dbf", dbfFileName ) );
    retval.append( "    " + XMLHandler.addTagValue( "limit", rowLimit ) );
    retval.append( "    " + XMLHandler.addTagValue( "add_rownr", rowNrAdded ) );
    retval.append( "    " + XMLHandler.addTagValue( "field_rownr", rowNrField ) );

    retval.append( "    " + XMLHandler.addTagValue( "include", includeFilename ) );
    retval.append( "    " + XMLHandler.addTagValue( "include_field", filenameField ) );
    retval.append( "    " + XMLHandler.addTagValue( "charset_name", charactersetName ) );

View on GitHub (pinned to f3058517a1)