Uploaded image for project: 'FishEye'
  1. FishEye
  2. FE-4773

OutOfMemoryError when Start Revision and Initial Import: "No initial import" are set

    XMLWordPrintable

Details

    Description

      FishEye admin may decide to index only subset of SVN repository only, by providing "Start Revision" setting on repository admin screen. It is expected that this would reduce indexing time, but in some circumstances it may not happen. Basically when Start Revision setting was set, FishEye would start from checking out the whole repository at a given revision. If repository is large, contains several (million) paths and several branches this might be a costly operation leading to OutOfMemoryError and being unable to finish.

      Perhaps it could defer checking out the content to the later indexing stages, retrieve manifest earlier on and finish initial pump quickly?

      Leak Suspect report was attached - java_pid15200_Leak_Suspects.zip. Example OutOfMemoryError stack trace:

      InitPing2 large-svn
        at com.google.common.collect.MapMakerInternalMap$Strength$1.referenceValue(Lcom/google/common/collect/MapMakerInternalMap$Segment;Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;Ljava/lang/Object;)Lcom/google/common/collect/MapMakerInternalMap$ValueReference; (MapMakerInternalMap.java:300)
        at com.google.common.collect.MapMakerInternalMap$Segment.setValue(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;Ljava/lang/Object;)V (MapMakerInternalMap.java:2195)
        at com.google.common.collect.MapMakerInternalMap$Segment.put(Ljava/lang/Object;ILjava/lang/Object;Z)Ljava/lang/Object; (MapMakerInternalMap.java:2559)
        at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.compute(Ljava/lang/Object;ILcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;Lcom/google/common/collect/ComputingConcurrentHashMap$ComputingValueReference;)Ljava/lang/Object; (ComputingConcurrentHashMap.java:189)
        at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.getOrCompute(Ljava/lang/Object;ILcom/google/common/base/Function;)Ljava/lang/Object; (ComputingConcurrentHashMap.java:153)
        at com.google.common.collect.ComputingConcurrentHashMap.getOrCompute(Ljava/lang/Object;)Ljava/lang/Object; (ComputingConcurrentHashMap.java:69)
        at com.google.common.collect.ComputingConcurrentHashMap$ComputingMapAdapter.get(Ljava/lang/Object;)Ljava/lang/Object; (ComputingConcurrentHashMap.java:393)
        at com.cenqua.fisheye.infinitydb.CachingUniqueStringTable$Cache.get(Ljava/lang/Object;)Ljava/lang/Object; (CachingUniqueStringTable.java:154)
        at com.cenqua.fisheye.infinitydb.CachingUniqueStringTable.find(Ljava/lang/String;)J (CachingUniqueStringTable.java:82)
        at com.cenqua.fisheye.rep.impl.NumberBasedRevisionUtil.getLatestCsIdOnPathUpTo(Lcom/cenqua/obfuscate/idbnf19c1/_ItemSpace;Lcom/cenqua/fisheye/infinitydb/UniqueStringTable;Lcom/cenqua/obfuscate/idbnf19c1/_EntityClass;Lcom/cenqua/fisheye/Path;J)J (NumberBasedRevisionUtil.java:27)
        at com.cenqua.fisheye.svn.db.SvnRevInfoDAO.getLatestPathUpTo(Lcom/cenqua/fisheye/infinitydb/UniqueStringTable;Lcom/cenqua/obfuscate/idbnf19c1/_EntityClass;Lcom/cenqua/fisheye/Path;J)J (SvnRevInfoDAO.java:493)
        at com.cenqua.fisheye.svn.db.SvnRevInfoDAO.getLatestPathChangeUpto(Lcom/cenqua/fisheye/Path;JZ)J (SvnRevInfoDAO.java:468)
        at com.atlassian.fisheye.svn.Svn2Infill2Processor.getPreviousRevision(Lcom/atlassian/fisheye/svn/Svn2MessageContext;Lcom/cenqua/fisheye/svn/db/SvnRevInfoDAO;Lcom/cenqua/fisheye/Path;)Lcom/cenqua/fisheye/svn/db/SvnRevInfoDAO$SvnRevisionSummary; (Svn2Infill2Processor.java:1061)
        at com.atlassian.fisheye.svn.Svn2Infill2Processor.infillChangeSet(Lcom/atlassian/fisheye/svn/Svn2Cache;Lcom/atlassian/fisheye/svn/Svn2MessageContext;)V (Svn2Infill2Processor.java:216)
        at com.atlassian.fisheye.svn.Svn2Infill2Processor.access$100(Lcom/atlassian/fisheye/svn/Svn2Infill2Processor;Lcom/atlassian/fisheye/svn/Svn2Cache;Lcom/atlassian/fisheye/svn/Svn2MessageContext;)V (Svn2Infill2Processor.java:87)
        at com.atlassian.fisheye.svn.Svn2Infill2Processor$1.perform(Lcom/cenqua/obfuscate/idbnf19c1/_ItemSpace;)Ljava/lang/Void; (Svn2Infill2Processor.java:135)
        at com.atlassian.fisheye.svn.Svn2Infill2Processor$1.perform(Lcom/cenqua/obfuscate/idbnf19c1/_ItemSpace;)Ljava/lang/Object; (Svn2Infill2Processor.java:119)
        at com.cenqua.fisheye.cache.BaseRevisionCache.withDbWriteLock(ILcom/cenqua/fisheye/infinitydb/DbTask;)Ljava/lang/Object; (BaseRevisionCache.java:1014)
        at com.atlassian.fisheye.svn.Svn2Infill2Processor.process(J)V (Svn2Infill2Processor.java:119)
        at com.atlassian.fisheye.svn.Svn2Scanner.slurpRepository()V (Svn2Scanner.java:217)
        at com.atlassian.fisheye.svn.Svn2Scanner.doSlurpTransaction(Z)V (Svn2Scanner.java:182)
        at com.cenqua.fisheye.rep.BaseRepositoryScanner.ping()V (BaseRepositoryScanner.java:73)
        at com.cenqua.fisheye.rep.BaseRepositoryEngine.doSlurp()V (BaseRepositoryEngine.java:86)
        at com.cenqua.fisheye.rep.RepositoryEngine.slurp()V (RepositoryEngine.java:414)
        at com.cenqua.fisheye.rep.ping.IndexingPingRequest.doRequest()V (IndexingPingRequest.java:27)
        at com.cenqua.fisheye.rep.ping.IncrementalPingRequest.doRequest()V (IncrementalPingRequest.java:30)
        at com.cenqua.fisheye.rep.ping.PingRequest$1.run()V (PingRequest.java:55)
        at com.cenqua.fisheye.util.NamedExecution.run(Ljava/lang/Runnable;)V (NamedExecution.java:27)
        at com.cenqua.fisheye.rep.ping.PingRequest.process()V (PingRequest.java:52)
        at com.cenqua.fisheye.rep.RepositoryHandle.processPingRequests()V (RepositoryHandle.java:213)
        at com.cenqua.fisheye.rep.RepositoryHandle.access$100(Lcom/cenqua/fisheye/rep/RepositoryHandle;)V (RepositoryHandle.java:57)
        at com.cenqua.fisheye.rep.RepositoryHandle$2.run()V (RepositoryHandle.java:169)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V (ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run()V (ThreadPoolExecutor.java:615)
        at java.lang.Thread.run()V (Thread.java:745)
      

      Attachments

        Issue Links

          Activity

            People

              czawadka@atlassian.com Cezary Zawadka
              pswiecicki Piotr Swiecicki
              Votes:
              1 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: