pentaho/pentaho-kettle · error · KettleException
LucidDBStreamingLoaderMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository
LucidDBStreamingLoaderMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository
Error message
LucidDBStreamingLoaderMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository
What it means
readRep() loads the step's settings from a repository (database-stored transformation). Any exception while reading step attributes (e.g. the repository row/attributes are missing or the repository connection fails mid-read) is wrapped in a KettleException with this message.
Solutions
- Verify the repository connection is healthy (test the repository DB connection in Spoon).
- Check that r_step_attribute rows exist for the step id; re-save the step metadata from a working copy.
- Align plugin versions between the environment that saved and the one loading the transformation.
- Re-import/re-create the step in the repository if its attributes are corrupt.
Defensive patterns
Strategy: try-catch
Validate before calling
if (rep == null || id_step == null) {
throw new KettleException("Repository or step id is null; cannot read LucidDBStreamingLoader metadata");
} Try / catch
try {
meta.loadRep(rep, metaStore, id_step, databases, metaStore);
} catch (KettleException e) {
logError("Repository read failed for LucidDB Streaming Loader step " + id_step, e);
throw e;
} Prevention
- Test repository connectivity before batch-loading transformations.
- Keep repository schema and plugin versions in sync across environments.
- Back up repository metadata before migrations.
- Re-save steps after plugin upgrades to refresh stored attributes.
When it happens
Trigger: Loading a LucidDB Streaming Loader step from a repository via loadRep() -> readRep(rep, id_step); rep.getStepAttributeBoolean/getStepAttributeString throws because the r_step_attribute rows are missing, the repository is unavailable, or the stored metadata belongs to a different plugin version.
Common situations: Repository database partially migrated; transformation saved by a newer plugin version so expected attribute keys are absent; flaky repository DB connection during load.
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
- GetTableNamesMeta.Exception.UnableToSaveStepInfo
- GPBulkLoaderMeta.Exception.UnexpectedErrorReadingStepInfoFro…
- GPBulkLoaderMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository
- GPBulkLoaderMeta.Exception.UnableToSaveStepInfoToRepository
- InsertUpdateMeta.Exception.UnexpectedErrorReadingStepInfoFro…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/b6be0d5ba1d3b073.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/lucid-db-streaming-loader/core/src/main/java/org/pentaho/di/trans/steps/luciddbstreamingloader/LucidDBStreamingLoaderMeta.java:339
}
}
for ( int i = 0; i < nrFieldMapping; i++ ) {
fieldTableForFields[i] = rep.getStepAttributeString( id_step, i, "field_field_name" );
fieldStreamForFields[i] = rep.getStepAttributeString( id_step, i, "field_stream_name" );
if ( fieldStreamForFields[i] == null ) {
fieldStreamForFields[i] = fieldTableForFields[i];
}
insOrUptFlag[i] = rep.getStepAttributeBoolean( id_step, i, "insert_or_update_flag" );
}
for ( int i = 0; i < nrTabIsEnable; i++ ) {
tabIsEnable[i] = rep.getStepAttributeBoolean( id_step, i, "tab_is_enable" );
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "LucidDBStreamingLoaderMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository" ), 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", databaseMeta );
rep.saveStepAttribute( id_transformation, id_step, "schema", schemaName );
rep.saveStepAttribute( id_transformation, id_step, "table", tableName );
rep.saveStepAttribute( id_transformation, id_step, "host", host );
rep.saveStepAttribute( id_transformation, id_step, "port", port );
rep.saveStepAttribute( id_transformation, id_step, "operation", operation );
rep.saveStepAttribute( id_transformation, id_step, "custom_sql", custom_sql );
for ( int i = 0; i < fieldTableForKeys.length; i++ ) {
rep.saveStepAttribute( id_transformation, id_step, i, "key_field_name", fieldTableForKeys[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "key_stream_name", fieldStreamForKeys[i] );
View on GitHub (pinned to f3058517a1)