db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mamta A. Satoor (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-4200) client side OutOfMemoryError running derbnetclientmats:jdbcapi/derbyStress
Date Thu, 13 Aug 2009 15:10:14 GMT

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

Mamta A. Satoor updated DERBY-4200:
-----------------------------------

    Attachment: vmware10_5_SR10HeapDump.phd
                vmware10_5_SR7HeapDump.phd
                windows10_5_HeapDump.phd

I changed derbyStress.java's testDerby3316() method to gc() and then to dump the heap in my
10.5 codeline. I ran this changed derbyStress in following 3 scenarios
1)my Windows XP box with IBM 1.5 jdk. Heap dump is attached as windows10_5_HeapDump.phd
2)on the vmware machine(vmware is where we have been seeing intermittent out of memory errors)
using IBM 1.5 SR7 jdk. Heap dump is attached as vmware10_5_SR7HeapDump.phd
3)on the vmware using IBM 1.5 SR10 jdk. Heap dump is attached as vmware10_5_SR10HeapDump.phd

In each of these dumps, using the HeapAnalyzer, I searched for org/apache/derby/client/net/NetStatement
objects. 
1)On Windows XP box, I only found 9 org/apache/derby/client/net/NetStatement objects
2)On vmware with IBM 1.5 SR7, I found 310 org/apache/derby/client/net/NetStatement objects
3)On vmware with IBM 1.5 SR10, I found 80 org/apache/derby/client/net/NetStatement objects

So, there is definitely improvement over number of objects from IBM 1.5 SR7 to IBM 1.5 SR10
on vmware. I wonder if the experiment above makes this more of a platform issue vs regression?

BTW, after my changes, the derbyStress method in question looks as follows(the changes are
3 lines under the comment //Following 3 lines are to dump the heap)
    public static void testDerby3316() throws Exception {
          System.out.println("DERBY-3316: Multiple statement executions ");
          Connection conn = ij.startJBMS();
                
          Statement s = conn.createStatement();
          s.executeUpdate("CREATE TABLE TAB (col1 varchar(32672))");
          PreparedStatement ps = conn.prepareStatement("INSERT INTO TAB VALUES(?)");
          ps.setString(1,"hello");
          ps.executeUpdate();
          ps.setString(1,"hello");
          ps.executeUpdate();
          ps.close();
          for (int i = 0; i < 2000; i++)
          {
                  s = conn.createStatement();
                  ResultSet rs = s.executeQuery("SELECT * from tab");
                  // drain the resultset
                  while (rs.next());
                  // With DERBY-3316, If I don't explicitly close the resultset or 
                  // statement, we get a leak.
                  //rs.close();
                  //s.close();
          }    
          //Following 3 lines are to dump the heap
          System.gc(); 
          com.ibm.jvm.Dump.HeapDump();
          com.ibm.jvm.Dump.JavaDump();
          // close the connection to free up all the result sets that our sloppy 
          // user didn't close.
          conn.close();
          conn = ij.startJBMS();
          s = conn.createStatement();
          s.executeUpdate("DROP TABLE TAB");
          s.close();
          conn.close();
       }


> client side OutOfMemoryError running derbnetclientmats:jdbcapi/derbyStress
> --------------------------------------------------------------------------
>
>                 Key: DERBY-4200
>                 URL: https://issues.apache.org/jira/browse/DERBY-4200
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Client
>    Affects Versions: 10.5.2.0
>         Environment: java version "1.5.0"
> Java(TM) 2 Runtime Environment, Standard Edition (build pxi32devifx-20070806 (SR5a))
> IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Linux x86-32 j9vmxi3223-20070426 (JIT enabled)
> J9VM - 20070420_12448_lHdSMR
> JIT  - 20070419_1806_r8
> GC   - 200704_19)
> JCL  - 20070725
> SUSE linux running on vmware.
>            Reporter: Kathey Marsden
>         Attachments: heapdump.20090428.084024.25679.phd, javacore.20090428.084024.25679.txt,
vmware10_5_SR10HeapDump.phd, vmware10_5_SR7HeapDump.phd, windows10_5_HeapDump.phd
>
>
> On the nightly run for 4/27 - 10.5.1.2 - (769232), I saw client jdbcapi/derbystress.java
 run out of heap space.   The test has not failed like this before on the same machine with
the same JVM, and the one checkin on that day DERBY-3991 could not account for this failure.
> I will attach the javacore and heapdump.  Taking a quick look at the heap dump, it seems
to have a lot of client side Statement objects, which seems to be just the leak the test is
checking for.  Note: the test runs with 64MB heap.  It would be interesting to run with other
jvms and force a gc() and a heap dump at this point in the test and see if we still have a
lot of Statement objects or if this is a specific platform/JVM issue.
> The trace at the time of failure was :
> 1XMCURTHDINFO  Current Thread Details
> NULL           ----------------------
> 3XMTHREADINFO      "main" (TID:0x0808D300, sys_thread_t:0x0805CBC8, state:R, native ID:0x0000644F)
prio=5
> 4XESTACKTRACE          at org/apache/derby/client/am/Cursor.allocateCharBuffer(Bytecode
PC:77(Compiled Code))
> 4XESTACKTRACE          at org/apache/derby/client/net/NetStatementReply.parseSQLDTARDarray(Bytecode
PC:77(Compiled Code))
> 4XESTACKTRACE          at org/apache/derby/client/net/NetStatementReply.parseQRYDSC(Bytecode
PC:10(Compiled Code))
> 4XESTACKTRACE          at org/apache/derby/client/net/NetStatementReply.parseOpenQuery(Bytecode
PC:104(Compiled Code))
> 4XESTACKTRACE          at org/apache/derby/client/net/NetStatementReply.parseOPNQRYreply(Bytecode
PC:14(Compiled Code))
> 4XESTACKTRACE          at org/apache/derby/client/net/NetStatementReply.readOpenQuery(Bytecode
PC:6(Compiled Code))
> 4XESTACKTRACE          at org/apache/derby/client/net/StatementReply.readOpenQuery(Bytecode
PC:7(Compiled Code))
> 4XESTACKTRACE          at org/apache/derby/client/net/NetStatement.readOpenQuery_(Bytecode
PC:11(Compiled Code))
> 4XESTACKTRACE          at org/apache/derby/client/am/Statement.readOpenQuery(Bytecode
PC:6(Compiled Code))
> 4XESTACKTRACE          at org/apache/derby/client/am/Statement.flowExecute(Bytecode PC:581(Compiled
Code))
> 4XESTACKTRACE          at org/apache/derby/client/am/Statement.executeQueryX(Bytecode
PC:3(Compiled Code))
> 4XESTACKTRACE          at org/apache/derby/client/am/Statement.executeQuery(Bytecode
PC:3(Compiled Code))
> 4XESTACKTRACE          at org/apache/derbyTesting/functionTests/tests/jdbcapi/derbyStress.testDerby3316(derbyStress.java:156)
> 4XESTACKTRACE          at org/apache/derbyTesting/functionTests/tests/jdbcapi/derbyStress.main(derbyStress.java:57(Compiled
Code))

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message