{"record":{"id":"e71444304bc62e0e","repo":"apache/hadoop","slug":"invalid-parameter-range-name-value-min-e71444","errorCode":null,"errorMessage":"Invalid parameter range: {name} = {value} < {min}","messagePattern":"Invalid parameter range: (.+?) = (.+?) < (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/resources/ShortParam.java","lineNumber":33,"sourceCode":" * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.apache.hadoop.hdfs.web.resources;\n\n/** Short parameter. */\nabstract class ShortParam extends Param<Short, ShortParam.Domain> {\n  ShortParam(final Domain domain, final Short value,\n      final Short min, final Short max) {\n    super(domain, value);\n    checkRange(min, max);\n  }\n\n  private void checkRange(final Short min, final Short max) {\n    if (value == null) {\n      return;\n    }\n    if (min != null && value < min) {\n      throw new IllegalArgumentException(\"Invalid parameter range: \" + getName()\n          + \" = \" + domain.toString(value) + \" < \" + domain.toString(min));\n    }\n    if (max != null && value > max) {\n      throw new IllegalArgumentException(\"Invalid parameter range: \" + getName()\n          + \" = \" + domain.toString(value) + \" > \" + domain.toString(max));\n    }\n  }\n\n  @Override\n  public String toString() {\n    return getName() + \"=\" + domain.toString(getValue());\n  }\n\n  /** @return the parameter value as a string */\n  @Override\n  public final String getValueString() {\n    return domain.toString(getValue());\n  }","sourceCodeStart":15,"sourceCodeEnd":51,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/resources/ShortParam.java#L15-L51","documentation":"ShortParam.checkRange (ShortParam.java:24-40) throws this IllegalArgumentException when a non-null short parameter value is below the subclass minimum. The built-in ShortParam subclasses are ReplicationParam ('replication', min 1, on CREATE/SETREPLICATION) and PermissionParam / UnmaskedPermissionParam ('permission'/'unmasked.permission', min 0 max 01777, parsed radix 8), so the error means replication < 1 or a negative permission octet.","triggerScenarios":"CREATE or SETREPLICATION with ?replication=0 or a negative number; ?permission=-1; ?unmasked.permission=-644; permission=5-11 (malformed arithmetic producing a negative after parse).","commonSituations":"Using 0 as 'use default replication' — WebHDFS wants the parameter omitted for that, not 0; permission strings with a leading '-' copied from chmod error output; scripts that compute replication = availableNodes - N and go negative on small clusters.","solutions":["Send replication >= 1 or omit the parameter to use the server default (dfs.namenode.replication.min / cluster default).","Send permissions as non-negative octal, e.g. permission=644; omit for defaults.","Clamp computed replication factors to at least 1 at the call site."],"exampleFix":"# before\ncurl -i -X PUT \"http://nn:9870/webhdfs/v1/f?op=CREATE&replication=0&permission=644\"\n# after\ncurl -i -X PUT \"http://nn:9870/webhdfs/v1/f?op=CREATE&replication=2&permission=644\"","handlingStrategy":"validation","validationCode":"static short checkedReplication(Short r) {\n  if (r == null) return -1;                    // omit param -> cluster default\n  if (r < 1) throw new IllegalArgumentException(\"replication must be >= 1: \" + r);\n  return r;\n}\nstatic short checkedPermission(short p) {\n  if (p < 0) throw new IllegalArgumentException(\"permission must be >= 0 (octal): \" + Integer.toOctalString(p));\n  return p;\n}","typeGuard":"static boolean isShortInRange(Short v, short min, short max) { return v == null || (v >= min && v <= max); }","tryCatchPattern":null,"preventionTips":["Treat 0 replication as 'omit the parameter', never send it.","Reject negative permission strings before URL building.","Boundary-test your client with replication=0 and permission=-1."],"tags":["webhdfs","query-param","range-validation","short","hdfs"],"backgroundTag":"query-parameter-out-of-range","analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}