qishibo/AnotherRedisDesktopManager · error

msg

Error message

msg

What it means

The shared failure sink of the batch-delete flow: deleteFailed(msg) shows the message and resets loadingScan/loadingDelete so the buttons unstick. It receives either the localized 'delete failed' (DEL replied 0) or a raw e.message from a rejected DEL — so the visible text identifies the upstream cause. With an empty msg it silently resets state only.

Source

Thrown at src/components/DeleteBatch.vue:201

      }
    },
    afterDelete() {
      this.loadingDelete = false;
      this.allKeysList = [];

      // empty the specified keys
      // this.rule.key = [];

      this.$message.success(this.$t('message.delete_success'));
      this.$bus.$emit('refreshKeyList', this.client);

      // except pattern mode scanning not to end, close pre tab
      if (!this.rule.pattern.length || this.scanningEnd) {
        this.$bus.$emit('removePreTab');
      }
    },
    deleteFailed(msg = '') {
      msg && this.$message.error(msg);

      this.loadingScan = false;
      this.loadingDelete = false;
    },
    initShortcut() {
      this.$shortcut.bind('ctrl+r, ⌘+r, f5', this.hotKeyScope, () => {
        this.initKeys();
        return false;
      });
    },
  },
  mounted() {
    this.initKeys();
    // disable f5 for streams on event cannot stop
    // this.initShortcut();
  },
  beforeDestroy() {
    // this.$shortcut.deleteScope(this.hotKeyScope);

View on GitHub (pinned to c149855106)

Solutions

  1. Differentiate the messages: 'no keys existed to delete' vs the raw command error, instead of one generic delete_failed string
  2. Always call this (even with empty msg) after any delete-path failure so the UI never sticks in loading state
  3. Trigger a re-scan after failure so the list reflects reality
  4. Log the raw error alongside the localized text for diagnostics

Example fix

// before
deleteFailed(msg = '') {
  msg && this.$message.error(msg);
  this.loadingScan = false;
  this.loadingDelete = false;
},

// after
deleteFailed(msg = '', raw = null) {
  msg && this.$message.error({ message: msg, duration: 3000 });
  raw && console.warn('[DeleteBatch]', raw);
  this.loadingScan = false;
  this.loadingDelete = false;
},
Defensive patterns

Strategy: try-catch

Try / catch

try {
  await delWork();
} catch (e) {
  this.deleteFailed(this.$t('message.delete_failed'), e);
} finally {
  this.loadingScan = false;
  this.loadingDelete = false;
}

Prevention

When it happens

Trigger: Any failure in deleteKeys() routes here: DEL deleted nothing (reply 0), DEL rejected (connection/auth/readonly/cluster), or a caller passes '' to only reset the loading flags.

Common situations: Shared cleanup path after scan/delete failures; callers that just need the loading flags cleared.

Related errors


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