qishibo/AnotherRedisDesktopManager · warning

${this.redisKey} ${this.$t('message.delete_failed')}

Error message

${this.redisKey} ${this.$t('message.delete_failed')}

What it means

KeyHeader.vue delete flow: after user confirmation, client.del(redisKey) resolves with the number of keys removed; reply != 1 means the source key no longer existed (expired or deleted elsewhere), so the '<key> delete_failed' toast is shown. The DEL succeeded but removed nothing, and the tab stays open because removePreTab is only called on success.

Source

Thrown at src/components/KeyHeader.vue:143

      this.$emit('dumpCommand');
    },
    deleteKey() {
      this.$confirm(
        this.$t('message.confirm_to_delete_key', { key: this.$util.bufToString(this.redisKey) }),
        { type: 'warning' },
      )
        .then(() => {
          this.client.del(this.redisKey).then((reply) => {
            if (reply == 1) {
              this.$message.success({
                message: this.$t('message.delete_success'),
                duration: 1000,
              });

              this.$bus.$emit('removePreTab');
              this.refreshKeyList(this.redisKey);
            } else {
              this.$message.error({
                message: `${this.redisKey} ${this.$t('message.delete_failed')}`,
                duration: 1000,
              });
            }
          }).catch((e) => { this.$message.error(e.message); });
        }).catch(() => {});
    },
    renameKey(e) {
      // input blur to prevent trigger twice by enter
      e && e.srcElement.blur();

      if (this.keyName.equals(this.redisKey)) {
        return;
      }

      const inputTxt = 'y';
      const placeholder = this.$t('message.flushdb_prompt', { txt: inputTxt });

View on GitHub (pinned to c149855106)

Solutions

  1. Refresh the key list - the key will be gone from it.
  2. Close the stale tab manually (it does not auto-close on this path).
  3. If the key still exists after refresh, retry the delete.
Defensive patterns

Strategy: validation

Validate before calling

const exists = await client.exists(this.redisKey);
if (!exists) { this.$bus.$emit('removePreTab'); this.refreshKeyList(this.redisKey); return; }

Type guard

const wasDeleted = (reply) => reply === 1;

Try / catch

this.client.del(this.redisKey).then((reply) => {
  if (wasDeleted(reply)) { /* success: removePreTab */ }
  else {
    // key already gone server-side: close the stale tab and refresh instead of erroring
    this.$bus.$emit('removePreTab');
    this.refreshKeyList(this.redisKey);
  }
});

Prevention

When it happens

Trigger: Key expired between opening the tab and pressing delete; key deleted from another session/tool; tab left open on a key with a short TTL.

Common situations: Multiple GUI sessions or an app deleting keys while the tab is open; TTLs expiring during analysis workflows.

Related errors


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