pentaho/pentaho-kettle · error · KettleException

Error skipping bytes to the next block of data

Error message

Error skipping  bytes to the next block of data

What it means

Wrapper error in ParGzipCsvInput.skipToNextBlock: an IOException occurred while skipping bytesToSkip bytes over the compressed stream to reach the next block boundary (the loop that accumulates bytesSkipped failed). The number of bytes and the cause are included.

Solutions

  1. Check the gzip file for truncation or corruption; a broken stream surfaces here during block seeking
  2. Verify the file is a block-oriented parallel gzip file, not a plain gzip stream
  3. Inspect the chained IOException for the underlying read failure
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at engine/src/main/java/org/pentaho/di/trans/steps/parallelgzipcsv/ParGzipCsvInput.java:211 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/parallelgzipcsv/ParGzipCsvInput.java:211

            return true; // nothing more to be found in the file, stop right here.
          }
          bytesSkipped += n;
        }

        data.fileReadPosition += bytesSkipped;

        // Now we need to clear the buffer, reset everything...
        //
        clearBuffer();

        // Now get read until the next CR:
        //
        readOneRow( false );

        return false;

      } catch ( IOException e ) {
        throw new KettleException( "Error skipping " + bytesToSkip + " bytes to the next block of data", e );
      }
    } else {
      // this situation should never happen.
      //
      return true; // stop processing the file
    }
  }

  private void getFilenamesFromPreviousSteps() throws KettleException {
    List<String> filenames = new ArrayList<String>();
    boolean firstRow = true;
    int index = -1;
    Object[] row = getRow();
    while ( row != null ) {

      if ( firstRow ) {
        firstRow = false;

View on GitHub (pinned to f3058517a1)