pentaho/pentaho-kettle · error · KettleException
SyslogMessage.Error.MessageFieldMissing
Error message
SyslogMessage.Error.MessageFieldMissing
What it means
First-row validation in SyslogMessage.processRow: the step's Message field setting is empty, so there is no stream field to take the syslog message text from. Fires once, on the first row, before any message is sent.
Solutions
- Set 'Message fieldname' in the Syslog Message step dialog to an existing incoming field
- Re-save the transformation so the fieldname attribute is persisted
- Add a check() pass or validation before running to catch the blank setting early
- If the field comes from an upstream step, verify that step emits it
Example fix
// before
meta.setMessageFieldName("");
// after
meta.setMessageFieldName("message"); Defensive patterns
Strategy: validation
Validate before calling
if (meta.getMessageFieldName() == null || meta.getMessageFieldName().trim().isEmpty()) { throw new IllegalArgumentException("Syslog Message: message fieldname must be set"); } Try / catch
try { processRow(); } catch (KettleException e) { if (e.getMessage().contains("MessageFieldMissing")) { logError("Configure message fieldname"); setErrors(1); stopAll(true); } } Prevention
- Configure the message fieldname immediately after adding the step
- Run check() on the transformation to catch blank settings
- Preview rows before running the full transformation
When it happens
Trigger: Executing the Syslog Message transform with the 'Message fieldname' left blank in the step dialog.
Common situations: Fresh step dropped onto canvas and run with defaults; XML/rep import lost the fieldname attribute; refactoring renamed the setting and old transformations show blank value.
Understand the failure class
Background: "must not be empty", "cannot be empty" — required-field validation errors across open-source libraries — this error's family across 41 libraries.
Related errors
- ChangeFileEncoding.Error.FilenameFieldMissing
- ChangeFileEncoding.Error.TargetFilenameFieldMissing
- ColumnExists.Error.TablenameFieldMissing
- GetFilesRowsCount.Log.NoField
- GetTableNames.Log.NoSchemaField
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/954064667e6ed99c.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/syslog/SyslogMessage.java:67
Trans trans ) {
super( stepMeta, stepDataInterface, copyNr, transMeta, trans );
}
public boolean processRow( StepMetaInterface smi, StepDataInterface sdi ) throws KettleException {
meta = (SyslogMessageMeta) smi;
data = (SyslogMessageData) sdi;
Object[] r = getRow(); // Get row from input rowset & set row busy!
if ( r == null ) { // no more input to be expected...
setOutputDone();
return false;
}
if ( first ) {
first = false;
// Check if message field is provided
if ( Utils.isEmpty( meta.getMessageFieldName() ) ) {
throw new KettleException( BaseMessages.getString( PKG, "SyslogMessage.Error.MessageFieldMissing" ) );
}
// cache the position of the source filename field
data.indexOfMessageFieldName = getInputRowMeta().indexOfValue( meta.getMessageFieldName() );
if ( data.indexOfMessageFieldName < 0 ) {
// The field is unreachable !
throw new KettleException( BaseMessages.getString( PKG, "SyslogMessage.Exception.CouldnotFindField", meta
.getMessageFieldName() ) );
}
}
try {
// get message
String message = getInputRowMeta().getString( r, data.indexOfMessageFieldName );
if ( Utils.isEmpty( message ) ) {
throw new KettleException( BaseMessages.getString( PKG, "SyslogMessage.Error.MessageEmpty" ) );View on GitHub (pinned to f3058517a1)