Oleksandr Kuzmenko created JCR-3940:
---------------------------------------

             Summary: Memory leak when calling RepositoryService.obtain with 
null workspaceName
                 Key: JCR-3940
                 URL: https://issues.apache.org/jira/browse/JCR-3940
             Project: Jackrabbit Content Repository
          Issue Type: Bug
          Components: jackrabbit-spi2dav
    Affects Versions: 2.11.3, 2.10.1
            Reporter: Oleksandr Kuzmenko
            Priority: Trivial


The bug is located in method 
*org.apache.jackrabbit.spi2dav.RepositoryServiceImpl.obtain(CredentialsWrapper 
credentials, String workspaceName)*

When passing null to *workspaceName* parameter that's what happens:
# an instance of org.apache.jackrabbit.spi2dav.SessionInfoImpl created with 
null workspace name (line 770)
# HttpClient created for this sessionInfo and stored to cache with sessionInfo 
as a key (line 779)
# a new sessionInfo created with effective workspace name (line 793)
# sessionInfo with effective workspace name returned to caller

The problem is that HttpClient created on step 2 will not be removed from cache 
on call to 
*org.apache.jackrabbit.spi2dav.RepositoryServiceImpl.dispose(SessionInfo)* 
because it is linked to sessionInfo created on step 1 which is thrown away on 
step 3.

The proposed solution is pretty easy - just call *removeClient(SessionInfo)* 
before creating new sessionInfo on step 3.
See attached patch.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to