{"record":{"id":"46a8f709450bc0ee","repo":"kubernetes/kops","slug":"error-parsing-actual-policy-for-sqs-q-v","errorCode":null,"errorMessage":"error parsing actual Policy for SQS %q: %v","messagePattern":"error parsing actual Policy for SQS %q: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/awstasks/sqs.go","lineNumber":116,"sourceCode":"\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error listing SQS queue tags: %v\", err)\n\t}\n\n\t// We parse both as JSON; if the json forms are equal we pretend the actual value is the expected value\n\tif q.Policy != nil {\n\t\texpectedPolicy, err := fi.ResourceAsString(q.Policy)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error reading expected Policy for SQS %q: %v\", aws.ToString(q.Name), err)\n\t\t}\n\t\texpectedJson := make(map[string]interface{})\n\t\terr = json.Unmarshal([]byte(expectedPolicy), &expectedJson)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error parsing expected Policy for SQS %q: %v\", aws.ToString(q.Name), err)\n\t\t}\n\t\tactualJson := make(map[string]interface{})\n\t\terr = json.Unmarshal([]byte(actualPolicy), &actualJson)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error parsing actual Policy for SQS %q: %v\", aws.ToString(q.Name), err)\n\t\t}\n\n\t\tif err := normalizePolicy(expectedJson); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif err := normalizePolicy(actualJson); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif reflect.DeepEqual(actualJson, expectedJson) {\n\t\t\tklog.V(2).Infof(\"actual Policy was json-equal to expected; returning expected value\")\n\t\t\tactualPolicy = expectedPolicy\n\t\t\tq.Policy = fi.NewStringResource(expectedPolicy)\n\t\t}\n\n\t}\n\n\tactual := &SQS{","sourceCodeStart":98,"sourceCodeEnd":134,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/awstasks/sqs.go#L98-L134","documentation":"The queue's actual Policy attribute on AWS is not valid JSON, so the normalized expected-vs-actual policy comparison fails; the queue carries a hand-edited or corrupted policy.","triggerScenarios":"Thrown at upup/pkg/fi/cloudup/awstasks/sqs.go:116 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix or clear the queue's Policy attribute in AWS so it is valid JSON","Or align the expected policy so it matches and overwrites the malformed one"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T07:17:12.445Z"}