pentaho/pentaho-kettle · error · KettleStepException

There is no Palo database server connection defined

Error message

There is no Palo database server connection defined

What it means

Thrown from PaloDimInputMeta.getFields when the step tries to determine its output row layout but databaseMeta is null — i.e., no Palo database connection has been defined for the step. The step needs to connect to the Palo server to query dimension levels and build the row metadata.

Solutions

  1. Open the Palo Dim Input step dialog and select an existing PALO connection (or define a new one).
  2. Save the transformation so the connection reference persists.
  3. If the connection existed but was deleted, re-add it with the same settings.

Example fix

// before (step XML without connection)
<diminput><levels>...</levels></diminput>
// after
<diminput><connection>palo-conn</connection><levels>...</levels></diminput>
Defensive patterns

Strategy: validation

Validate before calling

// Guard before getFields/building row layout
if (meta.getDatabaseMeta() == null) {
  throw new IllegalStateException("Palo Dim Input step has no connection defined");
}

Type guard

boolean hasConnection(PaloDimInputMeta meta) {
  return meta != null && meta.getDatabaseMeta() != null;
}

Try / catch

try {
  rowMeta = buildRowMeta(meta, ...);
} catch (KettleStepException e) {
  if (e.getMessage().contains("no Palo database")) {
    log.error("Select a PALO connection in the step dialog");
  }
}

Prevention

When it happens

Trigger: getFields() is called (e.g. during transformation validation, preview, or when downstream steps ask for row metadata) while the step's connection field was never set in the dialog.

Common situations: Freshly added Palo Dim Input step where the user forgot to pick a connection; transformation XML migrated between systems losing the connection reference; connection deleted from the transformation while the step still referenced it.

Understand the failure class

Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.

Related errors


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

Appendix: source

Thrown at plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/diminput/PaloDimInputMeta.java:131

        String levelNumber = XMLHandler.getTagValue( fnode, "levelnumber" );
        String fieldName = XMLHandler.getTagValue( fnode, "fieldname" );
        String fieldType = XMLHandler.getTagValue( fnode, "fieldtype" );
        this.levels.add( new PaloDimensionLevel( levelName, Integer.parseInt( levelNumber ), fieldName, fieldType ) );
      }
    } catch ( Exception e ) {
      throw new KettleXMLException( "Unable to load step info from XML", e );
    }
  }

  public void setDefault() {
  }

  @Override
  public void getFields( Bowl bowl, final RowMetaInterface row, final String origin, final RowMetaInterface[] info,
      final StepMeta nextStep, final VariableSpace space, Repository repository, IMetaStore metaStore )
    throws KettleStepException {
    if ( databaseMeta == null ) {
      throw new KettleStepException( "There is no Palo database server connection defined" );
    }
    final PaloHelper helper = new PaloHelper( databaseMeta, DefaultLogLevel.getLogLevel() );
    try {
      helper.connect();
      try {
        final RowMetaInterface rowMeta =
            helper.getDimensionRowMeta( this.getDimension(), this.getLevels(), this.getBaseElementsOnly() );
        row.addRowMeta( rowMeta );
      } finally {
        helper.disconnect();
      }
    } catch ( Exception e ) {
      throw new KettleStepException( e );
    }
  }

  public String getXML() {
    StringBuffer retval = new StringBuffer();

View on GitHub (pinned to f3058517a1)