pentaho/pentaho-kettle · error · KettleXMLException
Unable to load job entry of type 'SendNagiosPassiveCheck'…
Error message
Unable to load job entry of type 'SendNagiosPassiveCheck' from XML node
What it means
JobEntrySendNagiosPassiveCheck.loadXML wraps any KettleXMLException thrown while parsing the SendNagiosPassiveCheck entry's XML node (hostname, port, message, encryptionMode, level, etc.) into a KettleXMLException with the message 'Unable to load job entry of type SendNagiosPassiveCheck from XML node'. The parse error is the cause. It means the entry's XML could not be deserialized.
Solutions
- Validate and repair the XML for this entry node (check encryptionMode/level codes are valid)
- Restore the .kjb from backup or version control
- Recreate the SendNagiosPassiveCheck entry in Spoon and re-save the job
Example fix
// before
JobMeta job = new JobMeta(fileInputStream, null, null); // throws on bad node
// after
try {
job = new JobMeta(fileInputStream, null, null);
} catch (KettleXMLException e) {
logError("Bad XML in Nagios passive check entry: " + e.getCause(), e);
// use backup copy or fix the entry XML
} Defensive patterns
Strategy: try-catch
Validate before calling
Document doc = XMLHandler.loadXMLFile(kjbFile);
if (doc == null) throw new KettleException("Invalid job XML: " + kjbFile); Try / catch
try {
jobMeta = new JobMeta(inputStream, null, null);
} catch (KettleXMLException e) {
logError("Cannot load SendNagiosPassiveCheck entry: " + e.getCause(), e);
// fix the entry XML or restore from backup
} Prevention
- Don't hand-edit encryptionMode/level codes in .kjb XML; use Spoon dropdowns
- Validate job XML after cross-version transfers
- Keep versioned backups of job files for recovery
When it happens
Trigger: Loading a .kjb file where the <entry type='SEND_NAGIOS_PASSIVE_CHECK'> node fails XMLHandler parsing, or getEncryptionModeByCode/getLevelByCode conversion within the try block throws KettleXMLException on an unknown code in the XML.
Common situations: Hand-edited .kjb with an invalid encryptionMode/level code; job XML from an incompatible Pentaho version; truncated or corrupt file transfer.
Related errors
- ERROR_0001
- JobDosToUnix.Error.Exception.UnableLoadXML
- JobEntryDeleteFolders.UnableToLoadFromXml
- JobEntryDeleteResultFilenames.CanNotLoadFromXML
- JobEntrySimple.Error.Exception.UnableLoadXML
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/43c1afe9c738e68f.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/job/entries/sendnagiospassivecheck/JobEntrySendNagiosPassiveCheck.java:259
public void loadXML( Node entrynode, List<DatabaseMeta> databases, List<SlaveServer> slaveServers,
Repository rep, IMetaStore metaStore ) throws KettleXMLException {
try {
super.loadXML( entrynode, databases, slaveServers );
port = XMLHandler.getTagValue( entrynode, "port" );
serverName = XMLHandler.getTagValue( entrynode, "servername" );
responseTimeOut = XMLHandler.getTagValue( entrynode, "responseTimeOut" );
connectionTimeOut = XMLHandler.getTagValue( entrynode, "connectionTimeOut" );
password = XMLHandler.getTagValue( entrynode, "password" );
senderServerName = XMLHandler.getTagValue( entrynode, "senderServerName" );
senderServiceName = XMLHandler.getTagValue( entrynode, "senderServiceName" );
message = XMLHandler.getTagValue( entrynode, "message" );
encryptionMode = getEncryptionModeByCode( XMLHandler.getTagValue( entrynode, "encryptionMode" ) );
level = getLevelByCode( XMLHandler.getTagValue( entrynode, "level" ) );
} catch ( KettleXMLException xe ) {
throw new KettleXMLException( "Unable to load job entry of type 'SendNagiosPassiveCheck' from XML node", xe );
}
}
public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,
List<SlaveServer> slaveServers ) throws KettleException {
try {
port = rep.getJobEntryAttributeString( id_jobentry, "port" );
serverName = rep.getJobEntryAttributeString( id_jobentry, "servername" );
password = rep.getJobEntryAttributeString( id_jobentry, "password" );
responseTimeOut = rep.getJobEntryAttributeString( id_jobentry, "responseTimeOut" );
connectionTimeOut = rep.getJobEntryAttributeString( id_jobentry, "connectionTimeOut" );
senderServerName = rep.getJobEntryAttributeString( id_jobentry, "senderServerName" );
senderServiceName = rep.getJobEntryAttributeString( id_jobentry, "senderServiceName" );
message = rep.getJobEntryAttributeString( id_jobentry, "message" );
encryptionMode = getEncryptionModeByCode( rep.getJobEntryAttributeString( id_jobentry, "encryptionMode" ) );View on GitHub (pinned to f3058517a1)