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
- Check repository connectivity (test connection in Spoon) and retry loading the transformation.
- Verify the transformation/step rows exist in R_STEP/related repository tables; restore from backup if corrupted.
- Recreate the GetXMLData step in the transformation and re-save it to the repository.
- 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
- Monitor repository database availability before scheduled runs.
- Keep client PDI version aligned with the repository schema.
- Back up repository tables so corrupted step rows can be restored.
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
- GetXMLDataMeta.Exception.ErrorSavingToRepository (localized…
- ElasticSearchBulkMeta.Exception.ErrorReadingRepository
- ElasticSearchBulkMeta.Exception.ErrorSavingToRepository
- FileExistsMeta.Exception.UnableToSaveStepInfo
- FileExistsMeta.Exception.UnexpectedErrorReadingStepInfo
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)