qishibo/AnotherRedisDesktopManager · error
e.message
Error message
e.message
What it means
The fallback branch of the INFO catch in Status.vue: any INFO failure that is neither 'unknown command' (disabled) nor NOAUTH is surfaced raw. Realistic causes: ECONNRESET/EHOSTUNREACH because refreshInit() polls INFO on a setInterval, READONLY during a replica promotion window, NOPERM under Redis 6 ACLs, or LOADING while the server restarts and rehydrates its dataset. Because the timer keeps firing, one network blip can stack multiple toasts.
Source
Thrown at src/components/Status.vue:266
// init db keys info
if (this.isCluster) {
this.initClusterKeys();
}
else {
this.DBKeys = this.initDbKeys(this.connectionStatus);
}
}).catch((e) => {
// info command may be disabled
if (e.message.includes('unknown command')) {
this.$message.error({
message: this.$t('message.info_disabled'),
duration: 3000,
});
}
// no auth not show
else if (e.message.includes('NOAUTH')) {} else {
this.$message.error(e.message);
}
});
},
refreshInit() {
this.refreshTimer && clearInterval(this.refreshTimer);
if (this.autoRefresh) {
this.initShow();
this.refreshTimer = setInterval(() => {
this.initShow();
}, this.refreshInterval);
}
},
sortByKeys(a, b) {
return a.keys - b.keys;
},
sortByExpires(a, b) {View on GitHub (pinned to c149855106)
Solutions
- Stop or back off the auto-refresh timer after consecutive failures instead of letting it keep firing
- Classify transient causes (ECONNRESET/LOADING/timeout) and retry silently with backoff
- For NOPERM, grant info to the ACL user or hide the status panel
- After failover, reconnect the client and refresh once manually
Example fix
// before
else {
this.$message.error(e.message);
}
// after
else {
if (++this.infoFailCount >= 3) {
clearInterval(this.refreshTimer);
this.refreshTimer = null;
this.$message.error(e.message);
}
// transient failures stay quiet; the next tick retries
} Defensive patterns
Strategy: retry
Try / catch
.catch((e) => {
const m = String(e.message);
const transient = /ECONNRESET|ETIMEDOUT|LOADING|EAGAIN/i.test(m);
if (transient) {
this.scheduleRefreshBackoff(); // retry quietly
} else {
this.$message.error(m);
}
}) Prevention
- Pause the refresh interval while the client is reconnecting
- Use exponential backoff for status polling
- Debounce toasts so a burst of failures shows one message
- Clear the interval in beforeDestroy to avoid post-close errors
When it happens
Trigger: Auto-refresh timer issuing INFO while the network/VPN drops; Redis failover in progress (LOADING or READONLY windows); ACL user without info; server reboot mid-poll.
Common situations: Flaky VPN or laptop sleep, ElastiCache failovers, k8s pod restarts of Redis, restrictive ACL app users.
Related errors
- this.$t('message.info_disabled')
- You are in readonly mode! Unable to execute write command!
- Persist Error: ${e.message}
- e.message
- Delete Batch Stream On Error: ${e.message}
AI-assisted analysis of qishibo/AnotherRedisDesktopManager@c149855106 (2026-08-22).
Data as JSON: /api/errors/daebcbc772e92f39.
Report an issue: GitHub.