pentaho/pentaho-kettle · error · KettleException
Unable to automatically configure slave sequences
Error message
Unable to automatically configure slave sequences
What it means
SlaveServerConfig.readAutoSequences auto-creates/validates slave sequences in the configured autoSequence database and wraps any failure in KettleException("Unable to automatically configure slave sequences") with the cause chained, disconnecting the database in finally. It means Carte could not set up the sequences needed for clustered execution bookkeeping.
Solutions
- Inspect the chained cause for the exact SQL/DDL failure.
- Grant the configured DB user CREATE/SELECT/UPDATE privileges needed to create and read slave sequences.
- Verify the autoSequence database connection settings in carte-config.xml (host, port, database, type).
- Manually create the missing slave sequence rows/tables, then restart Carte.
- If clustering/sequences aren't needed, remove the autoSequence config so readAutoSequences returns early.
Example fix
// before <auto_sequence> <database>seqdb</database> </auto_sequence> <!-- seqdb user lacks CREATE --> // after: grant privileges or point at an account that can create sequences GRANT CREATE, SELECT, UPDATE ON schema.* TO 'carte'@'%';
Defensive patterns
Strategy: try-catch
Validate before calling
// verify autoSequence DB privileges before starting Carte
DatabaseMeta db = ...;
try (Connection c = DriverManager.getConnection(db.getURL(), db.getUsername(), db.getPassword());
Statement s = c.createStatement()) {
s.execute("SELECT 1"); // basic reachability; run DDL grants separately
} Try / catch
try {
config.readAutoSequences();
} catch (KettleException e) {
log.fatal("Slave sequence auto-config failed; clustering unusable", e.getCause() != null ? e.getCause() : e);
throw e; // fail startup early rather than run a broken cluster
} Prevention
- Grant the sequence DB account CREATE/SELECT/UPDATE before first Carte start.
- Verify autoSequence connection settings whenever carte-config.xml changes.
- Document and back up slave sequence tables during DB migrations.
When it happens
Trigger: parseAndRunCommand -> readAutoSequences while the autoSequence database in carte-config.xml is unreachable, the DB user lacks CREATE/SELECT privileges to create or read the sequence rows, or an existing slave sequence record is corrupt/missing columns.
Common situations: Fresh Carte install pointed at a sequence DB where the service account can't CREATE TABLE/SEQUENCE; sequence DB migrated without copying the cluster sequence rows; wrong database type in config causing invalid DDL.
Related errors
- Unable to get next value for slave sequence '" + name + "'…
- A server socket allocation always has to accompanied by…
- A server socket allocation always has to accompanied by a…
- A server socket allocation always has to accompanied by a…
- A server socket allocation always has to accompanied by a…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/fedef4c8603ee259.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/www/SlaveServerConfig.java:336
// Automatically create a new sequence for each sequence found...
//
String sequenceName = rowMeta.getString( row, seqField, null );
if ( !Utils.isEmpty( sequenceName ) ) {
Long value = rowMeta.getInteger( row, valueField, null );
if ( value != null ) {
SlaveSequence slaveSequence =
new SlaveSequence( sequenceName, value, databaseMeta, autoSequence.getSchemaName(), autoSequence
.getTableName(), autoSequence.getSequenceNameField(), autoSequence.getValueField() );
slaveSequences.add( slaveSequence );
LogChannel.GENERAL.logBasic( "Automatically created slave sequence '"
+ slaveSequence.getName() + "' with start value " + slaveSequence.getStartValue() );
}
}
}
} catch ( Exception e ) {
throw new KettleException( "Unable to automatically configure slave sequences", e );
} finally {
if ( database != null ) {
database.disconnect();
}
}
}
private void checkNetworkInterfaceSetting( LogChannelInterface log, Node slaveNode, SlaveServer slaveServer ) {
// See if we need to grab the network interface to use and then override the host name
//
String networkInterfaceName = XMLHandler.getTagValue( slaveNode, "network_interface" );
if ( !Utils.isEmpty( networkInterfaceName ) ) {
// OK, so let's try to get the IP address for this network interface...
//
try {
String newHostname = Const.getIPAddress( networkInterfaceName );
if ( newHostname != null ) {
slaveServer.setHostname( newHostname );View on GitHub (pinned to f3058517a1)