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

Knut Anders Hatlen updated DERBY-5705:
--------------------------------------

    Attachment: d5705-1a.diff

Attaching a patch that makes the following changes:

- Use the (already existing) method 
DatabasePropertyTestSetup.getNoTeardownInstance() instead of having many 
DatabasePropertyTestSetup classes that override tearDown() with an empty 
method. (To make it possible to have the new logic that releases the resources 
at just one location.)

- Make the tearDown() method in the decorator returned by 
DatabasePropertyTestSetup.getNoTeardownInstance() close and null out the 
default connection.

These changes preserve the main purpose of these decorators, which is that they 
shouldn't reset the properties in tearDown(), and at the same time allows the 
connection and its resources to be garbage collected once they're no longer 
used.

suites.All ran successfully with the patch.

I also verified that the patch reduced the number of BasicDatabase instances 
still held on the heap after running RolesTest and DboPowersTest. The numbers 
were reduced from 8 to 4, and from 50 to 36, respectively. (I had expected that 
the numbers would go down to one or two (wombat + dbsqlauth), so there may 
still be some other related bugs.)
                
> Authorization decorators don't null out connections when done
> -------------------------------------------------------------
>
>                 Key: DERBY-5705
>                 URL: https://issues.apache.org/jira/browse/DERBY-5705
>             Project: Derby
>          Issue Type: Bug
>          Components: Test
>    Affects Versions: 10.9.0.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>         Attachments: d5705-1a.diff
>
>
> Some decorators used to test authorization don't close and null out 
> references to Connection objects when they have completed. Since these tests 
> often create/boot single-use databases, and the Connection objects have 
> references to the database instance and, directly or indirectly, many of its 
> modules, this prevents much garbage from being removed from the heap after 
> the tests have completed and shut down their single-use databases. We should 
> close the default connection and clear the reference to it when tearing down 
> these decorators, so the space is released for subsequent tests to use.
> This problem affects decorators returned by the following methods:
> DatabasePropertyTestSetup.builtinAuthenticationNoTeardown()
> TestConfiguration.sqlAuthorizationDecorator()
> TestConfiguration.sqlAuthorizationDecoratorSingleUse()
> These methods return modified versions of DatabasePropertyTestSetup where the 
> tearDown() method is a no-op.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to