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

  1. Verify the repository connection is healthy (test the repository DB connection in Spoon).
  2. Check that r_step_attribute rows exist for the step id; re-save the step metadata from a working copy.
  3. Align plugin versions between the environment that saved and the one loading the transformation.
  4. 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

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


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)