pentaho/pentaho-kettle · error · KettleException

Error serializing rows of data to the fifo file

Error message

Error serializing rows of data to the fifo file

What it means

Wrapped KettleException raised in writeRowToBulk when row serialization to the fifo file failed AND the sqlRunner's checkExcn() itself threw (loadEx). The load-side exception is used as the cause, i.e. the Ingres load process reported the failure, not the fifo writer per se.

Solutions

  1. Inspect the cause (loadEx) and the ingres process log to find why the load process failed.
  2. Validate row data types/lengths against the target table schema before loading.
  3. Ensure the fifo file location is writable and the Ingres process can run on this host.
  4. Retry the transformation with a small data sample to isolate the offending rows.
Defensive patterns

Strategy: try-catch

Try / catch

try { loader.processRow(); } catch (KettleException e) { Throwable cause = e.getCause(); /* if cause came from checkExcn, consult the load process error log */ }

Prevention

When it happens

Trigger: During processRow, writing a row to the fifo throws; the code then calls data.sqlRunner.checkExcn(), which detects an exception in the running sql/load process and throws, producing this wrapper.

Common situations: The vwload/ingres process died (bad SQL, permissions on fifo, disk full); malformed row data rejected by the loader; fifo removed or filesystem issues.

Related errors


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

Appendix: source

Thrown at plugins/ivw-bulk-loader/impl/src/main/java/org/pentaho/di/trans/steps/ivwloader/IngresVectorwiseLoader.java:573

                write( data.doubleQuote );
              } else {
                write( data.getBytes( string ) );
              }
            }
          }
        }
      }

      // finally write a newline
      //
      write( data.newline );
    } catch ( Exception e ) {
      // If something went wrong with the import,
      // rather return that error, in stead of "Pipe Broken"
      try {
        data.sqlRunner.checkExcn();
      } catch ( Exception loadEx ) {
        throw new KettleException( "Error serializing rows of data to the fifo file", loadEx );
      }

      throw new KettleException( "Error serializing rows of data to the fifo file", e );
    }

  }

  private void write( byte[] content ) throws IOException {

    if ( content == null || content.length == 0 ) {
      return;
    }

    // If exceptionally we have a block of data larger than the buffer simply dump it to disk!
    //
    if ( content.length > data.byteBuffer.capacity() ) {
      // It should be exceptional to have a single field containing over 50k data
      //

View on GitHub (pinned to f3058517a1)