db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] [Closed] (DERBY-6381) Invalid/unexpected configuration values should not be silently ignored
Date Fri, 18 Oct 2013 11:02:42 GMT

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

Knut Anders Hatlen closed DERBY-6381.
-------------------------------------

            Resolution: Duplicate
         Fix Version/s:     (was: 10.11.0.0)
                            (was: 10.0.2.2)
    Bug behavior facts:   (was: Deviation from standard)

Sounds like a good idea. DERBY-2844 suggests more or less the same improvement, so I'm closing
this report as a duplicate. Feel free to add a vote for that issue to make it more visible.
(Or a patch. :))

> Invalid/unexpected configuration values should not be silently ignored
> ----------------------------------------------------------------------
>
>                 Key: DERBY-6381
>                 URL: https://issues.apache.org/jira/browse/DERBY-6381
>             Project: Derby
>          Issue Type: Bug
>         Environment: any environment
>            Reporter: Sai Zhang
>   Original Estimate: 10m
>  Remaining Estimate: 10m
>
> Hi all,
> I was using Derby for a while, but found Derby does not handle misconfiguration well
in many cases, which confuses me a lot.
> Specifically, when users provide a wrong configuration option and Derby produces a wrong
result (or crashes), Derby should explicitly dump error message pointing to the mis-configured
option, rather than failing silently, or dumping stack traces, or simply restoring to the
default behavior. At least, the invalid configuration values should be logged.
> I have found many places in Derby which can be improved, to give users better experience.
> As a very simple example, Derby permits users to specify the log seversity via the "derby.stream.error.logSeverityLevel"
option. This option should only take *integer* values within a certain range.
> However, if a careless user uses "o" (not 0) or other illegal values like 1000, Derby
will automatically restore to use the default value notifying users that they provide a wrong
configuration option value. This occurs to me a few times, and makes me really confused.
> I dig into Derby's source code a bit, and found Derby silent ignore an invalid configuration
value, and use the default value. Here is the relevant code:
> PropertyUtil.java
> 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 feel at least, in the above example, the "//just leave the default" should log the
invalid value. So that users (like me) can easily identify their faults rather than spending
hours finding the root causes. Such code enhancement should be quite easy.
> I found a couple of such places. and wondering whether Derby developers would like to
know them, and how do you think about such "mis-handling"?
> Thanks
> -Sai



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Mime
View raw message