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

  1. No action needed for an expected failover; confirm application traffic is being served by the intended new database.
  2. If switches happen unexpectedly, check why the previous database's circuit breaker opened (endpoint health, REST API, network).
  3. 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

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


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)