qishibo/AnotherRedisDesktopManager · error

e.message

Error message

e.message

What it means

The fallback branch of the INFO catch in Status.vue: any INFO failure that is neither 'unknown command' (disabled) nor NOAUTH is surfaced raw. Realistic causes: ECONNRESET/EHOSTUNREACH because refreshInit() polls INFO on a setInterval, READONLY during a replica promotion window, NOPERM under Redis 6 ACLs, or LOADING while the server restarts and rehydrates its dataset. Because the timer keeps firing, one network blip can stack multiple toasts.

Source

Thrown at src/components/Status.vue:266

        // init db keys info
        if (this.isCluster) {
          this.initClusterKeys();
        }
        else {
          this.DBKeys = this.initDbKeys(this.connectionStatus);
        }
      }).catch((e) => {
        // info command may be disabled
        if (e.message.includes('unknown command')) {
          this.$message.error({
            message: this.$t('message.info_disabled'),
            duration: 3000,
          });
        }
        // no auth not show
        else if (e.message.includes('NOAUTH')) {} else {
          this.$message.error(e.message);
        }
      });
    },
    refreshInit() {
      this.refreshTimer && clearInterval(this.refreshTimer);

      if (this.autoRefresh) {
        this.initShow();

        this.refreshTimer = setInterval(() => {
          this.initShow();
        }, this.refreshInterval);
      }
    },
    sortByKeys(a, b) {
      return a.keys - b.keys;
    },
    sortByExpires(a, b) {

View on GitHub (pinned to c149855106)

Solutions

  1. Stop or back off the auto-refresh timer after consecutive failures instead of letting it keep firing
  2. Classify transient causes (ECONNRESET/LOADING/timeout) and retry silently with backoff
  3. For NOPERM, grant info to the ACL user or hide the status panel
  4. After failover, reconnect the client and refresh once manually

Example fix

// before
else {
  this.$message.error(e.message);
}

// after
else {
  if (++this.infoFailCount >= 3) {
    clearInterval(this.refreshTimer);
    this.refreshTimer = null;
    this.$message.error(e.message);
  }
  // transient failures stay quiet; the next tick retries
}
Defensive patterns

Strategy: retry

Try / catch

.catch((e) => {
  const m = String(e.message);
  const transient = /ECONNRESET|ETIMEDOUT|LOADING|EAGAIN/i.test(m);
  if (transient) {
    this.scheduleRefreshBackoff(); // retry quietly
  } else {
    this.$message.error(m);
  }
})

Prevention

When it happens

Trigger: Auto-refresh timer issuing INFO while the network/VPN drops; Redis failover in progress (LOADING or READONLY windows); ACL user without info; server reboot mid-poll.

Common situations: Flaky VPN or laptop sleep, ElastiCache failovers, k8s pod restarts of Redis, restrictive ACL app users.

Related errors


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