{"record":{"id":"256f35f052d56b6d","repo":"pentaho/pentaho-kettle","slug":"webserviceavailablemeta-exception-unabletoreadstepinfo","errorCode":null,"errorMessage":"WebServiceAvailableMeta.Exception.UnableToReadStepInfo","messagePattern":"WebServiceAvailableMeta\\.Exception\\.UnableToReadStepInfo","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/webserviceavailable/WebServiceAvailableMeta.java","lineNumber":158,"sourceCode":"\n  public String getXML() {\n    StringBuilder retval = new StringBuilder();\n\n    retval.append( \"    \" + XMLHandler.addTagValue( \"urlField\", urlField ) );\n    retval.append( \"    \" + XMLHandler.addTagValue( \"readTimeOut\", readTimeOut ) );\n    retval.append( \"    \" + XMLHandler.addTagValue( \"connectTimeOut\", connectTimeOut ) );\n    retval.append( \"    \" + XMLHandler.addTagValue( \"resultfieldname\", resultfieldname ) );\n    return retval.toString();\n  }\n\n  private void readData( Node stepnode, List<DatabaseMeta> databases ) throws KettleXMLException {\n    try {\n      urlField = XMLHandler.getTagValue( stepnode, \"urlField\" );\n      connectTimeOut = XMLHandler.getTagValue( stepnode, \"connectTimeOut\" );\n      readTimeOut = XMLHandler.getTagValue( stepnode, \"readTimeOut\" );\n      resultfieldname = XMLHandler.getTagValue( stepnode, \"resultfieldname\" );\n    } catch ( Exception e ) {\n      throw new KettleXMLException( BaseMessages.getString(\n        PKG, \"WebServiceAvailableMeta.Exception.UnableToReadStepInfo\" ), e );\n    }\n  }\n\n  public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) throws KettleException {\n    try {\n      urlField = rep.getStepAttributeString( id_step, \"urlField\" );\n      connectTimeOut = rep.getStepAttributeString( id_step, \"connectTimeOut\" );\n      readTimeOut = rep.getStepAttributeString( id_step, \"readTimeOut\" );\n      resultfieldname = rep.getStepAttributeString( id_step, \"resultfieldname\" );\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"WebServiceAvailableMeta.Exception.UnexpectedErrorReadingStepInfo\" ), e );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {\n    try {","sourceCodeStart":140,"sourceCodeEnd":176,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/webserviceavailable/WebServiceAvailableMeta.java#L140-L176","documentation":"WebServiceAvailableMeta.readData (called from loadXML) wraps XML parsing of the step's urlField/connectTimeOut/readTimeOut/resultfieldname tags in a try/catch and rethrows as KettleXMLException 'Unable to read step info from XML'. The step definition in the .ktr could not be parsed.","triggerScenarios":"loadXML -> readData(stepnode); XMLHandler.getTagValue throws while reading the WebServiceAvailable step node (malformed/truncated XML, wrong node structure).","commonSituations":"Hand-edited or corrupted .ktr; upgrade schema mismatch; truncated download/transfer of the transformation file.","solutions":["Inspect the WebServiceAvailable step XML block in the .ktr for malformed tags and repair it.","Restore the file from backup/version control.","Recreate the step in Spoon and reconfigure urlField, timeouts, and result field.","Check the wrapped cause in the stack trace for the exact parser failure."],"exampleFix":"// before (truncated)\n<urlField>url</urlField\n// after\n<urlField>url</urlField><connectTimeOut>30000</connectTimeOut>","handlingStrategy":"try-catch","validationCode":"// Validate the .ktr parses before loading into metadata:\nDocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(ktrPath));","typeGuard":null,"tryCatchPattern":"try {\n  transMeta.loadXML(new FileInputStream(ktr), null, this);\n} catch (KettleXMLException e) {\n  logError(\"Unreadable step info in XML\", e);\n  // restore from backup\n}","preventionTips":["Avoid hand-editing step XML","Version-control .ktr files","Verify file integrity after transfers"],"tags":["pdi","kettle","xml-parse","webservice","serialization"],"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"}