[ 
https://issues.apache.org/jira/browse/DERBY-6695?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Knut Anders Hatlen resolved DERBY-6695.
---------------------------------------

    Resolution: Duplicate

Hi Sai,

This sounds like a good suggestion.

The problem has been reported before (DERBY-2844), so I'm marking this report 
as a duplicate. Feel free to add your vote to that issue to give it higher 
visibility. Patches are also welcome. :)

> Improving configuration code: should not silently replace an invalid value 
> with the default one
> -----------------------------------------------------------------------------------------------
>
>                 Key: DERBY-6695
>                 URL: https://issues.apache.org/jira/browse/DERBY-6695
>             Project: Derby
>          Issue Type: Bug
>    Affects Versions: 10.10.1.1
>         Environment: All envrionments
>            Reporter: Sai Zhang
>              Labels: configuration, easyfix
>   Original Estimate: 5m
>  Remaining Estimate: 5m
>
> Dear Derby developers,
> I have been using Derby for a while, and think the configuration handling 
> code should be improved. In particular, Derby should check the validity of a 
> user-specified configuration value, rather than replacing an invalid value 
> with the default.
> Not sure that is a major issue or not. But at least it happens to me a couple 
> of times, and causes lots of confusion. Thus, I strongly suggest to fix this.
> How to reproduce the problem.
> set:
> derby.storage.pageSize= l2800 ( note the first char is "l" (L), not "1")
> clearly, this invalid value should be notified immediately (or at least 
> logged), however, Derby simply replaces that with the default value, which 
> seems to be "32768".  This is a real example, and causes confusion.
> I looked at the code and found the improving code:
> In class PropertyUtil
> public static int handleInt(String value, int min, int max, int defaultValue) 
> {
>               if (value == null)
>                       return defaultValue;
>               try {
>                       int intValue = Integer.parseInt(value);
>                       if ((intValue >= min) && (intValue <= max))
>                               return intValue;
>               }
>               catch (NumberFormatException nfe)
>               {
>                       // just leave the default.
>               }
>               return defaultValue;
>       }
> I would suggest to add logging statements for the invalid cases, and produce 
> an error message to indicate which configuration value is incorrect.
> I have a few more such cases, if you are interested in improving the code, I 
> am happy to share that too.
> Please let me know your thought.
> -Sai



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to