pentaho/pentaho-kettle · error · KettleException

GetXMLDataMeta.Exception.ErrorReadingRepository (localized…

Error message

GetXMLDataMeta.Exception.ErrorReadingRepository (localized message)

What it means

GetXMLDataMeta.readRepo (loadStepAttributes from a repository) wraps any exception while fetching the step's settings from the repository database in a KettleException with localized message 'GetXMLDataMeta.Exception.ErrorReadingRepository'. It means the step metadata could not be loaded from the repository.

Solutions

  1. Check repository connectivity (test connection in Spoon) and retry loading the transformation.
  2. Verify the transformation/step rows exist in R_STEP/related repository tables; restore from backup if corrupted.
  3. Recreate the GetXMLData step in the transformation and re-save it to the repository.
  4. Confirm client and repository schema versions match; run the repository upgrade scripts if needed.

Example fix

// before: load assumes repository reachable
transMeta = TransMeta.fromRepository( rep, "prod/load_xml" );
// after: validate connection first
if ( !rep.connect( "admin", "password" ) ) { throw new KettleException( "Repository unavailable" ); }
transMeta = TransMeta.fromRepository( rep, "prod/load_xml" );
Defensive patterns

Strategy: retry

Validate before calling

// Verify repository connectivity before loading metadata
if ( !rep.testConnection() ) { throw new IllegalStateException( "Repository unreachable" ); }

Try / catch

for ( int i = 0; i < 3; i++ ) { try { return new TransMeta( rep, "load_xml" ); } catch ( KettleException e ) { backoff( i ); } } throw e;

Prevention

When it happens

Trigger: The readRep(...) catch block: rep.getStepAttributeString/getStepAttributeInteger calls throw, e.g. repository connection loss, missing step record, or repository schema issues.

Common situations: Repository database down or network dropped mid-load, corrupted repository rows, loading a transformation that references a deleted step id, repository upgrade mismatch between client and server schema.

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

Appendix: source

Thrown at plugins/xml/core/src/main/java/org/pentaho/di/trans/steps/getxmldata/GetXMLDataMeta.java:1091

        inputFields[i] = field;
      }
      inFields = rep.getStepAttributeBoolean( id_step, TAG_IS_IN_FIELDS );
      IsAFile = rep.getStepAttributeBoolean( id_step, TAG_IS_A_FILE );

      xmlField = rep.getStepAttributeString( id_step, TAG_XML_FIELD );
      prunePath = rep.getStepAttributeString( id_step, TAG_PRUNE_PATH );

      shortFileFieldName = rep.getStepAttributeString( id_step, TAG_SHORT_FILE_FIELD_NAME );
      extensionFieldName = rep.getStepAttributeString( id_step, TAG_EXTENSION_FIELD_NAME );
      pathFieldName = rep.getStepAttributeString( id_step, TAG_PATH_FIELD_NAME );
      sizeFieldName = rep.getStepAttributeString( id_step, TAG_SIZE_FIELD_NAME );
      hiddenFieldName = rep.getStepAttributeString( id_step, TAG_HIDDEN_FIELD_NAME );
      lastModificationTimeFieldName = rep.getStepAttributeString( id_step, TAG_LAST_MODIFICATION_TIME_FIELD_NAME );
      uriNameFieldName = rep.getStepAttributeString( id_step, TAG_URI_NAME_FIELD_NAME );
      rootUriNameFieldName = rep.getStepAttributeString( id_step, TAG_ROOT_URI_NAME_FIELD_NAME );
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString( PKG, "GetXMLDataMeta.Exception.ErrorReadingRepository" ), e );
    }
  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step )
    throws KettleException {
    try {
      rep.saveStepAttribute( id_transformation, id_step, TAG_INCLUDE, includeFilename );
      rep.saveStepAttribute( id_transformation, id_step, TAG_INCLUDE_FIELD, filenameField );
      rep.saveStepAttribute( id_transformation, id_step, TAG_ADD_RESULT_FILE, addResultFile );
      rep.saveStepAttribute( id_transformation, id_step, TAG_NAME_SPACE_AWARE, nameSpaceAware );
      rep.saveStepAttribute( id_transformation, id_step, TAG_IGNORE_COMMENTS, ignorecomments );
      rep.saveStepAttribute( id_transformation, id_step, TAG_READ_URL, readurl );

      rep.saveStepAttribute( id_transformation, id_step, TAG_VALIDATING, validating );
      rep.saveStepAttribute( id_transformation, id_step, TAG_USE_TOKEN, usetoken );
      rep.saveStepAttribute( id_transformation, id_step, TAG_IS_IGNORE_EMPTY_FILE, IsIgnoreEmptyFile );
      rep.saveStepAttribute( id_transformation, id_step, TAG_DO_NOT_FAIL_IF_NO_FILE, doNotFailIfNoFile );

View on GitHub (pinned to f3058517a1)