pentaho/pentaho-kettle · error · KettleException

WebServiceAvailableMeta.Exception.UnexpectedErrorReadingStep…

Error message

WebServiceAvailableMeta.Exception.UnexpectedErrorReadingStepInfo

What it means

WebServiceAvailableMeta.readRep loads the step settings (urlField, connectTimeOut, readTimeOut, resultfieldname) from the repository; any Exception is wrapped in a KettleException 'Unexpected error reading step info from the repository'. The repository could not supply the step attributes.

Solutions

  1. Test and restore the repository connection, then reopen the transformation.
  2. Inspect the wrapped cause for the root SQL/connection error and fix DB access.
  3. Verify the step attributes exist for the given id_step in the repository tables.
  4. If the repository is broken, load the transformation from an exported .ktr instead.
Defensive patterns

Strategy: try-catch

Validate before calling

if (!rep.connect()) throw new IllegalStateException("Repository unavailable");

Try / catch

try {
  transMeta.load(rep, metaStore, ...);
} catch (KettleException e) {
  logError("Unexpected repository read error", e);
  // fall back to local .ktr export
}

Prevention

When it happens

Trigger: readRep calls rep.getStepAttributeString(id_step, ...) for each setting and the repository layer throws — connection failure, missing step row, DB error.

Common situations: Repository database unreachable; transformation opened with a stale id_step after repo cleanup; repository schema mismatch; permission problems.

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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/webserviceavailable/WebServiceAvailableMeta.java:170

    try {
      urlField = XMLHandler.getTagValue( stepnode, "urlField" );
      connectTimeOut = XMLHandler.getTagValue( stepnode, "connectTimeOut" );
      readTimeOut = XMLHandler.getTagValue( stepnode, "readTimeOut" );
      resultfieldname = XMLHandler.getTagValue( stepnode, "resultfieldname" );
    } catch ( Exception e ) {
      throw new KettleXMLException( BaseMessages.getString(
        PKG, "WebServiceAvailableMeta.Exception.UnableToReadStepInfo" ), e );
    }
  }

  public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) throws KettleException {
    try {
      urlField = rep.getStepAttributeString( id_step, "urlField" );
      connectTimeOut = rep.getStepAttributeString( id_step, "connectTimeOut" );
      readTimeOut = rep.getStepAttributeString( id_step, "readTimeOut" );
      resultfieldname = rep.getStepAttributeString( id_step, "resultfieldname" );
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString(
        PKG, "WebServiceAvailableMeta.Exception.UnexpectedErrorReadingStepInfo" ), e );
    }
  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
    try {
      rep.saveStepAttribute( id_transformation, id_step, "urlField", urlField );
      rep.saveStepAttribute( id_transformation, id_step, "connectTimeOut", connectTimeOut );
      rep.saveStepAttribute( id_transformation, id_step, "readTimeOut", readTimeOut );
      rep.saveStepAttribute( id_transformation, id_step, "resultfieldname", resultfieldname );
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString(
        PKG, "WebServiceAvailableMeta.Exception.UnableToSaveStepInfo" )
        + id_step, e );
    }
  }

  public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta,

View on GitHub (pinned to f3058517a1)