{"record":{"id":"3502b4972305a032","repo":"pentaho/pentaho-kettle","slug":"jobentryevaltablecontent-unableloadxml","errorCode":null,"errorMessage":"JobEntryEvalTableContent.UnableLoadXML","messagePattern":"JobEntryEvalTableContent\\.UnableLoadXML","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/evaluatetablecontent/JobEntryEvalTableContent.java","lineNumber":211,"sourceCode":"  public void loadXML( Node entrynode, List<DatabaseMeta> databases, List<SlaveServer> slaveServers,\n    Repository rep, IMetaStore metaStore ) throws KettleXMLException {\n    try {\n      super.loadXML( entrynode, databases, slaveServers );\n      String dbname = XMLHandler.getTagValue( entrynode, \"connection\" );\n      connection = DatabaseMeta.findDatabase( databases, dbname );\n      schemaname = XMLHandler.getTagValue( entrynode, \"schemaname\" );\n      tablename = XMLHandler.getTagValue( entrynode, \"tablename\" );\n      successCondition =\n        getSucessConditionByCode( Const.NVL( XMLHandler.getTagValue( entrynode, \"success_condition\" ), \"\" ) );\n      limit = Const.NVL( XMLHandler.getTagValue( entrynode, \"limit\" ), \"0\" );\n      useCustomSQL = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"is_custom_sql\" ) );\n      useVars = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"is_usevars\" ) );\n      customSQL = XMLHandler.getTagValue( entrynode, \"custom_sql\" );\n      addRowsResult = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"add_rows_result\" ) );\n      clearResultList = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"clear_result_rows\" ) );\n\n    } catch ( KettleException e ) {\n      throw new KettleXMLException( BaseMessages.getString( PKG, \"JobEntryEvalTableContent.UnableLoadXML\" ), e );\n    }\n  }\n\n  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,\n    List<SlaveServer> slaveServers ) throws KettleException {\n    try {\n      connection = rep.loadDatabaseMetaFromJobEntryAttribute( id_jobentry, \"connection\", \"id_database\", databases );\n\n      schemaname = rep.getJobEntryAttributeString( id_jobentry, \"schemaname\" );\n      tablename = rep.getJobEntryAttributeString( id_jobentry, \"tablename\" );\n      successCondition =\n        getSuccessConditionByCode( Const.NVL(\n          rep.getJobEntryAttributeString( id_jobentry, \"success_condition\" ), \"\" ) );\n      limit = rep.getJobEntryAttributeString( id_jobentry, \"limit\" );\n      useCustomSQL = rep.getJobEntryAttributeBoolean( id_jobentry, \"is_custom_sql\" );\n      useVars = rep.getJobEntryAttributeBoolean( id_jobentry, \"is_usevars\" );\n      addRowsResult = rep.getJobEntryAttributeBoolean( id_jobentry, \"add_rows_result\" );\n      clearResultList = rep.getJobEntryAttributeBoolean( id_jobentry, \"clear_result_rows\" );","sourceCodeStart":193,"sourceCodeEnd":229,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/evaluatetablecontent/JobEntryEvalTableContent.java#L193-L229","documentation":"JobEntryEvalTableContent.loadXML() reads this 'Evaluate rows number in a table' entry's settings (connection, schema, table, custom_sql, flags) from the job XML node; a KettleException is rethrown as KettleXMLException with localized message 'JobEntryEvalTableContent.UnableLoadXML'. It means the entry could not be deserialized from the .kjb file.","triggerScenarios":"Loading a job XML containing a JobEntryEvalTableContent node where XMLHandler.getTagValue calls or the surrounding KettleException-throwing logic (e.g. super.loadXML or database metadata lookup) fails.","commonSituations":"Corrupted or hand-edited job XML; missing expected tags; XML from an incompatible Pentaho version; shared database connection referenced in the XML cannot be resolved.","solutions":["Inspect the chained KettleException for the failing element.","Repair the job XML in Spoon, ensuring all expected tags (custom_sql, is_usevars, add_rows_result, clear_result_rows, etc.) are present.","Re-export the job from a compatible Pentaho version.","Verify referenced shared connections (DB metadata) resolve correctly."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if (XMLHandler.getSubNode(entrynode, \"custom_sql\") == null) {\n  throw new IllegalArgumentException(\"Missing custom_sql in EvalTableContent XML\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  JobMeta meta = new JobMeta(jobFile, rep, metaStore);\n} catch (KettleXMLException e) {\n  logError(\"EvalTableContent load failed: \" + e.getMessage(), e);\n  // restore from backup or fix the job XML\n}","preventionTips":["Do not hand-edit job XML; use Spoon.","Verify shared DB connections referenced by the entry resolve at load time.","Keep exporter/importer Pentaho versions compatible.","Back up .kjb files before upgrades or merges."],"tags":["xml","deserialization","job-entry","kettle"],"backgroundTag":"json-unmarshal-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"}