pentaho/pentaho-kettle · error · KettleXMLException

CubeInputMeta.Exception.UnableToLoadStepInfo

CubeInputMeta.Exception.UnableToLoadStepInfo

Error message

CubeInputMeta.Exception.UnableToLoadStepInfo

What it means

CubeInputMeta.readData parses the step's XML definition (file name, row limit, add-to-result flag). If any XMLHandler access throws, it wraps the cause in this KettleXMLException indicating the step info could not be loaded from XML.

Solutions

  1. Fix or regenerate the transformation XML so the CubeInput step node contains <file><name> and <limit> tags.
  2. Re-save the transformation from Spoon to produce well-formed XML.
  3. Check the root cause (the wrapped exception) for the exact XML parsing problem.

Example fix

// before
<step><type>CubeInput</type></step>
// after
<step><type>CubeInput</type><file><name>data.cube</name></file><limit>0</limit></step>
Defensive patterns

Strategy: try-catch

Try / catch

try {
  meta.loadXML( stepnode, databases, metaStore );
} catch ( KettleXMLException e ) {
  logError( "CubeInput step XML invalid, re-save transformation in Spoon: " + e.getMessage(), e );
}

Prevention

When it happens

Trigger: loadXML encounters a malformed stepnode subtree — missing/malformed <file><name> or <limit> tags, or corrupted transformation XML.

Common situations: Hand-edited .ktr files; transformations exported from newer PDI versions parsed by older ones; truncated XML files.

Related errors


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

Appendix: source

Thrown at plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/cubeinput/CubeInputMeta.java:144

   *          The addfilenameresult to set.
   */
  public void setAddResultFile( boolean addfilenameresult ) {
    this.addfilenameresult = addfilenameresult;
  }

  @Override public Object clone() {
    CubeInputMeta retval = (CubeInputMeta) super.clone();
    return retval;
  }

  private void readData( Node stepnode ) throws KettleXMLException {
    try {
      filename = XMLHandler.getTagValue( stepnode, "file", "name" );
      rowLimit = XMLHandler.getTagValue( stepnode, "limit" );
      addfilenameresult = "Y".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, "addfilenameresult" ) );

    } catch ( Exception e ) {
      throw new KettleXMLException(
        BaseMessages.getString( PKG, "CubeInputMeta.Exception.UnableToLoadStepInfo" ), e );
    }
  }

  @Override public void setDefault() {
    filename = "file";
    rowLimit = "0";
    addfilenameresult = false;
  }

  @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 );

View on GitHub (pinned to f3058517a1)