pentaho/pentaho-kettle · error · KettleException

UpdateMeta.Exception.UnexpectedErrorReadingStepInfoFromRepos…

Error message

UpdateMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository

What it means

Outer catch-all in UpdateMeta.readRep: an unexpected exception occurred while reading the update step's key/value attributes from the repository (after keys and values were allocated). The cause is attached; testReadRepAllocatesSizeProperly exercises this code path.

Solutions

  1. Check the wrapped cause for the repository error and verify repository connectivity
  2. Re-open the transformation in Spoon and re-save the Update step to rewrite its attributes
  3. Run repository upgrade/repair scripts matching your PDI version
  4. Export the transformation to XML as a fallback and fix it there

Example fix

// before
r_step_attribute row for 'value_name' deleted
// after
re-save step via Spoon or run repository repair so attributes exist
Defensive patterns

Strategy: try-catch

Validate before calling

// Before load, verify repository reachable and step row present:
// ObjectId id = repository.getStepID(id_transformation, stepName);

Try / catch

try { transMeta.readRep(repository, ...); } catch (KettleException e) { log.error("Repository read failed: " + e.getCause(), e); }

Prevention

When it happens

Trigger: readRep -> rep.getStepAttributeString calls throw (repository connectivity, missing step row, corrupt r_step_attribute data) while loading the transformation from a database repository.

Common situations: Database repository schema version mismatch; corrupted or partially deleted step attributes; repository connection dropped mid-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/7036611e450896dc. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/update/UpdateMeta.java:531

      int nrValueRename = rep.countNrStepAttributes( id_step, "value_rename" );

      int nrvalues = Ints.max( nrValueName, nrValueRename );

      allocate( nrkeys, nrvalues );

      for ( int i = 0; i < nrkeys; i++ ) {
        keyStream[i] = rep.getStepAttributeString( id_step, i, "key_name" );
        keyLookup[i] = rep.getStepAttributeString( id_step, i, "key_field" );
        keyCondition[i] = rep.getStepAttributeString( id_step, i, "key_condition" );
        keyStream2[i] = rep.getStepAttributeString( id_step, i, "key_name2" );
      }

      for ( int i = 0; i < nrvalues; i++ ) {
        updateLookup[i] = rep.getStepAttributeString( id_step, i, "value_name" );
        updateStream[i] = rep.getStepAttributeString( id_step, i, "value_rename" );
      }
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString(
        PKG, "UpdateMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository" ), e );
    }
  }

  @Override
  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, "skip_lookup", skipLookup );
      rep.saveStepAttribute( id_transformation, id_step, "commit", commitSize );
      rep.saveStepAttribute( id_transformation, id_step, "use_batch", useBatchUpdate );
      rep.saveStepAttribute( id_transformation, id_step, "schema", schemaName );
      rep.saveStepAttribute( id_transformation, id_step, "table", tableName );

      rep.saveStepAttribute( id_transformation, id_step, "error_ignored", errorIgnored );
      rep.saveStepAttribute( id_transformation, id_step, "ignore_flag_field", ignoreFlagField );

      for ( int i = 0; i < keyStream.length; i++ ) {

View on GitHub (pinned to f3058517a1)