qishibo/AnotherRedisDesktopManager · error

this.$t('message.modify_failed')

Error message

this.$t('message.modify_failed')

What it means

Defensive branch: JSON.SET completed without an exception but the reply was not the literal 'OK' (usually a nil). With the '$' root path and a string value, RedisJSON replies OK on success, so this toast means the set may not have taken effect — most plausibly an old RedisJSON build or an intermediate proxy returning null instead of an error. The displayed text is the translated 'modify_failed' message.

Source

Thrown at src/components/contents/KeyContentReJson.vue:62

      if (content === false) {
        return;
      }

      if (!this.$util.isJson(content)) {
        return this.$message.error(this.$t('message.json_format_failed'));
      }

      this.client.call('JSON.SET', [this.redisKey, '$', content]).then((reply) => {
        if (reply === 'OK') {
          this.setTTL();
          this.initShow();

          this.$message.success({
            message: this.$t('message.modify_success'),
            duration: 1000,
          });
        } else {
          this.$message.error({
            message: this.$t('message.modify_failed'),
            duration: 1000,
          });
        }
      }).catch((e) => {
        this.$message.error(e.message);
      });
    },
    setTTL() {
      const ttl = parseInt(this.$parent.$parent.$refs.keyHeader.keyTTL);

      if (ttl > 0) {
        this.client.expire(this.redisKey, ttl).catch((e) => {
          this.$message.error(`Expire Error: ${e.message}`);
        }).then((reply) => {});
      }
    },
    initShortcut() {

View on GitHub (pinned to c149855106)

Solutions

  1. Verify what actually landed: run JSON.GET key '$' and compare with what you saved — the toast can be a false negative
  2. Upgrade the RedisJSON module to a current release if nil replies on success are observed
  3. Remove or inspect any proxy between client and Redis that could mangle replies
Defensive patterns

Strategy: validation

Validate before calling

const reply = await client.call('JSON.SET', key, '$', content);
if (reply !== 'OK') {
  // verify before declaring failure — some proxies/old modules reply nil on success
  const stored = await client.call('JSON.GET', key, '$').catch(() => null);
  if (stored !== content) throw new Error('JSON.SET returned ' + reply);
}

Type guard

const isOkReply = (r) => r === 'OK' || r === null; // null needs read-back confirmation

Prevention

When it happens

Trigger: Old RedisJSON module versions or managed services that reply nil for root-path sets; proxies (envoy redis filter, twemproxy) rewriting or dropping replies; RESP2/RESP3 translation bugs between client and server.

Common situations: Self-hosted Redis with a year-old RedisJSON SO; unusual network middleboxes in front of Redis; confusion after the toast appears even though the document was actually written.

Related errors


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