pentaho/pentaho-kettle · error · KettleException

XsdValidatorMeta.Exception.UnexpectedErrorInReadingStepInfo

Error message

XsdValidatorMeta.Exception.UnexpectedErrorInReadingStepInfo

What it means

Thrown by XsdValidatorMeta.readRep when loading the step's settings from the repository fails. Any exception raised while reading step/job-entry attributes is wrapped in a KettleException with this message, with the original error as the cause. It means the step metadata could not be read from the database repository.

Solutions

  1. Check the cause exception and the repository database connectivity.
  2. Verify the step's rows exist in R_STEP_ATTRIBUTE for the given id_step.
  3. Reconnect to the repository and reload the transformation.
  4. Export the transformation to XML from a working client and use file-based loading instead.
Defensive patterns

Strategy: try-catch

Try / catch

try { transMeta = repository.loadTransformation(name, dir, monitor, true, null) } catch (KettleException e) { log.error("Repository read failed: " + e.getCause(), e); }

Prevention

When it happens

Trigger: readRep(rep, id_step, ...) is invoked during transformation loading from a repository and a rep.getStepAttributeString/getJobEntryAttributeString call throws (repository connectivity loss, DB error, id_step invalid).

Common situations: Repository database connection dropped mid-load; r_step_attribute rows missing or corrupted; stale transformation referencing a deleted step id; repository schema version mismatch.

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/8e0d86748c677872. Report an issue: GitHub.

Appendix: source

Thrown at plugins/xml/core/src/main/java/org/pentaho/di/trans/steps/xsdvalidator/XsdValidatorMeta.java:308

      xsdFilename = rep.getStepAttributeString( id_step, "xdsfilename" );
      xmlStream = rep.getStepAttributeString( id_step, "xmlstream" );
      resultFieldname = rep.getStepAttributeString( id_step, "resultfieldname" );

      xmlSourceFile = rep.getStepAttributeBoolean( id_step, "xmlsourcefile" );
      addValidationMessage = rep.getStepAttributeBoolean( id_step, "addvalidationmsg" );
      validationMessageField = rep.getStepAttributeString( id_step, "validationmsgfield" );
      ifXmlValid = rep.getStepAttributeString( id_step, "ifxmlvalid" );
      ifXmlInvalid = rep.getStepAttributeString( id_step, "ifxmlunvalid" );

      outputStringField = rep.getStepAttributeBoolean( id_step, "outputstringfield" );
      xsdDefinedField = rep.getStepAttributeString( id_step, "xsddefinedfield" );
      xsdSource = rep.getStepAttributeString( id_step, "xsdsource" );

      allowExternalEntities =
        Boolean.parseBoolean( rep.getJobEntryAttributeString( id_step, "allowExternalEntities" ) );

    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString( PKG,
          "XsdValidatorMeta.Exception.UnexpectedErrorInReadingStepInfo" ), e );
    }
  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step )
    throws KettleException {
    try {
      rep.saveStepAttribute( id_transformation, id_step, "xdsfilename", xsdFilename );
      rep.saveStepAttribute( id_transformation, id_step, "xmlstream", xmlStream );
      rep.saveStepAttribute( id_transformation, id_step, "resultfieldname", resultFieldname );
      rep.saveStepAttribute( id_transformation, id_step, "xmlsourcefile", xmlSourceFile );
      rep.saveStepAttribute( id_transformation, id_step, "addvalidationmsg", addValidationMessage );
      rep.saveStepAttribute( id_transformation, id_step, "validationmsgfield", validationMessageField );
      rep.saveStepAttribute( id_transformation, id_step, "ifxmlvalid", ifXmlValid );
      rep.saveStepAttribute( id_transformation, id_step, "ifxmlunvalid", ifXmlInvalid );
      rep.saveStepAttribute( id_transformation, id_step, "outputstringfield", outputStringField );
      rep.saveStepAttribute( id_transformation, id_step, "xsddefinedfield", xsdDefinedField );
      rep.saveStepAttribute( id_transformation, id_step, "xsdsource", xsdSource );

View on GitHub (pinned to f3058517a1)