Details
-
Bug
-
Resolution: Answered
-
Low
-
3.0.0
-
None
-
Severity 3 - Minor
-
4
-
Description
All repositories are acquired() to get commiter stats, but never released until the request-level Disposer frees them.
Consider getting the data from elsewhere, without traversing all the caches (Lucene commiter index?)
Caused by: java.lang.OutOfMemoryError: OutOfMemoryError during opening of InfinityDB file .../var/cache/.../revcache/data.bin
at com.cenqua.obfuscate.idbn40xhg._n40xhgIDB.open(InfinityDB_3.0.21:811)
at com.cenqua.obfuscate.idbn40xhg._n40xhgIDB.open(InfinityDB_3.0.21:741)
at com.cenqua.obfuscate.idbn40xhg._n40xhgIDB.open(InfinityDB_3.0.21:650)
at com.cenqua.fisheye.infinitydb.InfinityDbHandle.open(InfinityDbHandle.java:72)
at com.cenqua.fisheye.infinitydb.InfinityDbHandle.get(InfinityDbHandle.java:54)
at com.cenqua.fisheye.rep.impl.CommonChangeSetDAO.createAllAuthorsSet(CommonChangeSetDAO.java:699)
at com.cenqua.fisheye.rep.impl.CommonChangeSetDAO.access$000(CommonChangeSetDAO.java:59)
at com.cenqua.fisheye.rep.impl.CommonChangeSetDAO$1.create(CommonChangeSetDAO.java:71)
at com.cenqua.fisheye.rep.impl.CommonChangeSetDAO$1.create(CommonChangeSetDAO.java:67)
at com.atlassian.util.concurrent.LazyReference$Sync.run(LazyReference.java:321)
at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:143)
at com.atlassian.util.concurrent.LazyReference.get(LazyReference.java:112)
at com.cenqua.fisheye.rep.impl.CommonChangeSetDAO.getAllAuthors(CommonChangeSetDAO.java:689)
at com.cenqua.fisheye.cache.BaseRevisionCache.getAllAuthors(BaseRevisionCache.java:920)
at com.cenqua.fisheye.model.manager.CommitterUserMappingManagerImpl.getImplicitCommittersForUserInRep(CommitterUserMappingManagerImpl.java:342)
at sun.reflect.GeneratedMethodAccessor585.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at com.googlecode.ehcache.annotations.interceptor.EhCacheInterceptor.invokeCacheable(EhCacheInterceptor.java:133)
at com.googlecode.ehcache.annotations.interceptor.EhCacheInterceptor.invoke(EhCacheInterceptor.java:79)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy40.getImplicitCommittersForUserInRep(Unknown Source)
at com.cenqua.fisheye.model.manager.CommitterUserMappingManagerImpl.getAllCommittersForUser(CommitterUserMappingManagerImpl.java:294)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at com.googlecode.ehcache.annotations.interceptor.EhCacheInterceptor.invokeCacheable(EhCacheInterceptor.java:133)
at com.googlecode.ehcache.annotations.interceptor.EhCacheInterceptor.invoke(EhCacheInterceptor.java:79)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy40.getAllCommittersForUser(Unknown Source)
at com.cenqua.fisheye.model.manager.CommitterUserMappingManagerImpl.getAllCommittersForUser(CommitterUserMappingManagerImpl.java:281)
Workaround #1
Increase the heap size
Workaround #2
Disable implicit committers.
JVM property fisheye.enable.implicit.committers
Whether user-committer mapping should query repository cache to find implicit committers. Enabled by default.
- In case of case of large repositories with many commit authors fetching this data may take more time,
- prolonging sql queries and thus consuming all database connections available - as this search is executed
- inside an sql query which collects both explicit committers (from database) and implicit ones (from infinitydb).
Note: this is an undocumented property, not listed on https://confluence.atlassian.com/fisheye/jvm-system-properties-960155689.html
Attachments
Issue Links
- mentioned in
-
Page Loading...