pentaho/pentaho-kettle · error · KettleException

SymmetricCryptoTransMeta.Exception.UnexpectedErrorInReadingStepInfo

SymmetricCryptoTransMeta.Exception.UnexpectedErrorInReadingStepInfo

Error message

SymmetricCryptoTransMeta.Exception.UnexpectedErrorInReadingStepInfo

What it means

SymmetricCryptoTransMeta.readRep() loads the step's settings from a repository by id_step (getStepAttributeString/getStepAttributeBoolean for secretKey, secretKeyInField, readKeyAsBinary, outputResultAsBinary). Any exception thrown by the repository access is wrapped in a KettleException with this message, indicating the step info could not be read from the repository. The underlying cause is chained.

Solutions

  1. Verify repository connectivity and credentials, then retry loading the transformation.
  2. Check the step's row in the repository attribute tables (R_STEP_ATTRIBUTE) for corruption; re-save the step in Spoon.
  3. Restore from repository backup or re-create the step.
  4. Confirm PDI/repository plugin versions match.

Example fix

// before
TransMeta tm = new TransMeta(rep, "MyTrans", null); // repo down
// after
if (rep.isConnected() && rep.testConnection()) {
  TransMeta tm = new TransMeta(rep, "MyTrans", null);
}
Defensive patterns

Strategy: try-catch

Validate before calling

// Verify repository connectivity before loading
if (!rep.testConnection()) {
  throw new IllegalStateException("Repository not reachable");
}

Try / catch

try {
  TransMeta tm = new TransMeta(rep, "MyTrans", null);
} catch (KettleException e) {
  logError("Failed reading step info from repository: " + e.getCause(), e);
}

Prevention

When it happens

Trigger: Calling TransMeta load from repository where the repository connection fails mid-read, id_step points to a missing/corrupt step record, or repository schema/attribute tables are inconsistent.

Common situations: Repository DB unavailable or permissions lost; stale id_step after a repository cleanup; repository version mismatch after upgrading PDI; network interruption to the repository database.

Understand the failure class

Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.

Related errors


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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/symmetriccrypto/symmetriccryptotrans/SymmetricCryptoTransMeta.java:343

  }

  public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) throws KettleException {
    try {
      operationType =
        getOperationTypeByCode( Const.NVL( rep.getStepAttributeString( id_step, "operation_type" ), "" ) );
      algorithm = rep.getStepAttributeString( id_step, "algorithm" );
      schema = rep.getStepAttributeString( id_step, "schema" );
      secretKeyField = rep.getStepAttributeString( id_step, "secretKeyField" );
      messageField = rep.getStepAttributeString( id_step, "messageField" );
      resultfieldname = rep.getStepAttributeString( id_step, "resultfieldname" );

      secretKey = Encr.decryptPasswordOptionallyEncrypted( rep.getStepAttributeString( id_step, "secretKey" ) );
      secretKeyInField = rep.getStepAttributeBoolean( id_step, "secretKeyInField" );
      readKeyAsBinary = rep.getStepAttributeBoolean( id_step, "readKeyAsBinary" );
      outputResultAsBinary = rep.getStepAttributeBoolean( id_step, "outputResultAsBinary" );

    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString(
        PKG, "SymmetricCryptoTransMeta.Exception.UnexpectedErrorInReadingStepInfo" ), e );
    }
  }

  private static String getOperationTypeCode( int i ) {
    if ( i < 0 || i >= operationTypeCode.length ) {
      return operationTypeCode[0];
    }
    return operationTypeCode[i];
  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
    try {
      rep.saveStepAttribute( id_transformation, id_step, "operation_type", getOperationTypeCode( operationType ) );
      rep.saveStepAttribute( id_transformation, id_step, "algorithm", algorithm );
      rep.saveStepAttribute( id_transformation, id_step, "schema", schema );

      rep.saveStepAttribute( id_transformation, id_step, "secretKeyField", secretKeyField );

View on GitHub (pinned to f3058517a1)