qishibo/AnotherRedisDesktopManager · error
e.message
Error message
e.message
What it means
SlowLog.vue fetches entries with client.call('SLOWLOG', 'GET', ...) and a rejection shows the raw e.message while resetting isScanning. SLOWLOG is NOT in the app's writeCMD list, so readonly mode does not block it - the failure is server-side or transport-level: command disabled by ACL/proxy/managed Redis, or the connection dropped.
Source
Thrown at src/components/SlowLog.vue:107
node.callBuffer('SLOWLOG', 'GET', this.scanMax).then((reply) => {
for (const item of reply) {
const line = {
id: item[0],
timestring: this.toLocalTime(item[1] * 1000),
cost: (item[2] / 1000).toFixed(3),
cmd: item[3].join(' '),
source: item[4],
name: item[5],
};
lines.push(line);
}
this.cmdList = lines;
this.isScanning = false;
}).catch((e) => {
this.isScanning = false;
this.$message.error(e.message);
});
});
},
initConfig() {
this.client.call('CONFIG', 'GET', 'slowlog-log-slower-than').then((reply) => {
this.slowerThan = reply[1];
}).catch((e) => {});
this.client.call('CONFIG', 'GET', 'slowlog-max-len').then((reply) => {
this.maxLen = reply[1];
}).catch((e) => {});
},
toLocalTime(timestamp) {
const d = new Date(timestamp);
const h = `${d.getHours()}`.padStart(2, 0);
const m = `${d.getMinutes()}`.padStart(2, 0);
const s = `${d.getSeconds()}`.padStart(2, 0);
const Y = d.getFullYear();View on GitHub (pinned to c149855106)
Solutions
- Read the exact e.message: 'unknown command' means the server/proxy lacks SLOWLOG; 'NOPERM' means an ACL grant is missing.
- Verify directly with redis-cli: 'SLOWLOG GET 10' as the same user.
- If the provider blocks SLOWLOG, use the provider's monitoring/logs instead of the tab.
Defensive patterns
Strategy: try-catch
Validate before calling
// optional capability probe before opening the tab
async function slowlogAvailable(client) {
try { await client.call('slowlog', 'len'); return true; }
catch { return false; }
} Type guard
const isCommandRestricted = (e) => /unknown command|NOPERM|not allowed/i.test(e.message);
Try / catch
this.client.call('SLOWLOG', 'GET', count).then(/* render */).catch((e) => {
this.isScanning = false;
if (isCommandRestricted(e)) {
this.$message.error('SLOWLOG is not available for this connection (ACL/managed Redis)');
} else {
this.$message.error(e.message);
}
}); Prevention
- Probe SLOWLOG LEN once and disable the tab when restricted instead of erroring on open.
- Grant ACL users +@admin (or +slowlog) if the slow-log tab is needed.
- Always reset isScanning in the catch so the UI does not stick in the loading state.
When it happens
Trigger: ACL user without @admin/@slowlog privileges; managed Redis or a proxy that does not expose SLOWLOG; connection lost while opening the slow-log tab; very restricted whitelisted command set on the server.
Common situations: Managed offerings with limited command surfaces; ACL accounts provisioned for the GUI with minimal grants; clicking the slow-log tab right after a network change.
Related errors
AI-assisted analysis of qishibo/AnotherRedisDesktopManager@c149855106 (2026-08-22).
Data as JSON: /api/errors/b4cf2acecb7b2463.
Report an issue: GitHub.