{"record":{"id":"3a3f6d0921303715","repo":"SigNoz/signoz","slug":"invalid-type-for-topic","errorCode":null,"errorMessage":"invalid type for Topic","messagePattern":"invalid type for Topic","errorType":"validation","errorClass":null,"httpStatus":400,"severity":"warning","filePath":"pkg/query-service/app/integrations/messagingQueues/kafka/translator.go","lineNumber":343,"sourceCode":"\tqueueType string,\n\tqueryContext string,\n) (*v3.ClickHouseQuery, error) {\n\n\tstart := messagingQueue.Start\n\tend := messagingQueue.End\n\n\tvar topic, partition string\n\n\tif queryContext == \"producer\" ||\n\t\tqueryContext == \"consumer\" ||\n\t\tqueryContext == \"consumer_partition_latency\" ||\n\t\tqueryContext == \"producer-throughput-details\" ||\n\t\tqueryContext == \"consumer-throughput-details\" {\n\n\t\tvar ok bool\n\t\ttopic, ok = messagingQueue.Variables[\"topic\"]\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"invalid type for Topic\")\n\t\t}\n\n\t\tif !(queryContext == \"consumer-throughput-details\" ||\n\t\t\tqueryContext == \"producer-throughput-details\") {\n\n\t\t\tpartition, ok = messagingQueue.Variables[\"partition\"]\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid type for Partition\")\n\t\t\t}\n\t\t}\n\t}\n\n\tvar query string\n\n\tswitch queryContext {\n\tcase \"producer\":\n\t\tquery = generateProducerSQL(start, end, topic, partition, queueType)\n\tcase \"consumer\":","sourceCodeStart":325,"sourceCodeEnd":361,"githubUrl":"https://github.com/SigNoz/signoz/blob/5069bf80b08f1f00d7e014eccc09902f9871004f/pkg/query-service/app/integrations/messagingQueues/kafka/translator.go#L325-L361","documentation":"Error returned by BuildClickHouseQuery when the 'topic' variable is missing while building throughput/latency detail queries that require it. The message 'invalid type for Topic' is misleading — it actually means the key is absent from the variables map.","triggerScenarios":"Calling Kafka overview/detail query contexts (e.g. producer-throughput-overview, consumer-latency-overview) without a topic in messagingQueue.Variables.","commonSituations":"Dashboard variables for topic not set, or a client querying detail endpoints without topic selection.","solutions":["Add the topic variable to the request","Set a non-empty default topic in the dashboard's template variable","Validate required variables per query context before calling"],"exampleFix":"// before\nVariables: map[string]string{}\n\n// after\nVariables: map[string]string{\"topic\": \"orders\", \"partition\": \"0\"}","handlingStrategy":"validation","validationCode":"const required = ['topic','partition'];\nfor (const k of required) if (!(k in mq.Variables)) throw new Error(`${k} required`);","typeGuard":"func hasRequiredVars(v map[string]string, keys ...string) bool { for _, k := range keys { if _, ok := v[k]; !ok { return false } }; return true }","tryCatchPattern":null,"preventionTips":["Set topic template variable defaults","Understand which contexts require which variables"],"tags":["kafka","messaging-queues","validation"],"backgroundTag":"missing-request-parameter","analyzedSha":"5069bf80b08f1f00d7e014eccc09902f9871004f","analyzedAt":"2026-08-28T06:22:12.824Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}