[ https://issues.apache.org/jira/browse/OAK-3313?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Marcel Reutegger updated OAK-3313: ---------------------------------- Fix Version/s: 1.2.5 1.0.20 Merged into 1.2 branch: http://svn.apache.org/r1701622 and 1.0 branch: http://svn.apache.org/r1701627 > Many tests leak DocumentNodeStore instances > ------------------------------------------- > > Key: OAK-3313 > URL: https://issues.apache.org/jira/browse/OAK-3313 > Project: Jackrabbit Oak > Issue Type: Bug > Components: core > Reporter: Robert Munteanu > Assignee: Marcel Reutegger > Fix For: 1.0.20, 1.3.6, 1.2.5 > > Attachments: > 0001-OAK-3313-Many-tests-leak-DocumentNodeStore-instances.patch > > > Many tests use the {{DocumentMK.Builder}} to create {{DocumentNodeStore}} > instances in tests. The cleanup is manual, either in an {{@After}} method or > in the test method. The problems arise when the cleanup is forgotten or not > done in a finally block. The problem appears when too many threads are > started but not stopped and hit machine resource limitations. > To solve this problem I propose using a JUnit {{@Rule}} which returns a > custom {{DocumentMK.Builder}} instance which shuts down the > {{DocumentNodeStore}} that it has created when the test method is finished. > I was able to replace most of the leaks by using the > {{DocumentMkBuilderProvider}} rule, as follows: > Before: > {code}@Test > public void someTest() { > DocumentNodeStore = new DocumentMK.Builder().getNodeStore(); > // test code > store.dispose(); > }{code} > After: > {code} > @Rule > public DocumentMkBuilderProvider builderProvider = new > DocumentMkBuilderProvider(); > @Test > public void someTest() { > DocumentNodeStore = builderProvider.newBuilder().getNodeStore(); > // test code > }{code} > I haven't touched tests which did not leak DocumentNodeStore instances. -- This message was sent by Atlassian JIRA (v6.3.4#6332)