{"record":{"id":"39578b386019b478","repo":"apache/dubbo","slug":"defaultvalue-0","errorCode":null,"errorMessage":"defaultValue <= 0","messagePattern":"defaultValue <= 0","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"dubbo-common/src/main/java/org/apache/dubbo/common/URL.java","lineNumber":1759,"sourceCode":"        return StringUtils.isEmpty(value) ? defaultValue : Boolean.parseBoolean(value);\n    }\n\n    public boolean hasServiceParameter(String service, String key) {\n        String value = getServiceParameter(service, key);\n        return StringUtils.isNotEmpty(value);\n    }\n\n    public float getPositiveServiceParameter(String service, String key, float defaultValue) {\n        if (defaultValue <= 0) {\n            throw new IllegalArgumentException(\"defaultValue <= 0\");\n        }\n        float value = getServiceParameter(service, key, defaultValue);\n        return value <= 0 ? defaultValue : value;\n    }\n\n    public double getPositiveServiceParameter(String service, String key, double defaultValue) {\n        if (defaultValue <= 0) {\n            throw new IllegalArgumentException(\"defaultValue <= 0\");\n        }\n        double value = getServiceParameter(service, key, defaultValue);\n        return value <= 0 ? defaultValue : value;\n    }\n\n    public long getPositiveServiceParameter(String service, String key, long defaultValue) {\n        if (defaultValue <= 0) {\n            throw new IllegalArgumentException(\"defaultValue <= 0\");\n        }\n        long value = getServiceParameter(service, key, defaultValue);\n        return value <= 0 ? defaultValue : value;\n    }\n\n    public int getPositiveServiceParameter(String service, String key, int defaultValue) {\n        if (defaultValue <= 0) {\n            throw new IllegalArgumentException(\"defaultValue <= 0\");\n        }\n        int value = getServiceParameter(service, key, defaultValue);","sourceCodeStart":1741,"sourceCodeEnd":1777,"githubUrl":"https://github.com/apache/dubbo/blob/3a3043227f5571d25eb2889de5bca22f2914843b/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java#L1741-L1777","documentation":"Thrown by getPositiveServiceParameter(service, key, double defaultValue) when the caller passes a defaultValue that is <= 0. The 'positive' accessors enforce that the fallback itself is strictly positive so the returned value can never be zero/negative; a non-positive default is a programming error and is rejected immediately with IllegalArgumentException before any lookup.","triggerScenarios":"Calling url.getPositiveServiceParameter(service, key, <someDouble>) with a literal 0, negative number, or a computed default that evaluates to <= 0 (e.g. an uninitialized field defaulting to 0.0). The check fires at call time, independent of the actual configured value.","commonSituations":"Passing 0 as a placeholder default instead of a real positive fallback; a timeout/retry/weight default field left at its JVM zero default; copy-pasting a getPositive* call without supplying a meaningful default; mixing primitive defaults that silently zero-initialize.","solutions":["Pass a genuinely positive default value (e.g. the documented default timeout/weight) instead of 0.","If zero/negative should be allowed, use getServiceParameter(...) (the non-positive variant) instead of getPositiveServiceParameter.","Initialize the field holding the default with a real positive constant so it never evaluates to <= 0 at the call site."],"exampleFix":"// before\nint timeout = url.getPositiveServiceParameter(svc, \"timeout\", 0); // throws\n\n// after\ndouble factor = url.getPositiveServiceParameter(svc, \"factor\", 1.0);","handlingStrategy":"validation","validationCode":"// Ensure a strictly positive default before calling the positive accessor\nif (defaultValue <= 0) {\n    throw new IllegalArgumentException(\"defaultValue must be > 0 for key \" + key);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never pass 0 as a placeholder to getPositive* accessors.","Use getServiceParameter(...) when zero/negative is valid.","Initialize default fields to real positive constants."],"tags":["url","parameter","validation","programmer-error","precondition"],"backgroundTag":null,"analyzedSha":"3a3043227f5571d25eb2889de5bca22f2914843b","analyzedAt":"2026-08-14T00:43:19.853Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}