[ 
http://issues.apache.org/jira/browse/DERBY-1564?page=comments#action_12423846 ] 
            
John H. Embretsen commented on DERBY-1564:
------------------------------------------

In the DerbyNet (and DerbyNetClient) framework the test harness spawns two new 
JVMs when running the lang/wisconsin.java test. One JVM is the Network Server 
JVM, and the other is the wisconsin test itself. It seems to me that the 
failure reported in this Jira-issue is caused by an OutOfMemoryError in the 
Network Server JVM, since the error is reported in the DerbyNet.err file only. 

Hence, regression testers need to be aware of which heap size values actually 
has any effect on both JVMs when using the jvmflags property. Because of the 
complexity of the test harness, understanding this is not necessarily a trivial 
task, especially since the jvmflags property has a different effect in version 
10.1.x.x vs. version 10.2.x.x.

Kathey recommended in a previous comment to run the test with reduced heap 
sizes, and compare results for 10.1 and 10.2. I have a few 
observations/recommendations in that regard, based on test runs with the Sun 
1.5 JVM (using "jmap -heap <jvmid>" to get the actual max size of the JVM heap) 
and Derby versions 10.1.3.1 and 10.2.0.4:

10.1.3.1 testing:
---------------------------

Test name: lang/wisconsin.sql
Example heap size: 12 MB

- Use -Djvmflags="-ms12m -mx12m" (including quotes) (12M also works; these 
values are case insensitive).

- By using -Djvmflags=-mx12m, the Network Server process fails ("Incompatible 
initial and maximum heap sizes specified") since the harness automatically adds 
an -ms16777216 (initial heap size 16 MB), which is higher than the max heap 
size of 12 MB. Hence, using -mx only in jvmflags works only if the value of -mx 
is 16m or larger.

- By using -Djvmflags="-Xms12 -Xmx12m", the harness automatically adds "- 
ms16777216 -mx33554432" (excluding quotes) when starting the server JVM. These 
options are added _after_ the -Xms and -Xmx options , thus overriding the 12 MB 
values so that the network server will have a max heap size of 32 MB instead of 
12 MB.

- Default heap size on my machine seems to be 64 MB for both JVMs. I don't know 
why the wisconsin_app.properties jvmflags (-ms32M -mx128M) are not used.


10.2.0.4 testing:
---------------------------

Test name: lang/wisconsin.java
Example heap size: 12 MB

- Use -Djvmflags=-Xms12m^-Xmx12m

The harness adds "-ms32M -mx128M" (from wisconsin_app.properties) automatically 
to the server JVM command, but puts it _before_ the jvmflags from the command 
line. Using both -Xms and -Xmx ensures that the values from 
wisconsin_app.properties are overridden, probably thanks to DERBY-1091.

- By using -Djvmflags=-Xmx12m, the "Incompatible initial and maximum heap sizes 
specified" problem from above reappears, since the max value of 12 MB is 
smaller than the initial value of 32 MB.

 - By using  -Djvmflags="-ms12m -mx12m", the server JVM heap size settings from 
the command line are overridden by the settings set by the test harness (a test 
harness bug?). The resulting java command line flags for the server JVM is: 
"java -ms32M -mx128M -ms12m -mx12m -ms16777216 -mx33554432", and the last value 
is used, which for max heap size is 33554432, which is 32 MB. Hence, the test 
may pass when it would have failed with correct jvm flags.

- It seems like the wisconsin_app.properties jvmflags values are overridden by 
the above mentioned server flags (-ms16777216 -mx33554432) when running the 
10.2 version of the test without specifying heap size on the command line.


I got the flags passed on by the test harness by adding -Dverbose=true when 
starting the test via RunTest.

I hope this is useful when/if someone decides to start following the testing 
approach suggested by Kathey. I will run some tests myself, and will post the 
results here (or I will create a wiki page), presumably tomorrow, so that we 
may know more about what's going on.

Please yell if you think I have made any errors regarding the test harness and 
its jvmflags property, or drawn any wrong conclusions.


> wisconsin.sql test failed in DerbyNet framework, VM for network server got 
> OutOfMemoryError
> -------------------------------------------------------------------------------------------
>
>                 Key: DERBY-1564
>                 URL: http://issues.apache.org/jira/browse/DERBY-1564
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Server, Test
>    Affects Versions: 10.2.0.0
>         Environment: Solaris Sparc, Java 6, running in a Solaris Zone. 
> DerbyNet framework.
>            Reporter: Andreas Korneliussen
>            Priority: Critical
>         Attachments: wisconsin.tar.gz
>
>
> The wisconsin test failed when running it in DerbyNet framework. No output in 
> the outfile. The DerbyNet.err file has one message:
> Exception in thread "Thread-2" java.lang.OutOfMemoryError: Java heap space
> The test was run against 10.2.0.4 snapshot release.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to