pentaho/pentaho-kettle · error · KettleStepException
CubeInputMeta.Exception.UnableToReadMetaData
CubeInputMeta.Exception.UnableToReadMetaData
Error message
CubeInputMeta.Exception.UnableToReadMetaData
What it means
CubeInputMeta.getFields() reads the row layout stored inside the cube file via DataInputStream. A KettleFileException while reading that metadata is wrapped in this KettleStepException, meaning the cube file's row metadata could not be deserialized.
Solutions
- Verify the file path points to a valid PDI cube file produced by CubeOutput.
- Regenerate the cube file with CubeOutput from a working transformation.
- Check that PDI versions used to write and read the cube are compatible.
Defensive patterns
Strategy: try-catch
Try / catch
try {
meta.getFields( row, name, null, null, null, metaStore );
} catch ( KettleStepException e ) {
logError( "Cube file metadata unreadable — regenerate the cube: " + e.getMessage(), e );
} Prevention
- Regenerate cube files whenever the producing transformation changes.
- Verify cube files after transfer (size/checksum).
- Keep writer and reader PDI versions compatible.
When it happens
Trigger: getFields (called by testGetFields or preview) opens the configured cube file and KettleFileException is thrown while reading the embedded RowMeta.
Common situations: Cube file corrupt or truncated; file written by an incompatible PDI version; wrong file configured in the step.
Understand the failure class
Background: "failed to read file", EACCES, ENOENT and "could not read <path>" errors: when a program can't read a file from disk — this error's family across 49 libraries.
Related errors
- ColumnExistsMeta.Exception.UnableToReadStepInfo
- CreditCardValidatorMeta.Exception.UnableToReadStepInfo
- ScriptMeta.Exception.UnableToLoadStepInfoFromXML
- SETVARIABLE0004
- StreamLookupMeta.Exception.UnableToLoadStepInfoFromXML
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/d9e4755d33073406.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/cubeinput/CubeInputMeta.java:171
}
@Override public void getFields( Bowl bowl, RowMetaInterface r, String name, RowMetaInterface[] info, StepMeta nextStep,
VariableSpace space, Repository repository,
IMetaStore metaStore ) throws KettleStepException {
GZIPInputStream fis = null;
DataInputStream dis = null;
try {
InputStream is = KettleVFS.getInstance( bowl ).getInputStream( space.environmentSubstitute( filename ), space );
fis = new GZIPInputStream( is );
dis = new DataInputStream( fis );
RowMetaInterface add = new RowMeta( dis );
for ( int i = 0; i < add.size(); i++ ) {
add.getValueMeta( i ).setOrigin( name );
}
r.mergeRowMeta( add );
} catch ( KettleFileException kfe ) {
throw new KettleStepException(
BaseMessages.getString( PKG, "CubeInputMeta.Exception.UnableToReadMetaData" ), kfe );
} catch ( IOException e ) {
throw new KettleStepException( BaseMessages.getString(
PKG, "CubeInputMeta.Exception.ErrorOpeningOrReadingCubeFile" ), e );
} finally {
try {
if ( fis != null ) {
fis.close();
}
if ( dis != null ) {
dis.close();
}
} catch ( IOException ioe ) {
throw new KettleStepException( BaseMessages.getString(
PKG, "CubeInputMeta.Exception.UnableToCloseCubeFile" ), ioe );
}
}
}View on GitHub (pinned to f3058517a1)