[ https://issues.apache.org/jira/browse/DERBY-3198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12549027 ]
Dyre Tjeldvoll commented on DERBY-3198: --------------------------------------- >From what I can tell, the call to Section.free() in >Statement.initResetStatement() can either come from a call to Statement's >constructor, or from a chain of 13(!) method calls originating from >ClientPooledConnection.reset(). My interpretation of this is that by freeing Sections in initResetStatement() we ensure that Statements belonging to unused Connections in a connection pool do not hold on to Section objects. This sounds reasonable, so I think it is a good idea to free setSpecialRegisterSection_ in Statement.initResetStatement() as well. > Using setQueryTimeout will leak sections > ----------------------------------------- > > Key: DERBY-3198 > URL: https://issues.apache.org/jira/browse/DERBY-3198 > Project: Derby > Issue Type: Bug > Components: JDBC, Network Client > Affects Versions: 10.3.1.4 > Reporter: Dyre Tjeldvoll > Assignee: Dyre Tjeldvoll > Attachments: derby-3198.v1.diff, derby-3198.v2.diff, > derby-3198.v3.diff, derby-3198.v4.diff, derby-3198.v5.diff, repro.diff > > > The implementation of setQueryTimeout relies on > NetStatementReply.writeSetSpecialRegister() which will allocate a dynamic > section when called. No reference to this Section object is kept, and so > Section.free() never gets called on it. Executing the same statment > repeatedly with a query timeout set results in the client driver throwing an > exception because the number of Sections exceeding 32000. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.