{"record":{"id":"d8656119130a9282","repo":"wtfutil/wtf","slug":"invalid-query-file-format-s-expected-yaml","errorCode":null,"errorMessage":"invalid query file format: %s, expected .yaml","messagePattern":"invalid query file format: (.+?), expected \\.yaml","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"modules/azurelogs/config.go","lineNumber":37,"sourceCode":"\n// readQueryFile reads and parses a query configuration file\nfunc readQueryFile(sess *Session, queryPath string) error {\n\tfile, err := os.OpenFile(queryPath, os.O_RDONLY, 0o600)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfilename := file.Name()\n\tif len(filename) > 5 && filename[len(filename)-5:] == \".yaml\" {\n\t\tvar configFile QueryFile\n\t\tconfigFile, err = readQueryFileContent(queryPath)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tsess.QueryFile = configFile\n\t} else {\n\t\treturn fmt.Errorf(\"invalid query file format: %s, expected .yaml\", filename)\n\t}\n\n\treturn nil\n}\n\n// readQueryFileContent reads a single config file and returns a QueryFile struct\nfunc readQueryFileContent(filePath string) (QueryFile, error) {\n\tvar configFile QueryFile\n\tdata, err := os.ReadFile(filePath)\n\tif err != nil {\n\t\treturn configFile, fmt.Errorf(\"failed to read query config file %s: %w\", filePath, err)\n\t}\n\n\terr = yaml.Unmarshal(data, &configFile)\n\tif err != nil {\n\t\treturn configFile, fmt.Errorf(\"failed to parse YAML in config file %s: %w\", filePath, err)\n\t}\n","sourceCodeStart":19,"sourceCodeEnd":55,"githubUrl":"https://github.com/wtfutil/wtf/blob/bb838c1ccb0f0f3223690df44afdec663d622881/modules/azurelogs/config.go#L19-L55","documentation":"Validation guard in readQueryFile: the query configuration path does not end with the .yaml extension (the code compares the last 5 characters), so the azurelogs module refuses to parse it as a query file.","triggerScenarios":"Thrown at modules/azurelogs/config.go:37 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Rename the query config file so it ends with .yaml","Fix the queryPath setting to point at the .yaml file","Note .yml is not accepted by this check — use the .yaml extension"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"bb838c1ccb0f0f3223690df44afdec663d622881","analyzedAt":"2026-09-03T17:02:45.030Z","contentChangedAt":"2026-09-03T17:02:45.030Z","schemaVersion":2},"datasetVersion":"2026-09-11T00:17:11.886Z"}