pentaho/pentaho-kettle · error · KettleException

AddSequenceMeta.Exception.UnableToReadStepInfo

Error message

AddSequenceMeta.Exception.UnableToReadStepInfo

What it means

AddSequenceMeta.readRep() loads the step's settings from a repository by reading step attributes for id_step; any Exception raised while reading those attributes is rethrown as a KettleException with this message plus the step id. It means the step's metadata could not be read from the repository database for that step id.

Solutions

  1. Run the repository upgrade/maintenance scripts for your Kettle version to ensure step attribute tables match the expected schema
  2. Verify the step with that id_step still exists in r_step and its attribute rows are intact in the repository database
  3. Check repository connectivity and user permissions; fix connection settings or grants as needed
  4. Export the transformation to XML from a working environment and re-import it if repository rows are unrecoverable

Example fix

-- before: attribute row missing for the step
SELECT * FROM r_step_attribute WHERE ID_STEP = 42; -- empty
-- after: re-save the step from Spoon so attributes are rewritten
-- Spoon: open transformation, re-save AddSequence step to repository
Defensive patterns

Strategy: try-catch

Validate before calling

long attrCount = rep.countStepAttributes(id_step);
if (attrCount == 0) throw new IllegalStateException("No repository attributes for step id " + id_step + "; step data missing");

Type guard

boolean stepExistsInRepo(Repository rep, ObjectId idStep) throws KettleException {
  return rep.getStepAttributeString(idStep, "valuename") != null;
}

Try / catch

try {
  meta.readRep(rep, metaStore, idStep, databases);
} catch (KettleException e) {
  if (e.getMessage().contains("UnableToReadStepInfo")) {
    logError("Repository read failed for step id " + idStep + ": " + e.getCause());
    // re-export from XML source or restore from backup
  } else throw e;
}

Prevention

When it happens

Trigger: readRep(rep, id_step, ...) throws because the repository connection fails, the step row/attributes for id_step do not exist, or an attribute value cannot be converted (e.g. getStepAttributeInteger on corrupt data). The step id is appended to the message for diagnosis.

Common situations: Repository database schema mismatch after a Kettle upgrade (missing r_step_attribute rows); stale transformation referencing a deleted step id; repository connectivity/permission problems at load time.

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/57d5931c58c138b6. Report an issue: GitHub.

Appendix: source

Thrown at plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/addsequence/AddSequenceMeta.java:334

      // Fix for backwards compatibility, only to be used from previous versions (TO DO Sven Boden: remove in later
      // versions)
      if ( startAt == null ) {
        long start = rep.getStepAttributeInteger( id_step, "start_at" );
        startAt = Long.toString( start );
      }

      if ( incrementBy == null ) {
        long increment = rep.getStepAttributeInteger( id_step, "increment_by" );
        incrementBy = Long.toString( increment );
      }

      if ( maxValue == null ) {
        long max = rep.getStepAttributeInteger( id_step, "max_value" );
        maxValue = Long.toString( max );
      }
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString( PKG, "AddSequenceMeta.Exception.UnableToReadStepInfo" )
        + id_step, e );
    }
  }

  @Override
  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
    try {
      rep.saveStepAttribute( id_transformation, id_step, "valuename", valuename );

      rep.saveStepAttribute( id_transformation, id_step, "use_database", useDatabase );

      rep.saveDatabaseMetaStepAttribute( id_transformation, id_step, "id_connection", database );

      rep.saveStepAttribute( id_transformation, id_step, "schema", schemaName );
      rep.saveStepAttribute( id_transformation, id_step, "seqname", sequenceName );

      rep.saveStepAttribute( id_transformation, id_step, "use_counter", useCounter );
      rep.saveStepAttribute( id_transformation, id_step, "counter_name", counterName );

View on GitHub (pinned to f3058517a1)