qishibo/AnotherRedisDesktopManager · error

e.message

Error message

e.message

What it means

Toast showing e.message when TS.INFO (or the subsequent TS.REVRANGE scan) fails during initShow() in KeyContentTimeSeries.vue:178. TS.* commands are served by the RedisTimeSeries module; on a server without it, ioredis rejects with "ERR unknown command 'TS.INFO'" — the most common text seen here. Other rejections: deleted key ("ERR TSDB: the key does not exist"), connection loss, or cluster nodes lacking the module.

Source

Thrown at src/components/contents/KeyContentTimeSeries.vue:178

      // scroll to bottom while loading more
      if (oldValue.length && (newValue.length > oldValue.length)) {
        setTimeout(() => {
          this.$refs.contentTable && this.$refs.contentTable.scrollTo(0, 99999999);
        }, 0);
      }
    },
  },
  methods: {
    initShow(resetTable = true) {
      resetTable && this.resetTable();
      this.loadingIcon = 'el-icon-loading';

      this.initInfo().then(() => {
        this.listScan();
      }).catch((e) => {
        this.loadingIcon = '';
        this.loadMoreDisable = true;
        this.$message.error(e.message);
      });
    },
    initInfo() {
      return this.client.call('TS.INFO', this.redisKey).then((reply) => {
        const info = {};
        if (reply && reply.length) {
          for (let i = 0; i < reply.length; i += 2) {
            info[reply[i]] = this.flatArrayInfo(reply[i + 1]);
          }
        }
        this.infoDict = info;
        this.total = Number(info.totalSamples) || 0;
      });
    },
    flatArrayInfo(lines) {
      if (!Array.isArray(lines)) {
        return String(lines);
      }

View on GitHub (pinned to c149855106)

Solutions

  1. Run MODULE LIST in the console; if timeseries is absent, use a RedisStack image or LOAD the module (MODULE LOAD timeseries.so) and restart
  2. Verify you connected to the intended node — in clusters every master must carry the module
  3. If the message says the key does not exist, refresh the sidebar — the key is gone
  4. On connection errors, reconnect and reopen the key

Example fix

// before
this.initInfo().then(() => { this.listScan(); }).catch((e) => {
  this.$message.error(e.message);
});

// after: distinguish missing module from missing key
.catch((e) => {
  if (/unknown command/i.test(e.message)) {
    this.$message.error('RedisTimeSeries module not loaded on this server');
  } else { this.$message.error(e.message); }
});
Defensive patterns

Strategy: try-catch

Validate before calling

// probe module availability once per connection before rendering TS views
const mods = await this.client.call('MODULE', 'LIST');
const hasTS = mods.some(m => String(m[1]).toLowerCase().includes('timeseries'));
if (!hasTS) { this.$message.error('RedisTimeSeries module not loaded'); return; }

Try / catch

.catch((e) => {
  if (/unknown command/i.test(e.message)) this.$message.error('RedisTimeeries module not loaded on this server');
  else if (/does not exist/i.test(e.message)) this.refreshKeyList();
  else this.$message.error(e.message);
})

Prevention

When it happens

Trigger: initInfo() calling TS.INFO fails when: the RedisTimeSeries module is not loaded (OSS Redis without modules, wrong docker image); connecting to a cluster where some masters lack the module; the browsed key was deleted or expired between sidebar click and content load; the connection dropped.

Common situations: Opening a TimeSeries key on plain redis:latest instead of redis/redis-stack; module list differing across cluster nodes after a partial upgrade; clicking a key that a retention job just removed.

Related errors


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