{"record":{"id":"b5dcf2d0e70db966","repo":"pentaho/pentaho-kettle","slug":"syslogmessage-error-messageempty","errorCode":null,"errorMessage":"SyslogMessage.Error.MessageEmpty","messagePattern":"SyslogMessage\\.Error\\.MessageEmpty","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/syslog/SyslogMessage.java","lineNumber":85,"sourceCode":"        throw new KettleException( BaseMessages.getString( PKG, \"SyslogMessage.Error.MessageFieldMissing\" ) );\n      }\n\n      // cache the position of the source filename field\n      data.indexOfMessageFieldName = getInputRowMeta().indexOfValue( meta.getMessageFieldName() );\n      if ( data.indexOfMessageFieldName < 0 ) {\n        // The field is unreachable !\n        throw new KettleException( BaseMessages.getString( PKG, \"SyslogMessage.Exception.CouldnotFindField\", meta\n            .getMessageFieldName() ) );\n      }\n\n    }\n\n    try {\n      // get message\n      String message = getInputRowMeta().getString( r, data.indexOfMessageFieldName );\n\n      if ( Utils.isEmpty( message ) ) {\n        throw new KettleException( BaseMessages.getString( PKG, \"SyslogMessage.Error.MessageEmpty\" ) );\n      }\n\n      // Send message\n      SyslogDefs.sendMessage( data.syslog, SyslogDefs.getPriority( meta.getPriority() ), message,\n          meta.isAddTimestamp(), data.datePattern, meta.isAddHostName() );\n\n      putRow( getInputRowMeta(), r ); // copy row to output rowset(s);\n\n      if ( checkFeedback( getLinesRead() ) ) {\n        if ( isDetailed() ) {\n          logDetailed( BaseMessages.getString( PKG, \"SyslogMessage.LineNumber\", getLinesRead() ) );\n        }\n      }\n    } catch ( Exception e ) {\n\n      boolean sendToErrorRow = false;\n      String errorMessage = null;\n","sourceCodeStart":67,"sourceCodeEnd":103,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/syslog/SyslogMessage.java#L67-L103","documentation":"Localized error thrown by the SyslogMessage step's processRow when the message obtained from the configured message field at the current input row is empty (or the row structure otherwise fails the message validity check). The step cannot send an empty syslog message, so it aborts with KettleException carrying the i18n key SyslogMessage.Error.MessageEmpty. Fix by ensuring each incoming row has a non-empty value in the message field before the step runs.","triggerScenarios":"Incoming row's message field contains null or \"\" for the current row; upstream step produced an empty value for that record.","commonSituations":"Optional source data with missing values; filter conditions upstream passing rows with blank message fields; JSON/XML source where the element is absent for some records.","solutions":["Filter out rows with empty message before the Syslog step","Replace nulls with a default message using an If Field Value Is Null or Replace in string step","Catch the error and skip/log the row instead of failing the transformation","Coalesce the message field upstream: NVL(field, 'default')"],"exampleFix":"// before\n// rows with empty message reach syslog step and fail\n// after\n// add a Filter rows step: message IS NOT NULL AND message <> \"\" before the syslog step","handlingStrategy":"validation","validationCode":"String msg = rowMeta.getString(row, idx);\nif (msg == null || msg.isEmpty()) { logBasic(\"Skipping row with empty message\"); return true; }","typeGuard":null,"tryCatchPattern":"try { ... } catch (KettleException e) { if (e.getMessage().contains(\"MessageEmpty\")) { logBasic(\"Skipping empty message row\"); return true; } throw e; }","preventionTips":["Filter out empty messages before the syslog step","Apply NVL/coalesce upstream for optional fields","Audit source data for null-heavy columns feeding this step"],"tags":["kettle","syslog","empty-value","data-quality"],"backgroundTag":"empty-required-field","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"}