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 by PaloCellInputMeta.getFields when databaseMeta is null. getFields must connect to the Palo server to compute the output row layout from the cube's dimensions, which is impossible without a configured connection.
Solutions
- Assign a Palo database connection to the step in the transformation dialog.
- Confirm the shared connection exists in the repository/metastore and is referenced correctly.
- Re-export/import the transformation including connection definitions.
- Check databaseMeta before executing getFields programmatically and fail early with a clear message.
Example fix
// before
meta.getFields(...); // throws if connection not set
// after
if (meta.getDatabaseMeta() == null) {
meta.setDatabaseMeta(transMeta.findDatabase("PaloServer"));
}
meta.getFields(...); Defensive patterns
Strategy: validation
Validate before calling
if (meta.getDatabaseMeta() == null) { meta.setDatabaseMeta(transMeta.findDatabase("PaloServer")); if (meta.getDatabaseMeta() == null) throw new IllegalStateException("Palo connection not configured"); } Try / catch
try { rowMeta = buildRow(meta); } catch (KettleStepException e) { /* connection missing — configure before run */ } Prevention
- Always verify the step has a database connection before executing
- Export transformations with connection definitions included
- Check for deleted shared connections after repository changes
When it happens
Trigger: Row-layout negotiation (getFields) invoked while the step's database connection field is unset — e.g. transformation loaded without its shared connection, or connection never assigned in the dialog.
Common situations: Transformation imported without referenced connection objects; connection deleted from the repository after the step was configured; running a transformation built programmatically without setting the connection.
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
- A connection of type PALO is expected
- All fields must have an output type to do the preview
- Caught a number format exception converting minimum length…
- Commit size must be an integer.
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/21a7922b197033f7.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/cellinput/PaloCellInputMeta.java:134
String fieldName = XMLHandler.getTagValue( fnode, "fieldname" );
String fieldType = XMLHandler.getTagValue( fnode, "fieldtype" );
this.fields.add( new DimensionField( dimensionName, fieldName, fieldType ) );
}
} catch ( Exception e ) {
throw new KettleXMLException( "Unable to load step info from XML", e );
}
}
@Override
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.getCellRowMeta( this.cube, this.fields, this.cubeMeasure );
row.addRowMeta( rowMeta );
} finally {
helper.disconnect();
}
} catch ( Exception e ) {
throw new KettleStepException( e );
}
}
@Override
public String getXML() {
StringBuffer retval = new StringBuffer();View on GitHub (pinned to f3058517a1)