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
- Verify repository connectivity and credentials, then retry loading the transformation.
- Check the step's row in the repository attribute tables (R_STEP_ATTRIBUTE) for corruption; re-save the step in Spoon.
- Restore from repository backup or re-create the step.
- 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
- Check repository health/credentials before scheduled loads.
- Back up the repository database regularly.
- Keep PDI client and repository schema versions in sync.
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
- ColumnExistsMeta.Exception.UnableToSaveStepInfo
- ColumnExistsMeta.Exception.UnexpectedErrorReadingStepInfo
- CreditCardValidatorMeta.Exception.UnableToSaveStepInfo
- CubeInputMeta.Exception.UnexpectedErrorWhileReadingStepInfo
- SETVARIABLE0006
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)