redis/jedis · info
Database/database endpoint successfully updated from
Error message
Database/database endpoint successfully updated from '{}' to '{}' What it means
This is a warning logged by MultiDbConnectionProvider when the active database is switched from one database/endpoint to a different one: the old database's circuit breaker name and the new one are logged as the provider swaps activeDatabase under activeDatabaseChangeLock. No exception is thrown; it records that failover (or a requested switch) completed and traffic now routes to the new database.
Solutions
- No action needed for an expected failover; confirm application traffic is being served by the intended new database.
- If switches happen unexpectedly, check why the previous database's circuit breaker opened (endpoint health, REST API, network).
- Adjust failover thresholds (health check intervals, breaker policy) if switches are too aggressive for your SLA.
Defensive patterns
Strategy: try-catch
Try / catch
// Informational failover log; handle transient errors during the switch window
try {
runWorkload();
} catch (redis.clients.jedis.exceptions.JedisConnectionException e) {
// brief unavailability while activeDatabase swaps; retry with backoff
} Prevention
- Confirm the intended failover target ordering in the provider's database list.
- Alert on this log if unexpected failovers occur; correlate with the previous database's breaker events.
- Use validated connections (validateConnection=true) so switches only land on healthy targets.
- Keep per-database credentials/pools pre-warmed to shorten switch windows.
When it happens
Trigger: A switch operation (health-driven failover or explicit switch) validates the target connection and sets activeDatabase = database where activeDatabase != database; the log reports the transition from the previous database name to database.circuitBreaker.getName().
Common situations: Primary endpoint failing health checks so the provider fails over to a replica/alternate database; manual database switch requested by the application; temporary network partition causing repeated switch warnings.
Understand the failure class
Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.
Related errors
- Database/database endpoint
- Error while checking availability
- Database can not be removed due to no healthy database…
- failed to connect. Please check configuration and try again.
- Active database has changed since transaction started
AI-assisted analysis of redis/jedis@6dac31d4c2 (2026-09-08).
Data as JSON: /api/errors/2cc91a64f9669256.
Report an issue: GitHub.
Appendix: source
Thrown at src/main/java/redis/clients/jedis/mcf/MultiDbConnectionProvider.java:722
// Database database = databaseEntry.getValue();
// Field-level synchronization is used to avoid the edge case in which
// setActiveDatabase() is called at the same time
activeDatabaseChangeLock.lock();
Database oldDatabase;
try {
// Allows an attempt to reset the current database from a FORCED_OPEN to CLOSED state in the
// event that no failover is possible
if (activeDatabase == database && !database.isCBForcedOpen()) return false;
if (validateConnection) validateTargetConnection(database);
String originalDatabaseName = getDatabaseCircuitBreaker().getName();
if (activeDatabase == database)
log.warn("Database/database endpoint '{}' successfully closed its circuit breaker",
originalDatabaseName);
else log.warn("Database/database endpoint successfully updated from '{}' to '{}'",
originalDatabaseName, database.circuitBreaker.getName());
oldDatabase = activeDatabase;
activeDatabase = database;
} finally {
activeDatabaseChangeLock.unlock();
}
boolean switched = oldDatabase != database;
if (switched && this.multiDbConfig.isFastFailover()) {
log.info("Forcing disconnect of all active connections in old database: {}",
oldDatabase.circuitBreaker.getName());
oldDatabase.forceDisconnect();
log.info("Disconnected all active connections in old database: {}",
oldDatabase.circuitBreaker.getName());
}
return switched;
}View on GitHub (pinned to 6dac31d4c2)