{"record":{"id":"68792abaa1499946","repo":"pentaho/pentaho-kettle","slug":"gpbulkloadermeta-exception","errorCode":null,"errorMessage":"GPBulkLoaderMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository","messagePattern":"GPBulkLoaderMeta\\.Exception\\.UnexpectedErrorReadingStepInfoFromRepository","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/gp-bulk-loader/core/src/main/java/org/pentaho/di/trans/steps/gpbulkloader/GPBulkLoaderMeta.java","lineNumber":377,"sourceCode":"      controlFile = rep.getStepAttributeString( id_step, \"control_file\" );\n      dataFile = rep.getStepAttributeString( id_step, \"data_file\" );\n      logFile = rep.getStepAttributeString( id_step, \"log_file\" );\n\n      eraseFiles = rep.getStepAttributeBoolean( id_step, \"erase_files\" );\n      encoding = rep.getStepAttributeString( id_step, \"encoding\" );\n      dbNameOverride = rep.getStepAttributeString( id_step, \"dbname_override\" );\n\n      int nrvalues = rep.countNrStepAttributes( id_step, \"stream_name\" );\n\n      allocate( nrvalues );\n\n      for ( int i = 0; i < nrvalues; i++ ) {\n        fieldTable[i] = rep.getStepAttributeString( id_step, i, \"stream_name\" );\n        fieldStream[i] = rep.getStepAttributeString( id_step, i, \"field_name\" );\n        dateMask[i] = rep.getStepAttributeString( id_step, i, \"date_mask\" );\n      }\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"GPBulkLoaderMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository\" ), 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.saveDatabaseMetaStepAttribute( id_transformation, id_step, \"id_connection\", databaseMeta );\n      rep.saveStepAttribute( id_transformation, id_step, \"errors\", maxErrors );\n      rep.saveStepAttribute( id_transformation, id_step, \"schema\", schemaName );\n      rep.saveStepAttribute( id_transformation, id_step, \"table\", tableName );\n\n      rep.saveStepAttribute( id_transformation, id_step, \"load_method\", loadMethod );\n      rep.saveStepAttribute( id_transformation, id_step, \"load_action\", loadAction );\n      rep.saveStepAttribute( id_transformation, id_step, \"PsqlPath\", PsqlPath );\n      rep.saveStepAttribute( id_transformation, id_step, \"control_file\", controlFile );\n      rep.saveStepAttribute( id_transformation, id_step, \"data_file\", dataFile );\n      rep.saveStepAttribute( id_transformation, id_step, \"log_file\", logFile );","sourceCodeStart":359,"sourceCodeEnd":395,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/gp-bulk-loader/core/src/main/java/org/pentaho/di/trans/steps/gpbulkloader/GPBulkLoaderMeta.java#L359-L395","documentation":"Thrown by GPBulkLoaderMeta.readRep when an unexpected exception occurs while loading the step's settings from the Kettle repository. The step metadata (stream names, field names, date masks) is read via repository attributes inside a try/catch; any repository I/O or parsing failure is wrapped in this generic KettleException. The original exception is chained as the cause.","triggerScenarios":"Calling readRep (during transformation load from repository) when the repository connection drops mid-read, the step attribute rows are corrupted/missing, or the underlying Repository implementation throws (e.g. database repository outage, permission denied on r_step_attribute rows).","commonSituations":"Shared DB repository temporarily unavailable; r_step_attribute rows deleted manually or corrupted after a failed migration; stale repository cache after a server restart; repository user lacking SELECT rights.","solutions":["Check the chained cause (getCause()) to find the actual repository error and fix that first","Verify the repository connection is alive and the user has read permission on the step attribute tables","Re-save the transformation from Spoon to rebuild the step attribute rows","Reconnect/restart the repository and retry loading the transformation"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// before loading\nif ( !rep.isConnected() ) throw new IllegalStateException( \"Repository not connected\" );","typeGuard":"boolean canRead = rep != null && rep.isConnected();","tryCatchPattern":"try { meta.readRep( rep, metaStore, id_step, databases ); } catch ( KettleException e ) { log.error( \"Step info read failed; cause=\" + e.getCause(), e ); }","preventionTips":["Always inspect getCause() — this error wraps the real repository failure","Keep repository connections healthy and re-login after idle timeouts","Avoid manual edits to repository attribute tables","Back up transformations before repository migrations"],"tags":["kettle","repository","metadata","persistence"],"backgroundTag":"file-read-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"}