qishibo/AnotherRedisDesktopManager · warning

Sentinel & Cluster cannot be checked together!

Error message

Sentinel & Cluster cannot be checked together!

What it means

getConnectionConfig() rejects the form when the Sentinel panel is expanded (sentinelOptionsShow) and the Cluster checkbox is also ticked: it shows this toast and returns false, which aborts both testConnection and saving. ioredis connects either via a sentinel list or to cluster nodes, never both at once, so this is an invalid topology caught client-side before any network call.

Source

Thrown at src/components/NewConnectionDialog.vue:363

        this.sslOptionsShow = !!this.config.sslOptions;
        this.sentinelOptionsShow = !!this.config.sentinelOptions;
        // recovery connection before edit
        const connection = Object.assign({}, this.connectionEmpty, this.config);
        this.connection = JSON.parse(JSON.stringify(connection));
      }
      // new connection mode
      else {
        this.sshOptionsShow = false;
        this.sslOptionsShow = false;
        this.sentinelOptionsShow = false;
        this.connection = JSON.parse(JSON.stringify(this.connectionEmpty));
      }
    },
    getConnectionConfig() {
      const config = JSON.parse(JSON.stringify(this.connection));

      if (this.sentinelOptionsShow && config.cluster) {
        this.$message.error('Sentinel & Cluster cannot be checked together!');
        return false;
      }

      !config.host && (config.host = '127.0.0.1');
      !config.port && (config.port = 6379);

      if (!this.sshOptionsShow || !config.sshOptions.host) {
        delete config.sshOptions;
      }

      if (!this.sslOptionsShow) {
        delete config.sslOptions;
      }

      if (!this.sentinelOptionsShow || !config.sentinelOptions.masterName) {
        delete config.sentinelOptions;
      }

View on GitHub (pinned to c149855106)

Solutions

  1. If the deployment is Sentinel-managed, uncheck Cluster and fill the sentinel master name/host
  2. If connecting directly to a Redis Cluster, collapse Sentinel and clear its fields
  3. Make the two controls mutually exclusive in the UI so the state can never be submitted

Example fix

// before - both flags can be on at once

// after - enforce mutual exclusion when Sentinel toggles
watch: {
  sentinelOptionsShow(show) {
    if (show) {
      this.connection.cluster = false;
    }
  },
},
Defensive patterns

Strategy: validation

Validate before calling

// reject the config before any network activity
function isValidConnectionConfig(config, sentinelEnabled) {
  if (sentinelEnabled && config.cluster) {
    return { ok: false, reason: 'sentinel-and-cluster-mutually-exclusive' };
  }
  return { ok: true };
}

Prevention

When it happens

Trigger: In the connection dialog: fill Sentinel options and also check 'Cluster' (config.cluster truthy), then click Test Connection or OK. The check in getConnectionConfig fires before defaults (host 127.0.0.1, port 6379) are even applied.

Common situations: Exploring dialog options and leaving both boxes checked; converting a saved cluster connection to sentinel-managed (or vice versa) without unchecking the other option.

Related errors


AI-assisted analysis of qishibo/AnotherRedisDesktopManager@c149855106 (2026-08-22). Data as JSON: /api/errors/a8c789cc347277f0. Report an issue: GitHub.