{"record":{"id":"3e2d9dcaff349a30","repo":"pentaho/pentaho-kettle","slug":"xbaseinputmeta-exception","errorCode":null,"errorMessage":"XBaseInputMeta.Exception.UnexpectedErrorReadingMetaDataFromRepository","messagePattern":"XBaseInputMeta\\.Exception\\.UnexpectedErrorReadingMetaDataFromRepository","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/xbaseinput/XBaseInputMeta.java","lineNumber":395,"sourceCode":"\n  @Override\n  public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) throws KettleException {\n    try {\n      dbfFileName = rep.getStepAttributeString( id_step, \"file_dbf\" );\n      rowLimit = (int) rep.getStepAttributeInteger( id_step, \"limit\" );\n      rowNrAdded = rep.getStepAttributeBoolean( id_step, \"add_rownr\" );\n      rowNrField = rep.getStepAttributeString( id_step, \"field_rownr\" );\n\n      includeFilename = rep.getStepAttributeBoolean( id_step, \"include\" );\n      filenameField = rep.getStepAttributeString( id_step, \"include_field\" );\n      charactersetName = rep.getStepAttributeString( id_step, \"charset_name\" );\n\n      acceptingFilenames = rep.getStepAttributeBoolean( id_step, \"accept_filenames\" );\n      acceptingField = rep.getStepAttributeString( id_step, \"accept_field\" );\n      acceptingStepName = rep.getStepAttributeString( id_step, \"accept_stepname\" );\n\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"XBaseInputMeta.Exception.UnexpectedErrorReadingMetaDataFromRepository\" ), e );\n    }\n  }\n\n  @Override\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {\n    try {\n      rep.saveStepAttribute( id_transformation, id_step, \"file_dbf\", dbfFileName );\n      rep.saveStepAttribute( id_transformation, id_step, \"limit\", rowLimit );\n      rep.saveStepAttribute( id_transformation, id_step, \"add_rownr\", rowNrAdded );\n      rep.saveStepAttribute( id_transformation, id_step, \"field_rownr\", rowNrField );\n\n      rep.saveStepAttribute( id_transformation, id_step, \"include\", includeFilename );\n      rep.saveStepAttribute( id_transformation, id_step, \"include_field\", filenameField );\n      rep.saveStepAttribute( id_transformation, id_step, \"charset_name\", charactersetName );\n\n      rep.saveStepAttribute( id_transformation, id_step, \"accept_filenames\", acceptingFilenames );\n      rep.saveStepAttribute( id_transformation, id_step, \"accept_field\", acceptingField );","sourceCodeStart":377,"sourceCodeEnd":413,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/xbaseinput/XBaseInputMeta.java#L377-L413","documentation":"Thrown by XBaseInputMeta.readRep() when loading step attributes from the Pentaho Repository fails. Any exception while reading the step's stored attributes (row number, filename, wildcard, accept settings) is wrapped in a KettleException with this localized message. It signals a repository access problem or corrupt stored step metadata.","triggerScenarios":"Loading an XBase Input step definition from a repository via readRep(); Repository.getStepAttributeBoolean/String calls throw, or the id_step points to missing/incomplete attributes, and the exception is wrapped with this message.","commonSituations":"Repository database connectivity issues, step rows missing in R_STEP_ATTRIBUTE due to interrupted saves or manual deletion, repository version mismatch, permissions on repository tables.","solutions":["Verify repository connectivity (database repository up, or file repository accessible) and retry opening the transformation.","Check the chained cause for the exact repository error (SQL error, connection refused).","Re-save the step from Spoon to repopulate missing attributes.","Inspect R_STEP_ATTRIBUTE rows for the step's id_step if using a database repository.","Restore the transformation from a repository backup if attributes are lost."],"exampleFix":"// before: opening transformation from an unreachable repository\nTransMeta tm = new TransMeta( repository, \"path/to/trans\" );\n\n// after: verify repository connection first\nif ( !repository.isConnected() ) {\n  repository.connect( username, password );\n}\nTransMeta tm = new TransMeta( repository, \"path/to/trans\" );","handlingStrategy":"try-catch","validationCode":"if ( repository == null || !repository.isConnected() ) {\n  throw new KettleException( \"Repository is not connected; cannot read step metadata\" );\n}","typeGuard":null,"tryCatchPattern":"try {\n  TransMeta tm = new TransMeta( repository, path, monitor );\n} catch ( KettleException e ) {\n  logError( \"Repository read failed: \" + e.getCause(), e );\n  // check repository connectivity and attribute rows, then retry\n}","preventionTips":["Verify repository connectivity before batch-loading transformations.","Avoid interrupting saves; interrupted saves leave incomplete attribute rows.","Back up database repositories regularly.","Keep repository client/server versions aligned."],"tags":["pdi","repository","metadata","persistence"],"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"}