{"record":{"id":"be7bff661f98fbfb","repo":"pentaho/pentaho-kettle","slug":"gploadmeta-exception","errorCode":null,"errorMessage":"GPLoadMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository","messagePattern":"GPLoadMeta\\.Exception\\.UnexpectedErrorReadingStepInfoFromRepository","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/gpload/core/src/main/java/org/pentaho/di/trans/steps/gpload/GPLoadMeta.java","lineNumber":493,"sourceCode":"\n      int numberOfLocalHosts = rep.countNrStepAttributes( id_step, \"local_host\" );\n      allocateLocalHosts( numberOfLocalHosts );\n      for ( int i = 0; i < numberOfLocalHosts; i++ ) {\n        localHosts[i] = rep.getStepAttributeString( id_step, i, \"local_host\" );\n      }\n\n      int nrvalues = rep.countNrStepAttributes( id_step, \"stream_name\" );\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        matchColumn[i] = rep.getStepAttributeBoolean( id_step, i, \"match_column\" );\n        updateColumn[i] = rep.getStepAttributeBoolean( id_step, i, \"update_column\" );\n      }\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString( PKG,\n          \"GPLoadMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository\" ), e );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step )\n    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      rep.saveStepAttribute( id_transformation, id_step, \"error_table\", errorTableName );\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, \"gpload_path\", gploadPath );\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, \"delimiter\", delimiter );","sourceCodeStart":475,"sourceCodeEnd":511,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/gpload/core/src/main/java/org/pentaho/di/trans/steps/gpload/GPLoadMeta.java#L475-L511","documentation":"GPLoadMeta.readRep() loads step settings from the repository database; any exception is wrapped in a KettleException with this message. It signals a failure while reading GPload attributes (connection, table, field names, masks, match/update columns) for the given step id.","triggerScenarios":"Repository calls inside readRep (getStepAttributeString/getStepAttributeBoolean) throw — repository connection lost mid-read, schema mismatch in R_STEP_ATTRIBUTE, or corrupted/missing rows for id_step.","commonSituations":"Repository database unavailable or restarted during load; repository schema version older than the plugin expects; rows deleted or corrupted in the repository tables; permissions issues reading step attributes.","solutions":["Verify repository connectivity and retry the transformation load","Check repository schema version and run the repository upgrade/repair tools","Inspect the wrapped cause (e.getCause()) for the underlying SQL/repository error","Delete and re-create the step (re-save its settings) if its repository rows are corrupt"],"exampleFix":"// before\n// step attributes partially missing in repository for id_step\n// after\n// re-open the step in Spoon, re-enter GPload settings, and Save to repopulate attributes","handlingStrategy":"try-catch","validationCode":"// before reading: confirm repository reachable and step id has attributes\nif (rep == null || !rep.isConnected()) throw new IllegalStateException(\"Repository not connected\");\nList<Object[]> attrs = rep.getStepAttributes(id_step); // pseudo-check; fail fast if empty/corrupt","typeGuard":null,"tryCatchPattern":"try { loadTransFromRepository(...) } catch (KettleException e) {\n  if (e.getMessage().contains(\"UnexpectedErrorReadingStepInfoFromRepository\")) {\n    logError(\"Repository read failed for step \" + id_step + \": \" + e.getCause());\n  }\n  throw e;\n}","preventionTips":["Keep the repository database reachable and monitored during PDI runs","Run repository upgrade scripts after PDI version changes","Back up R_STEP_ATTRIBUTE rows before bulk edits","Use a repository user with sufficient read privileges"],"tags":["kettle","repository","database","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"}