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
- Open the Palo Dim Input step dialog and select an existing PALO connection (or define a new one).
- Save the transformation so the connection reference persists.
- 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
- Always select a connection when adding the step
- Verify connection references survive transformation migrations
- Delete-and-recreate steps whose connection reference was orphaned
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
- A connection of type PALO is expected
- Number of levels must be greater that 0 to process the rows
- A connection of type PALO is expected
- A server socket allocation always has to accompanied by…
- DimensionLookupMeta.Error.NoTechnicalKeySpecified
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)