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
- If the deployment is Sentinel-managed, uncheck Cluster and fill the sentinel master name/host
- If connecting directly to a Redis Cluster, collapse Sentinel and clear its fields
- 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
- Decide the topology first: sentinel-managed OR direct cluster, never both
- When toggling Sentinel on, clear/uncheck Cluster in the same interaction
- Save known-good profiles per topology so manual checkbox state never mixes
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
- message || this.$t('message.test_connection_failed')
- this.$t('message.test_connection_timeout')
- Exists Error: ${e.message}
- err.message
- e.message
AI-assisted analysis of qishibo/AnotherRedisDesktopManager@c149855106 (2026-08-22).
Data as JSON: /api/errors/a8c789cc347277f0.
Report an issue: GitHub.