{"record":{"id":"0c5ab19c1f7ee56a","repo":"pentaho/pentaho-kettle","slug":"propertyinputmeta-exception-errorreadingrepository","errorCode":null,"errorMessage":"PropertyInputMeta.Exception.ErrorReadingRepository","messagePattern":"PropertyInputMeta\\.Exception\\.ErrorReadingRepository","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/propertyinput/PropertyInputMeta.java","lineNumber":1102,"sourceCode":"        field.setGroupSymbol( rep.getStepAttributeString( idSstep, i, TAG_FIELD_GROUP ) );\n        field.setLength( (int) rep.getStepAttributeInteger( idSstep, i, TAG_FIELD_LENGTH ) );\n        field.setPrecision( (int) rep.getStepAttributeInteger( idSstep, i, TAG_FIELD_PRECISION ) );\n        field.setTrimType(\n          PropertyInputField.getTrimTypeByCode( rep.getStepAttributeString( idSstep, i, TAG_FIELD_TRIM_TYPE ) ) );\n        field.setRepeated( rep.getStepAttributeBoolean( idSstep, i, TAG_FIELD_REPEAT ) );\n\n        inputFields[i] = field;\n      }\n      shortFileFieldName = rep.getStepAttributeString( idSstep, TAG_SHORT_FILE_FIELD_NAME );\n      pathFieldName = rep.getStepAttributeString( idSstep, TAG_PATH_FIELD_NAME );\n      hiddenFieldName = rep.getStepAttributeString( idSstep, TAG_HIDDEN_FIELD_NAME );\n      lastModificationTimeFieldName = rep.getStepAttributeString( idSstep, TAG_LAST_MODIFICATION_TIME_FIELD_NAME );\n      uriNameFieldName = rep.getStepAttributeString( idSstep, TAG_URI_NAME_FIELD_NAME );\n      rootUriNameFieldName = rep.getStepAttributeString( idSstep, TAG_ROOT_URI_NAME_FIELD_NAME );\n      extensionFieldName = rep.getStepAttributeString( idSstep, TAG_EXTENSION_FIELD_NAME );\n      sizeFieldName = rep.getStepAttributeString( idSstep, TAG_SIZE_FIELD_NAME );\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages\n        .getString( PKG, \"PropertyInputMeta.Exception.ErrorReadingRepository\" ), e );\n    }\n  }\n\n  @Override\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId idTransformation, ObjectId idStep ) throws KettleException {\n    try {\n      rep.saveStepAttribute( idTransformation, idStep, TAG_FILE_TYPE, fileType );\n      rep.saveStepAttribute( idTransformation, idStep, TAG_SECTION, section );\n      rep.saveStepAttribute( idTransformation, idStep, TAG_ENCODING, encoding );\n      rep.saveStepAttribute( idTransformation, idStep, TAG_INI_SECTION, includeIniSection );\n      rep.saveStepAttribute( idTransformation, idStep, TAG_INI_SECTION_FIELD, iniSectionField );\n      rep.saveStepAttribute( idTransformation, idStep, TAG_INCLUDE, includeFilename );\n      rep.saveStepAttribute( idTransformation, idStep, TAG_INCLUDE_FIELD, filenameField );\n      rep.saveStepAttribute( idTransformation, idStep, TAG_ROWNUM, includeRowNumber );\n      rep.saveStepAttribute( idTransformation, idStep, TAG_IS_ADD_RESULT, isAddResult );\n      rep.saveStepAttribute( idTransformation, idStep, TAG_FILE_FIELD, fileField );\n      rep.saveStepAttribute( idTransformation, idStep, TAG_FILENAME_FIELD, dynamicFilenameField );","sourceCodeStart":1084,"sourceCodeEnd":1120,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/propertyinput/PropertyInputMeta.java#L1084-L1120","documentation":"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.","triggerScenarios":"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.","commonSituations":"Repository schema not upgraded after a PDI upgrade; corrupted repository rows; network/DB outage mid-load; insufficient read permissions on repository tables.","solutions":["Verify repository database connectivity and retry loading","Upgrade/repair the repository schema to match your PDI version","Check the wrapped cause (getCause()) for the root SQL/JDBC error","Re-save the transformation from a working copy to rewrite its attributes","Fall back to loading the transformation from an XML file export"],"exampleFix":"// before\nTransMeta tm = new TransMeta(repo, transObjectId, metaStore); // fails reading PropertyInput step\n// after: guard and fall back\ntry {\n  tm = new TransMeta(repo, transObjectId, metaStore);\n} catch (KettleException e) {\n  logError(\"Repository load failed: \" + e.getCause());\n  tm = new TransMeta(\"/backup/trans.ktr\"); // XML fallback\n}","handlingStrategy":"try-catch","validationCode":"if (repo == null || !repo.isConnected()) throw new IllegalStateException(\"Repository not connected\");\n// verify step attributes exist:\nif (rep.countStepAttributeString(idStep, \"filename\") == 0) logError(\"No stored attributes for step\");","typeGuard":null,"tryCatchPattern":"try {\n  TransMeta tm = new TransMeta(repo, idTrans, metaStore);\n} catch (KettleException e) {\n  logError(\"Repository read failed: \" + e.getCause());\n  // retry connection or fall back to XML export\n}","preventionTips":["Upgrade the repository schema after every PDI version change","Monitor repository DB connectivity before batch loads","Re-save transformations from a known-good copy if attributes are corrupt","Keep XML exports as a recovery path for repository-hosted transformations"],"tags":["kettle","repository","persistence","metadata"],"backgroundTag":"database-query-failed","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}