{"record":{"id":"3682029e3db5e4d7","repo":"apache/hadoop","slug":"query-param-key-should-not-be-empty","errorCode":null,"errorMessage":"Query param key should not be empty","messagePattern":"Query param key should not be empty","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/utils/UriUtils.java","lineNumber":142,"sourceCode":"\n  /**\n   * Generic function to mask a set of query parameters partially/fully and\n   * return the resultant query string\n   * @param keyValueList List of NameValuePair instances for query keys/values\n   * @param queryParamsForFullMask values for these params will appear as \"XXXX\"\n   * @param queryParamsForPartialMask values will be masked with 'X', except for\n   *                                  the last PARTIAL_MASK_VISIBLE_LEN characters\n   * @param queryLen to initialize StringBuilder for the masked query\n   * @return the masked url query part\n   */\n  public static String maskUrlQueryParameters(List<NameValuePair> keyValueList,\n      Set<String> queryParamsForFullMask,\n      Set<String> queryParamsForPartialMask, int queryLen) {\n    StringBuilder maskedUrl = new StringBuilder(queryLen);\n    for (NameValuePair keyValuePair : keyValueList) {\n      String key = keyValuePair.getName();\n      if (key.isEmpty()) {\n        throw new IllegalArgumentException(\"Query param key should not be empty\");\n      }\n      String value = keyValuePair.getValue();\n      maskedUrl.append(key);\n      maskedUrl.append(EQUAL);\n      if (value != null && !value.isEmpty()) { //no mask\n        if (queryParamsForFullMask.contains(key)) {\n          maskedUrl.append(FULL_MASK);\n        } else if (queryParamsForPartialMask.contains(key)) {\n          int valueLen = value.length();\n          int maskedLen = valueLen > PARTIAL_MASK_VISIBLE_LEN\n              ? PARTIAL_MASK_VISIBLE_LEN : valueLen / 2;\n          maskedUrl.append(value, 0, valueLen - maskedLen);\n          maskedUrl.append(StringUtils.repeat(CHAR_MASK, maskedLen));\n        } else {\n          maskedUrl.append(value);\n        }\n      }\n      maskedUrl.append(AND_MARK);","sourceCodeStart":124,"sourceCodeEnd":160,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/utils/UriUtils.java#L124-L160","documentation":"Error \"Query param key should not be empty\" thrown in apache/hadoop.","triggerScenarios":"UriUtils is asked to add a query parameter with an empty key.","commonSituations":"See trigger scenarios.","solutions":["Pass a non-empty query parameter key when building the URI.","Fix caller logic that generates parameter names."],"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"}