qishibo/AnotherRedisDesktopManager · error

e.message

Error message

e.message

What it means

Catch handler for the paged list scan in KeyContentList.vue's loadMore(). The component progressively LRANGEs the list key to fill the table; if any command in that chain (or in the continuation this.loadMore() triggers) rejects, the spinner is cleared (loadingIcon = ''), further paging is disabled (loadMoreDisable = true), and the raw error message is toasted. This is a transport/command failure, not a data validation issue.

Source

Thrown at src/components/contents/KeyContentList.vue:166

        this.oneTimeListLength += listData.length;
        this.listData = this.listData.concat(listData);

        if (this.oneTimeListLength >= this.pageSize) {
          this.loadingIcon = '';
          this.oneTimeListLength = 0;
          return;
        }

        if (this.cancelScanning) {
          return;
        }
        // continue scanning until to pagesize
        this.loadMore();
      }).catch((e) => {
        this.loadingIcon = '';
        this.loadMoreDisable = true;
        this.$message.error(e.message);
      });
    },
    initTotal() {
      this.client.llen(this.redisKey).then((reply) => {
        this.total = reply;
      }).catch((e) => {});
    },
    resetTable() {
      this.listData = [];
      this.pageIndex = 0;
      this.oneTimeListLength = 0;
      this.loadMoreDisable = false;
    },
    loadMore() {
      this.pageIndex++;
      this.listScan();
    },
    openDialog() {

View on GitHub (pinned to c149855106)

Solutions

  1. If the message is connection-related: re-open/re-select the connection so the client reconnects, then click reload on the key tab
  2. If the key was deleted/recreated as another type: refresh the key list — WRONGTYPE means the name now holds a non-list value; open it with the matching viewer
  3. Check ACLs with ACL LIST / ACL GETUSER if a 'permission denied'-style message appears for this key only
  4. For long idle sessions, lower the keepalive/ping interval or reconnect before deep-paging very long lists

Example fix

// before: any scan error permanently disables paging until manual reset
}).catch((e) => {
  this.loadingIcon = '';
  this.loadMoreDisable = true;
  this.$message.error(e.message);
});

// after: connection errors stay retryable instead of disabling the pager
}).catch((e) => {
  this.loadingIcon = '';
  const fatal = /WRONGTYPE|no such key/i.test(e.message);
  this.loadMoreDisable = fatal;
  this.$message.error(e.message);
});
Defensive patterns

Strategy: try-catch

Validate before calling

// before deep paging, verify the key is still a live list
const type = await client.type(this.redisKey);
if (type !== 'list') { this.resetTable(); return; }

Type guard

null

Try / catch

// classify scan failures: transient link errors stay retryable, data errors resync
try {
  await this.loadMore();
} catch (e) {
  this.loadingIcon = '';
  const msg = String(e.message || e);
  if (/closed|ECONNRESET|timeout/i.test(msg)) {
    this.$message.warning('Connection lost — retry after reconnect');
    // keep loadMoreDisable = false so paging can resume
  } else {
    this.loadMoreDisable = true;   // WRONGTYPE / permissions: refresh needed
    this.$message.error(msg);
  }
}

Prevention

When it happens

Trigger: LRANGE redisKey start stop rejecting: the key was deleted or expired between page loads (reply becomes empty rather than error, but WRONGTYPE fires if the key was recreated as another type); the connection was closed/idle-killed mid-scan (Error: Connection is closed); ACL user lacks read permission on the key; server OOM/maxmemory eviction while paging a long list.

Common situations: Scrolling a long list in a GUI while another client FLUSHes or DELs the key; laptop sleep/resume dropping a keepalive-less TCP connection to remote Redis; Redis restart during browsing; proxy/LB idle timeout (e.g. 60s) killing the socket between page fetches; large-list paging putting the link under load.

Related errors


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