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

  1. Check the server version first (INFO server / client.info()) - MEMORY USAGE needs Redis >= 4.0.
  2. Fix the typo e.messag -> e.message so the real error text is visible.
  3. 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

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


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