qishibo/AnotherRedisDesktopManager · error
Memory Analysis Stream On Error: ${e.messag}
Error message
Memory Analysis Stream On Error: ${e.messag} What it means
Catch-all for the memory-analysis scan stream in MemoryAnalysis.vue (SCAN + MEMORY USAGE per key). Note two distinct things: (1) MEMORY USAGE requires Redis 4.0+ - on older servers the stream errors with "unknown command 'MEMORY'", and a dropped connection also lands here; (2) the template has a typo - '${e.messag}' instead of '${e.message}' - so the toast always ends in 'undefined' and hides the real cause.
Source
Thrown at src/components/MemoryAnalysis.vue:152
const keysWithMemory = [];
const promise = this.initKeysMemory(keys, keysWithMemory);
promise.then(() => {
// add interval between rendering
setTimeout(() => {
this.keysList = this.keysList.concat(keysWithMemory);
this.reOrder('desc');
this.isScanning && stream.resume();
}, 100);
// size count
this.totalSize += keysWithMemory.reduce((sum, item) => sum + parseInt(item.size), 0);
});
});
stream.on('error', (e) => {
this.toggleScanning(true);
this.$message.error(`Memory Analysis Stream On Error: ${e.messag}`);
});
stream.on('end', () => {
// all nodes scan finished(cusor back to 0)
if (--this.scanningCount <= 0) {
this.isScanning = false;
this.scanningEnd = true;
}
});
});
},
// todo: should avoid logging too many commands!
initKeysMemory(keys, keysWithMemory) {
if (!keys) {
return;
}
const allPromise = [];View on GitHub (pinned to c149855106)
Solutions
- Check the server version first (INFO server / client.info()) - MEMORY USAGE needs Redis >= 4.0.
- Fix the typo e.messag -> e.message so the real error text is visible.
- If a proxy blocks MEMORY, connect directly to a node; if the tunnel drops, stabilize it (keepalives) and rerun.
Example fix
// before
this.$message.error(`Memory Analysis Stream On Error: ${e.messag}`); // prints 'undefined'
// after
this.$message.error(`Memory Analysis Stream On Error: ${e.message}`); Defensive patterns
Strategy: validation
Validate before calling
// MEMORY USAGE requires Redis 4.0 - check before starting analysis
const info = await client.info('server');
const version = /redis_version:([\d.]+)/.exec(info)[1];
if (Number(version.split('.')[0]) < 4) {
throw new Error(`Memory Analysis needs Redis >= 4.0, server is ${version}`);
} Type guard
const isVersionError = (e) => /unknown command.*MEMORY/i.test(e.message);
Try / catch
stream.on('error', (e) => {
this.toggleScanning(true);
// note: the shipped template prints e.messag ('undefined') - use e.message
this.$message.error(`Memory Analysis Stream On Error: ${e.message}`);
}); Prevention
- Always print e.message (the current template's e.messag typo hides the cause).
- Gate the memory-analysis feature on a server version check (>= 4.0).
- Stabilize tunnels for long analyses - mid-stream disconnects land in the same handler.
When it happens
Trigger: Running memory analysis against Redis < 4.0 (no MEMORY command); a proxy or managed layer that does not forward MEMORY; SSH tunnel or connection collapsing during a long analysis; huge keyspaces where the stream runs for minutes.
Common situations: Analyzing legacy Redis 3.x instances; long analyses over VPN/SSH that get cut by idle timeouts; restricted managed environments.
Related errors
- this.$t('message.scan_disabled')
- Stream On Error: ${e.message}
- Delete Batch Stream On Error: ${e.message}
AI-assisted analysis of qishibo/AnotherRedisDesktopManager@c149855106 (2026-08-22).
Data as JSON: /api/errors/49e4bb016b456fb2.
Report an issue: GitHub.