{"record":{"id":"67f3bbb3e9984689","repo":"apache/hadoop","slug":"unable-to-retrieve-jmx","errorCode":null,"errorMessage":"Unable to retrieve JMX: {}","messagePattern":"Unable to retrieve JMX: (.+?)","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"hadoop-tools/hadoop-dynamometer/hadoop-dynamometer-infra/src/main/java/org/apache/hadoop/tools/dynamometer/DynoInfraUtils.java","lineNumber":553,"sourceCode":"   * @param jmxBeanQuery The JMX bean query to execute; should return a\n   *                     JMX property matching {@code jmxProperty}.\n   * @param property The name of the JMX property whose value should be polled.\n   * @return The value associated with the property.\n   */\n  static String fetchNameNodeJMXValue(Properties nameNodeProperties,\n      String jmxBeanQuery, String property) throws IOException {\n    URI nnWebUri = getNameNodeWebUri(nameNodeProperties);\n    URL queryURL;\n    try {\n      queryURL = new URL(nnWebUri.getScheme(), nnWebUri.getHost(),\n          nnWebUri.getPort(), \"/jmx?qry=\" + jmxBeanQuery);\n    } catch (MalformedURLException e) {\n      throw new IllegalArgumentException(\"Invalid JMX query: \\\"\" + jmxBeanQuery\n          + \"\\\" against \" + \"NameNode URI: \" + nnWebUri);\n    }\n    HttpURLConnection conn = (HttpURLConnection) queryURL.openConnection();\n    if (conn.getResponseCode() != 200) {\n      throw new IOException(\n          \"Unable to retrieve JMX: \" + conn.getResponseMessage());\n    }\n    InputStream in = conn.getInputStream();\n    JsonFactory fac = new JsonFactory();\n    JsonParser parser = fac.createParser(in);\n    if (parser.nextToken() != JsonToken.START_OBJECT\n        || parser.nextToken() != JsonToken.FIELD_NAME\n        || !parser.getCurrentName().equals(\"beans\")\n        || parser.nextToken() != JsonToken.START_ARRAY\n        || parser.nextToken() != JsonToken.START_OBJECT) {\n      throw new IOException(\n          \"Unexpected format of JMX JSON response for: \" + jmxBeanQuery);\n    }\n    int objectDepth = 1;\n    String ret = null;\n    while (objectDepth > 0) {\n      JsonToken tok = parser.nextToken();\n      if (tok == JsonToken.START_OBJECT) {","sourceCodeStart":535,"sourceCodeEnd":571,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-tools/hadoop-dynamometer/hadoop-dynamometer-infra/src/main/java/org/apache/hadoop/tools/dynamometer/DynoInfraUtils.java#L535-L571","documentation":"Error \"Unable to retrieve JMX: {}\" thrown in apache/hadoop.","triggerScenarios":"The HTTP request to the NameNode /jmx endpoint fails (connection refused, timeout, or non-OK status), so the JMX properties cannot be retrieved.","commonSituations":"See trigger scenarios.","solutions":["Confirm the NameNode JMX servlet (usually /jmx) is reachable from the dynamometer host and that authentication succeeds."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}