{"record":{"id":"d3937b0e959edef5","repo":"apache/hadoop","slug":"improper-queue-name-namevalue","errorCode":null,"errorMessage":"Improper queue name : {nameValue}","messagePattern":"Improper queue name : (.+?)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/QueueConfigurationParser.java","lineNumber":279,"sourceCode":"    NodeList fields = queueNode.getChildNodes();\n    validate(queueNode);\n    List<Element> subQueues = new ArrayList<Element>();\n\n    String submitKey = \"\";\n    String adminKey = \"\";\n    \n    for (int j = 0; j < fields.getLength(); j++) {\n      Node fieldNode = fields.item(j);\n      if (!(fieldNode instanceof Element)) {\n        continue;\n      }\n      Element field = (Element) fieldNode;\n      if (QUEUE_NAME_TAG.equals(field.getTagName())) {\n        String nameValue = field.getTextContent();\n        if (field.getTextContent() == null ||\n          field.getTextContent().trim().equals(\"\") ||\n          field.getTextContent().contains(NAME_SEPARATOR)) {\n          throw new RuntimeException(\"Improper queue name : \" + nameValue);\n        }\n\n        if (!parent.equals(\"\")) {\n          name += parent + NAME_SEPARATOR;\n        }\n        //generate the complete qualified name\n        //parent.child\n        name += nameValue;\n        newQueue.setName(name);\n        submitKey = toFullPropertyName(name,\n            QueueACL.SUBMIT_JOB.getAclName());\n        adminKey = toFullPropertyName(name,\n            QueueACL.ADMINISTER_JOBS.getAclName());\n      }\n\n      if (QUEUE_TAG.equals(field.getTagName()) && field.hasChildNodes()) {\n        subQueues.add(field);\n      }","sourceCodeStart":261,"sourceCodeEnd":297,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/QueueConfigurationParser.java#L261-L297","documentation":"Inside a <queue>, the <name> element must be non-empty after trimming and must not contain the hierarchy separator ':' (NAME_SEPARATOR); otherwise the parser throws this RuntimeException naming the offending value. Hierarchy is expressed by nesting <queues> under a parent queue - the parser builds qualified names itself, so ':' in a name is reserved and rejected.","triggerScenarios":"<name></name> or whitespace-only content inside a queue definition; a hand-flattened hierarchical name like <name>prod:etl</name> instead of nesting child queues.","commonSituations":"Operators collapsing nested queues into one name; names pasted from other schedulers' configs (which use different separators); empty <name> produced by templating.","solutions":["Give every queue a non-empty name without ':'","Express hierarchy by nesting child <queues> inside the parent <queue>","Validate names in config review: ^[A-Za-z0-9._-]+$ and no ':'"],"exampleFix":"<!-- before -->\n<queue>\n  <name>prod:etl</name>   <!-- ':' is the reserved separator -->\n</queue>\n\n<!-- after: nested hierarchy, simple names -->\n<queue>\n  <name>prod</name>\n  <queues>\n    <queue><name>etl</name></queue>\n  </queues>\n</queue>","handlingStrategy":"validation","validationCode":"static boolean isValidQueueName(String n) {\n  return n != null && !n.trim().isEmpty() && !n.contains(\":\")\n      && n.matches(\"[A-Za-z0-9._-]+\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Reserve ':' for the parser; keep queue names to letters, digits, '.', '_', '-'","Encode hierarchy via nested <queues>, never via separators in <name>","Add a lint rule rejecting empty or separator-containing names"],"tags":["hadoop","mapreduce","queues","queue-name","configuration","validation"],"backgroundTag":"invalid-queue-name","analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}