Robert Munteanu created OAK-3313:
------------------------------------

             Summary: 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


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)

Reply via email to