db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Deepa Remesh (JIRA)" <derby-...@db.apache.org>
Subject [jira] Updated: (DERBY-375) Specification of incomplete server properties on command line causes NPE with NetworkServerControl when starting the server.
Date Fri, 14 Oct 2005 23:48:45 GMT
     [ http://issues.apache.org/jira/browse/DERBY-375?page=all ]

Deepa Remesh updated DERBY-375:

    Attachment: derby-375.diff

Attaching a patch 'derby-375.diff' for this problem. Network server was giving NPE when system
properties were specified without values. When a system property is specified without any
value, the getProperty method in java.util.Properties returns an empty string. For the following
network server properties (minThreads, maxThreads, timeSlice and portNumber), 'getPropertyInfo'
method in NetworkServerControlImpl will pass this empty string to 'getIntPropVal'. This will
try to get the Integer value and will cause an exception. To display this exception, 'localizeMessage'
method is used. At this point, 'langUtil' which is passed to 'localizeMessage' is not yet
initialized and this results in the NPE. 

The patch does the following:
1. Moves the call to 'init', which initializes 'langUtil', before the call to 'getPropertyInfo'
method in the constructors of NetworkServerControlImpl.
2. If the system properties are specified without values, use defaults for them.
3. For 'derby.drda.traceDirectory' property following is mentioned in the doc - "If the derby.system.home
property has been set, it is the default. Otherwise, the default is the current directory.".
 'getPropertyInfo' was getting the value of 'derby.system.home' but not using it as default
for 'derby.drda.traceDirectory'.
So the current directory was always getting used as default. Changed this.
4. When I added the default for 'derby.drda.traceDirectory', the tests derbynet/getCurrentProperties.java
and derbynet/sysinfo.java had additional lines for derby.drda.traceDirectory in their outputs.
Since the directory listed is dependent on the test directory, I have sed out 'traceDirectory'
lines for these tests.
5. Adds tests to derbynet/testProperties.java.
6. Fixes javadoc for 'traceDirectory' in NetworkServerControl.

Ran derbyall on Windows XP with Sun jdk 1.4.2. 1 test failed (derbyall/derbyall.fail:lang/ConcurrentImplicitCreateSchema.java).
The failure is not related to this change.

This patch also fixes DERBY-613 (Intended location of network server tracing files is not
clear.). Please review/commit this patch. I'll open a sub-task to update documentation with
the correct default values for maxThreads, minThreads and timeSlice.

> Specification of incomplete server properties on command line causes NPE with NetworkServerControl
when starting the server.
> ----------------------------------------------------------------------------------------------------------------------------
>          Key: DERBY-375
>          URL: http://issues.apache.org/jira/browse/DERBY-375
>      Project: Derby
>         Type: Bug
>   Components: Network Server
>     Versions:,
>  Environment: Running Derby Network Server and using command line API to start the server.
>     Reporter: A B
>     Assignee: Deepa Remesh
>      Fix For:
>  Attachments: derby-375.diff, derby-375.status, derbyall_report.txt
> When using the command line to start the Network Server, there a couple of cases where
if a property is specified on the command line but no value is given (ex. "-Dderby.drda.maxThreads"
instead of "-Dderby.drda.maxThreads=3"), a Null Pointer Exception will result, when the correct
behavior should be to use some kind of default.
> For example:
> > java -Dderby.drda.maxThreads org.apache.derby.drda.NetworkServerControl start -p
> java.lang.NullPointerException
>         at org.apache.derby.impl.drda.NetworkServerControlImpl.localizeMessage(NetworkServerControlImpl.java)
>         at org.apache.derby.impl.drda.NetworkServerControlImpl.consolePropertyMessageWork(NetworkServerControlImpl.java)
>         at org.apache.derby.impl.drda.NetworkServerControlImpl.consolePropertyMessage(NetworkServerControlImpl.java)
>         at org.apache.derby.impl.drda.NetworkServerControlImpl.getIntPropVal(NetworkServerControlImpl.java)
>         at org.apache.derby.impl.drda.NetworkServerControlImpl.getPropertyInfo(NetworkServerControlImpl.java)
>         at org.apache.derby.impl.drda.NetworkServerControlImpl.<init>(NetworkServerControlImpl.java)
>         at org.apache.derby.drda.NetworkServerControl.main(NetworkServerControl.java)
> Note that even though we see this NPE, it appears that the server still starts up, although
the startup may not be complete (subsequent attempts to connect  might lead to errors like
"Invalid reply from network server: Insufficient data.").
> For other properties, this will just result in the default value being used, which is
the correct behavior.  For example:
> > java -Dderby.drda.host org.apache.derby.drda.NetworkServerControl start -p 1528
> Server is ready to accept connections on port 1528.

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:

View raw message