pentaho/pentaho-kettle · error · KettleException

CheckSum.Log.CanNotFindField

CheckSum.Log.CanNotFindField

Error message

CheckSum.Log.CanNotFindField

What it means

The CheckSum step cannot find one of the configured field names in the incoming row stream. In processRow it resolves each meta.getFieldName() entry via getInputRowMeta().indexOfValue(); a negative index triggers a logged error and this KettleException, aborting the step. This is a field-mapping/config error, not a runtime data problem.

Solutions

  1. Open the CheckSum step dialog and re-select the fields from the current upstream row structure.
  2. Check field names are spelled and cased exactly as produced by the previous step.
  3. Add a 'Fields' preview (right-click → Show output fields) on the hop to confirm available fields.
  4. Use a 'Select values' step upstream to explicitly add/rename the field the checksum needs.

Example fix

// before: dialog config
fieldName = [ "AMOUNT" ]   // upstream produces "amount"
// after
fieldName = [ "amount" ]   // match exact upstream field name
Defensive patterns

Strategy: validation

Validate before calling

// Kettle: verify configured fields exist in the incoming row layout before running
for ( String f : meta.getFieldName() ) {
  if ( prev.indexOfValue( f ) < 0 ) {
    throw new KettleException( "Field not in stream: " + f );
  }
}

Try / catch

try {
  trans.execute( null );
} catch ( KettleException e ) {
  if ( e.getMessage().contains( "CanNotFindField" ) ) {
    log.error( "CheckSum field mapping broken: {}", e.getMessage() );
  } else { throw e; }
}

Prevention

When it happens

Trigger: In processRow: fieldIndexMapping[i] = getInputRowMeta().indexOfValue(meta.getFieldName()[i]) returns < 0 for any configured field — the field does not exist in the row arriving at the step.

Common situations: Upstream step renamed or removed the field; case mismatch between the configured name and the actual field name; transformation edited so the field is no longer produced; running a transformation with stale metadata after changing an upstream step.

Understand the failure class

Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.

Related errors


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

Appendix: source

Thrown at plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/checksum/CheckSum.java:92

      data.outputRowMeta = inputRowMeta.clone();
      data.nrInfields = data.outputRowMeta.size();
      meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,
        metaStore );

      if ( meta.getFieldSeparatorString() != null && !meta.getFieldSeparatorString().isEmpty() ) {
        data.fieldSeparatorStringBytes = meta.getFieldSeparatorString().getBytes( StandardCharsets.UTF_8 );
      }

      int[] fieldIndexMapping;

      if ( meta.getFieldName() == null || meta.getFieldName().length > 0 ) {
        fieldIndexMapping = new int[meta.getFieldName().length];

        for ( int i = 0; i < meta.getFieldName().length; i++ ) {
          fieldIndexMapping[i] = getInputRowMeta().indexOfValue( meta.getFieldName()[i] );
          if ( fieldIndexMapping[i] < 0 ) {
            logError( BaseMessages.getString( PKG, "CheckSum.Log.CanNotFindField", meta.getFieldName()[i] ) );
            throw new KettleException( BaseMessages.getString( PKG, "CheckSum.Log.CanNotFindField", meta
                .getFieldName()[i] ) );
          }
        }
      } else {
        fieldIndexMapping = new int[inputRowMeta.size()];
        for ( int i = 0; i < fieldIndexMapping.length; i++ ) {
          fieldIndexMapping[i] = i;
        }
      }

      // Initialize the field converters
      initializeFieldConverters( inputRowMeta, fieldIndexMapping );

      // Initialize the checksum calculator
      initializeChecksumCalculator();

    } // end if first

View on GitHub (pinned to f3058517a1)