pentaho/pentaho-kettle · error · KettleException

Failed to add row to the row buffer

Error message

Failed to add row to the row buffer

What it means

While processing each input row the step adds element names/rows to an internal batch buffer inside a try block; any exception there (e.g. from the Palo helper adding elements or the element lookup) is wrapped as 'Failed to add row to the row buffer'. Every 100 buffered rows it commits via commitBatch().

Solutions

  1. Inspect the wrapped cause in the stack trace to identify the failing row and value
  2. Validate upstream data: no nulls in level fields and types match the configured fieldtype per level
  3. Reduce batch size / check the Palo server connection stability
  4. Test with a small sample of rows (Preview) to isolate the bad record

Example fix

// before
String element = row[i]; // may be null
// after
if (row[i] == null) row[i] = ""; // or filter/repair nulls upstream
Defensive patterns

Strategy: validation

Validate before calling

// validate row values before adding to buffer
for (int idx : data.indexes) {
  if (idx >= 0 && rowData[idx] == null) throw new KettleException("Null element value at index " + idx);
}

Type guard

boolean isValidElement(Object v) { return v != null && !v.toString().isEmpty(); }

Try / catch

try { addToBatch(row); } catch (Exception e) {
  logError("Row buffer add failed: " + e.getCause(), e); setErrors(1);
}

Prevention

When it happens

Trigger: An exception is thrown while adding a row's element data to the batch: element type/format mismatch with the Palo dimension, null or malformed values for a level, or a Palo connection error mid-batch.

Common situations: Incoming field value doesn't match the level's configured field type; nulls fed where element names are required; Palo server connection dropped after earlier rows succeeded.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/3dcd8ab598ff445f. Report an issue: GitHub.

Appendix: source

Thrown at plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/dimoutput/PaloDimOutput.java:148

                child = this.consolidations.getConsolidationElement( elementName );
              }

              if ( parent != null ) {
                parent.addChild( child, consolidation_factor );
              }
            }

            parent = child;
          }
        }

        // Should probably make this a parameter on the dialog
        if ( data.elementNamesBatch.size() % 100 == 0 ) {
          commitBatch();
        }

      } catch ( Exception e ) {
        throw new KettleException( "Failed to add row to the row buffer", e );
      }
    }

    // this also waits for a previous step to be finished.
    if ( r == null ) { // no more input to be expected...
      try {
        if ( data.elementNamesBatch.size() > 0 ) {
          commitBatch();
        }

        // Because we add rows in bulk, the dimension cache isn't complete. It only keeps a list
        // of added items for validation. If the cache must be pre-loaded, pre-load it now.
        data.helper.clearDimensionCache();
        data.helper.loadDimensionCache( meta.getDimension(), meta.getEnableElementCache(), meta
          .getPreloadElementCache() );

        // if it's the last row create the dimension
        this.logBasic( "All rows have been added. Looking for consolidations" );

View on GitHub (pinned to f3058517a1)