pentaho/pentaho-kettle · error · KettleException
Unable to save step of type 'get pop' to the repository for…
Error message
Unable to save step of type 'get pop' to the repository for id_step=
What it means
MailInputMeta.saveRep() wraps a KettleDatabaseException thrown while persisting the 'Get POP' (Mail Input) step's field attributes (field_name, field_column) to the repository. It signals the repository write failed and the step metadata could not be saved; the database exception is attached as the cause.
Solutions
- Check the nested KettleDatabaseException cause for the underlying SQL error
- Verify repository database connectivity (reconnect / test connection)
- Confirm the DB user has INSERT/UPDATE privileges on the step attribute tables
- Run the repository upgrade scripts if the schema is outdated, then retry the save
Defensive patterns
Strategy: try-catch
Try / catch
try {
meta.saveRep( rep, metaStore, transMeta.getObjectId(), stepId );
} catch ( KettleException e ) {
if ( e.getCause() instanceof KettleDatabaseException ) {
// check DB connectivity/permissions before retrying
}
} Prevention
- Test the repository DB connection before large save operations
- Ensure the repository user has write privileges on step attribute tables
- Keep the repository schema upgraded to the PDI version in use
When it happens
Trigger: Calling saveRep() with a Repository whose saveStepAttribute() throws KettleDatabaseException — repository DB down, connection dropped, constraint violation, or insufficient permissions on R_STEP_ATTRIBUTE.
Common situations: Saving a transformation when the repository database connection has timed out, the DB user lacks write rights, or the repository schema is out of date after a Pentaho upgrade.
Related errors
- AddSequenceMeta.Exception.UnableToSaveStepInfo
- AggregateRowsMeta.Exception.UnableToSaveStepInfo
- AnalyticQueryMeta.Exception.UnableToSaveStepInfoToRepository
- Erreur inattendue
- ERROR_0003
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/aa1380c8e01c3f73.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/email-messages/impl/src/main/java/org/pentaho/di/trans/steps/mailinput/MailInputMeta.java:476
rep.saveStepAttribute( id_transformation, id_step, TAG_PROXY_USERNAME, proxyUserName );
rep.saveStepAttribute( id_transformation, id_step, TAG_USE_DYNAMIC_FOLDER, useDynamicFolder );
rep.saveStepAttribute( id_transformation, id_step, TAG_FOLDER_FIELD, folderField );
rep.saveStepAttribute( id_transformation, id_step, TAG_ROW_LIMIT, rowLimit );
rep.saveStepAttribute( id_transformation, id_step, TAG_USE_BATCH, useBatch );
rep.saveStepAttribute( id_transformation, id_step, TAG_BATCH_SIZE, batchSize );
rep.saveStepAttribute( id_transformation, id_step, TAG_START_MSG, start );
rep.saveStepAttribute( id_transformation, id_step, TAG_END_MSG, end );
rep.saveStepAttribute( id_transformation, id_step, TAG_STOP_ON_ERROR, stopOnError );
for ( int i = 0; i < inputFields.length; i++ ) {
MailInputField field = inputFields[i];
rep.saveStepAttribute( id_transformation, id_step, i, "field_name", field.getName() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_column", field.getColumnCode() );
}
} catch ( KettleDatabaseException dbe ) {
throw new KettleException(
"Unable to save step of type 'get pop' to the repository for id_step=" + id_step, dbe );
}
}
@Override
public String getXML() {
StringBuilder retval = new StringBuilder();
retval.append( STR_6_SPACES ).append( XMLHandler.addTagValue( TAG_SERVERNAME, serverName ) );
retval.append( STR_6_SPACES ).append( XMLHandler.addTagValue( TAG_USERNAME, userName ) );
retval.append( STR_6_SPACES ).append(
XMLHandler.addTagValue( TAG_PASSWORD, Encr.encryptPasswordIfNotUsingVariables( password ) ) );
retval.append( STR_6_SPACES ).append( XMLHandler.addTagValue( TAG_USE_AUTH, usingAuthentication ) );
retval.append( STR_6_SPACES ).append( XMLHandler.addTagValue( TAG_USE_GRANT_TYPE, grant_type) );
retval.append( STR_6_SPACES ).append( XMLHandler.addTagValue( TAG_AUTH_CLIENT_ID, clientId ) );
retval.append( STR_6_SPACES ).append(
XMLHandler.addTagValue( TAG_AUTH_SECRET_KEY, Encr.encryptPasswordIfNotUsingVariables( secretKey) ) );
retval.append( STR_6_SPACES ).append( XMLHandler.addTagValue( TAG_AUTH_SCOPE, scope ) );
retval.append( STR_6_SPACES ).append( XMLHandler.addTagValue( TAG_AUTH_TOKEN_URL, tokenUrl ) );View on GitHub (pinned to f3058517a1)