qishibo/AnotherRedisDesktopManager · error

Proto Verify Failed: ${err}

Error message

Proto Verify Failed: ${err}

What it means

Element UI toast shown when protobufjs type.verify(message) returns a non-null error string after type.fromObject(content) builds the message. verify() is protobufjs's runtime schema check: it reports missing required fields, wrong scalar types, and invalid enum values, returning a descriptive string like 'FieldX: illegal value' or '.message.field: required field missing' which is interpolated into this toast.

Source

Thrown at src/components/viewers/ViewerProtobuf.vue:117

        this.$message.error('Select a correct Type to encode');
        return false;
      }

      let content = this.$refs.editor.getRawContent();
      const type = this.protoRoot.lookupType(this.selectedType);

      try {
        content = JSON.parse(content);
      } catch (e) {
        this.$message.error(this.$t('message.json_format_failed'));
        return false;
      }

      // toJSON() shows int64/uint64 as strings; fromObject converts them back
      const message = type.fromObject(content);
      const err = type.verify(message);
      if (err) {
        this.$message.error(`Proto Verify Failed: ${err}`);
        return false;
      }

      return type.encode(message).finish();
    },
    copyContent() {
      return JSON.stringify(this.newContent);
    },
    selectProto() {
      dialog.showOpenDialog({
        securityScopedBookmarks: true,
        properties: ['openFile', 'multiSelections'],
        filters: [
          {
            name: '.proto',
            extensions: ['proto'],
          },
        ],

View on GitHub (pinned to c149855106)

Solutions

  1. Read the err string in the toast: it names the exact field and the violation (required missing / illegal value)
  2. Fix the named field in the JSON editor (restore required fields, correct the type, use a valid enum name)
  3. If the schema itself changed, reselect the .proto that matches how the data was written
  4. Add editor-side JSON-schema validation generated from the proto to catch issues before save

Example fix

// before
const err = type.verify(message);
if (err) {
  this.$message.error(`Proto Verify Failed: ${err}`);
  return false;
}

// after - keep the object so the user can correct it without losing edits
const err = type.verify(message);
if (err) {
  this.$message.error({ message: `Proto Verify Failed: ${err}`, duration: 6000 });
  return false;
}
Defensive patterns

Strategy: validation

Validate before calling

const message = type.fromObject(content);
const err = type.verify(message);
if (err) {
  this.$message.error(`Proto Verify Failed: ${err}`);
  return false;
}

Type guard

// protobufjs convention: verify returns null when valid
const isValidMessage = (type, msg) => type.verify(msg) === null;

Prevention

When it happens

Trigger: Deleting a field marked `required` in the .proto from the edited JSON and saving; typing a string into an int32 field (fromObject coerces where it can, verify catches what it cannot); setting an enum field to a name or number not declared in the enum; assigning an object where a repeated scalar array is expected.

Common situations: Editing decoded messages whose schema has required fields; hand-crafting enum values; schema drift — the Redis value was written with an older .proto that had different field types than the currently bound one.

Understand the failure class

Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.

Related errors


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