qishibo/AnotherRedisDesktopManager · error

e.message

Error message

e.message

What it means

The catch branch when the DEL command itself rejects in KeyListVirtualTree.vue. DEL is in the app's writeCMD table, so on a readonly connection the client-side guard rejects the promise locally; otherwise the rejection is an ACL denial (NOPERM), a lost connection, or another server error.

Source

Thrown at src/components/KeyListVirtualTree.vue:237

          // del batch instead of single when multi operating
          if (this.multiOperating) {
            return this.deleteBatch();
          }

          const keyBuffer = Buffer.from(this.rightClickNode.data.nameBuffer.data);

          this.client.del(keyBuffer).then((reply) => {
            if (reply == 1) {
              this.$message.success({
                message: this.$t('message.delete_success'),
                duration: 1000,
              });

              this.$bus.$emit('refreshKeyList', this.client, keyBuffer, 'del');
            } else {
              this.$message.error(this.$t('message.delete_failed'));
            }
          }).catch((e) => { this.$message.error(e.message); });
          break;
        }
        // select multiple
        case 'multiple_select': {
          this.showMultiSelect();
          break;
        }
        // open key in new tab
        case 'open': {
          this.clickKey(Buffer.from(this.rightClickNode.data.nameBuffer.data), true);
          break;
        }
        // delete whole folder
        case 'delete_folder': {
          const rule = { pattern: [this.rightClickNode.data.fullName] };
          this.$bus.$emit('openDelBatch', this.client, this.config.connectionName, rule);
          break;
        }

View on GitHub (pinned to c149855106)

Solutions

  1. If the message is the readonly-mode text, uncheck Readonly in the connection config and reconnect.
  2. If 'NOPERM', grant the ACL user +del (or +@write / +@keyspace).
  3. If connection-related, reconnect and retry the delete.
Defensive patterns

Strategy: try-catch

Validate before calling

import { writeCMD } from '@/commands.js';
const delBlocked = client.options.connectionReadOnly && writeCMD['DEL']; // precheck readonly

Type guard

const isWriteDenied = (e) => /readonly mode|NOPERM|not allowed/i.test(e.message);

Try / catch

this.client.del(keyBuffer).catch((e) => {
  if (isWriteDenied(e)) {
    this.$message.error('Delete not permitted (readonly connection or ACL) - fix config, retry is pointless');
  } else {
    this.$message.error(e.message); // transport error: reconnect and retry
  }
});

Prevention

When it happens

Trigger: Deleting a key on a readonly-configured connection (client-side guard fires); ACL user without @write/@keyspace (+del); connection dropped between right-click and confirmation.

Common situations: Readonly connection to production; restricted ACL account used for the GUI; network blip during tree operations.

Related errors


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