pentaho/pentaho-kettle · error · KettleException
ColumnExistsMeta.Exception.UnexpectedErrorReadingStepInfo
Error message
ColumnExistsMeta.Exception.UnexpectedErrorReadingStepInfo
What it means
Outer catch-all in ColumnExistsMeta.readRep: an unexpected exception occurred while loading the step's attributes (connection, tablename, schema, result field) from the repository. The cause is chained for diagnosis.
Solutions
- Verify the repository database connection is up and reachable
- Run the repository upgrade script matching your PDI version
- Inspect the nested cause (e) for the actual repository error
Defensive patterns
Strategy: try-catch
Validate before calling
// Verify repository connectivity before loading step metadata
if (!rep.connect(null) || !rep.getConnection().isConnected()) {
throw new IllegalStateException("Repository unavailable");
} Try / catch
try {
meta.readRep(rep, metaStore, idStep, databases);
} catch (KettleException e) {
log.error("Repository read failed for step " + idStep + ": " + e.getCause(), e);
} Prevention
- Run the repository upgrade scripts after PDI upgrades
- Monitor repository DB health
- Back up the repository before schema changes
When it happens
Trigger: Repository calls (rep.getStepAttributeString/getStepAttributeBoolean) throw during readRep for a ColumnExists step — typically repository connectivity or schema problems.
Common situations: Database repository down or network cut; repository tables missing/old schema after a PDI upgrade; invalid id_step referencing deleted rows.
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
- CreditCardValidatorMeta.Exception.UnableToSaveStepInfo
- CubeInputMeta.Exception.UnexpectedErrorWhileReadingStepInfo
- SETVARIABLE0006
- SymmetricCryptoTransMeta.Exception.UnexpectedErrorInReadingStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/023d5b4fcdc29c2c.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/columnexists/ColumnExistsMeta.java:246
resultfieldname = XMLHandler.getTagValue( stepnode, "resultfieldname" ); // Optional, can be null
} catch ( Exception e ) {
throw new KettleXMLException( BaseMessages.getString( PKG, "ColumnExistsMeta.Exception.UnableToReadStepInfo" ),
e );
}
}
public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases )
throws KettleException {
try {
database = rep.loadDatabaseMetaFromStepAttribute( id_step, "id_connection", databases );
tablename = rep.getStepAttributeString( id_step, "tablename" );
schemaname = rep.getStepAttributeString( id_step, "schemaname" );
istablenameInfield = rep.getStepAttributeBoolean( id_step, "istablenameInfield" );
tablenamefield = rep.getStepAttributeString( id_step, "tablenamefield" );
columnnamefield = rep.getStepAttributeString( id_step, "columnnamefield" );
resultfieldname = rep.getStepAttributeString( id_step, "resultfieldname" );
} catch ( Exception e ) {
throw new KettleException(
BaseMessages.getString( PKG, "ColumnExistsMeta.Exception.UnexpectedErrorReadingStepInfo" ), e );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step )
throws KettleException {
try {
rep.saveDatabaseMetaStepAttribute( id_transformation, id_step, "id_connection", database );
rep.saveStepAttribute( id_transformation, id_step, "tablename", tablename );
rep.saveStepAttribute( id_transformation, id_step, "schemaname", schemaname );
rep.saveStepAttribute( id_transformation, id_step, "istablenameInfield", istablenameInfield );
rep.saveStepAttribute( id_transformation, id_step, "tablenamefield", tablenamefield );
rep.saveStepAttribute( id_transformation, id_step, "columnnamefield", columnnamefield );
rep.saveStepAttribute( id_transformation, id_step, "resultfieldname", resultfieldname );
// Also, save the step-database relationship!
if ( database != null ) {
rep.insertStepDatabase( id_transformation, id_step, database.getObjectId() );View on GitHub (pinned to f3058517a1)