Skip to content

I got type should be �K, got string. Field data is string #129

@NPhGit

Description

@NPhGit

In 1 of my 15 production pods for one service, the validation is invalid out of no where.
account_id is invalid: type should be �K, got string
This pod run around 60 days before this event. It run just fine before this from log/tracing. After that it always fail to validate.

Image

account_id is normal string '23982400' but any string got the same error which is correct for 'got string'. But �K part is incorrect.

The schema is simple:

...
"account_id": {
      "type": "string",
      "format_ex": "integer"
},

format_ex is nothing complex, it just check after validate string by implement "ValidateKeyword"

if !integerPattern.MatchString(integer) {//`^\d+$`
		return fmt.Errorf("invalid integer: %v", integer)
	}

But "format_ex" should not be the cause because it's different error message. I can't find root cause why "type": "string" is evaluate as �K. Some non-printable binary may follow this.

I load rootSchema (rs) once and use it after that

               schemaData, err := os.ReadFile(path.Join(RootDir(), "internal/schema/"+fileSchema+".json"))
		if err != nil {
			err = NewErrConfig(fmt.Sprintf("Validation schema file not found: %v", fileSchema), err.Error())
			return err
		}
		rs = new(jsonschema.Schema)
		// Keep rootSchemas
		rootSchemas[fileSchema] = rs

		if err := json.Unmarshal(schemaData, rs); err != nil {
			err = NewErrConfig(fmt.Sprintf("Validation schema file is invalid"), err.Error())
			return err
		}

Then validate by
keyErrors, err := rs.ValidateBytes(context.Background(), jsonStr)

version: v0.2.1
Do anyone may know or can guess the cause?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions