pentaho/pentaho-kettle · error · KettleException

PropertyInputMeta.Exception.ErrorReadingRepository

Error message

PropertyInputMeta.Exception.ErrorReadingRepository

What it means

The PropertyInputMeta constructor that reads step settings from a repository wraps any exception in a KettleException with this localized message. It means the step's attributes could not be read back from the repository database.

Solutions

  1. Verify repository database connectivity and retry loading
  2. Upgrade/repair the repository schema to match your PDI version
  3. Check the wrapped cause (getCause()) for the root SQL/JDBC error
  4. Re-save the transformation from a working copy to rewrite its attributes
  5. Fall back to loading the transformation from an XML file export

Example fix

// before
TransMeta tm = new TransMeta(repo, transObjectId, metaStore); // fails reading PropertyInput step
// after: guard and fall back
try {
  tm = new TransMeta(repo, transObjectId, metaStore);
} catch (KettleException e) {
  logError("Repository load failed: " + e.getCause());
  tm = new TransMeta("/backup/trans.ktr"); // XML fallback
}
Defensive patterns

Strategy: try-catch

Validate before calling

if (repo == null || !repo.isConnected()) throw new IllegalStateException("Repository not connected");
// verify step attributes exist:
if (rep.countStepAttributeString(idStep, "filename") == 0) logError("No stored attributes for step");

Try / catch

try {
  TransMeta tm = new TransMeta(repo, idTrans, metaStore);
} catch (KettleException e) {
  logError("Repository read failed: " + e.getCause());
  // retry connection or fall back to XML export
}

Prevention

When it happens

Trigger: Loading a transformation from a repository database when the attribute read fails — repository connection dropped, missing/corrupt rows in r_step_attribute, or schema incompatibility after a version migration.

Common situations: Repository schema not upgraded after a PDI upgrade; corrupted repository rows; network/DB outage mid-load; insufficient read permissions on repository tables.

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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/propertyinput/PropertyInputMeta.java:1102

        field.setGroupSymbol( rep.getStepAttributeString( idSstep, i, TAG_FIELD_GROUP ) );
        field.setLength( (int) rep.getStepAttributeInteger( idSstep, i, TAG_FIELD_LENGTH ) );
        field.setPrecision( (int) rep.getStepAttributeInteger( idSstep, i, TAG_FIELD_PRECISION ) );
        field.setTrimType(
          PropertyInputField.getTrimTypeByCode( rep.getStepAttributeString( idSstep, i, TAG_FIELD_TRIM_TYPE ) ) );
        field.setRepeated( rep.getStepAttributeBoolean( idSstep, i, TAG_FIELD_REPEAT ) );

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

  @Override
  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId idTransformation, ObjectId idStep ) throws KettleException {
    try {
      rep.saveStepAttribute( idTransformation, idStep, TAG_FILE_TYPE, fileType );
      rep.saveStepAttribute( idTransformation, idStep, TAG_SECTION, section );
      rep.saveStepAttribute( idTransformation, idStep, TAG_ENCODING, encoding );
      rep.saveStepAttribute( idTransformation, idStep, TAG_INI_SECTION, includeIniSection );
      rep.saveStepAttribute( idTransformation, idStep, TAG_INI_SECTION_FIELD, iniSectionField );
      rep.saveStepAttribute( idTransformation, idStep, TAG_INCLUDE, includeFilename );
      rep.saveStepAttribute( idTransformation, idStep, TAG_INCLUDE_FIELD, filenameField );
      rep.saveStepAttribute( idTransformation, idStep, TAG_ROWNUM, includeRowNumber );
      rep.saveStepAttribute( idTransformation, idStep, TAG_IS_ADD_RESULT, isAddResult );
      rep.saveStepAttribute( idTransformation, idStep, TAG_FILE_FIELD, fileField );
      rep.saveStepAttribute( idTransformation, idStep, TAG_FILENAME_FIELD, dynamicFilenameField );

View on GitHub (pinned to f3058517a1)