Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-19043

jgit hangs on "Updating references" with large repositories

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: Major Major
    • git-plugin
    • Jenkins 1.509.2 on JDK 1.7.0_25, master on Debian x64, slaves on Debian x64, x86, Windows x64, x86, and CentOS x64

      While exploring the Git 2.0 plugin beta version, I found that several of my jobs which were attempting to update from a large repository would hang the Jenkins job at the "Updating references" stage.

      The jobs which hung were all using jgit rather than the command line git. When I switched the jobs from jgit back to command line git, they worked as expected.

          [JENKINS-19043] jgit hangs on "Updating references" with large repositories

          Mark Waite created issue -

          Although I can't prove it by numbers, I also have the feeling that most of the time when a build happened with jgit jenkins dies with an OutOfMemory error.

          Dominik Bartholdi added a comment - Although I can't prove it by numbers, I also have the feeling that most of the time when a build happened with jgit jenkins dies with an OutOfMemory error.

          How "large" is your repository ? Do you know a public one I could use to run some tests with a profiler ?

          Nicolas De Loof added a comment - How "large" is your repository ? Do you know a public one I could use to run some tests with a profiler ?
          Nicolas De Loof made changes -
          Status Original: Open [ 1 ] New: In Progress [ 3 ]

          Mark Waite added a comment -

          The problem repository is 2.8 GB. I don't know of any public repository that would be that large, though I suspect you might see the same problem with the Linux kernel repository at git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git . I've heard it has reached hundreds of megabytes now.

          If the problem does not duplicate with the Linux kernel repo, you could probably duplicate the problem with a repository you create yourself using large files. My repo includes a checked in copy of Microsoft SQL Server 2008 Express and a bunch of other large binaries.

          I'm not sure it is worth using a public repository for the replication of the bug, since the network transfer will waste a lot of your time. Wouldn't it be better to choose a collection of large files, submit them to a local git repo, then try to clone that git repo locally?

          Mark Waite added a comment - The problem repository is 2.8 GB. I don't know of any public repository that would be that large, though I suspect you might see the same problem with the Linux kernel repository at git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git . I've heard it has reached hundreds of megabytes now. If the problem does not duplicate with the Linux kernel repo, you could probably duplicate the problem with a repository you create yourself using large files. My repo includes a checked in copy of Microsoft SQL Server 2008 Express and a bunch of other large binaries. I'm not sure it is worth using a public repository for the replication of the bug, since the network transfer will waste a lot of your time. Wouldn't it be better to choose a collection of large files, submit them to a local git repo, then try to clone that git repo locally?
          Jesse Glick made changes -
          Link New: This issue is duplicated by JENKINS-18960 [ JENKINS-18960 ]
          Jesse Glick made changes -
          Labels Original: git2 New: git2 performance

          I can reproduce this issue (at least, OOME) using http://github.com/torvalds/linux.git

          Nicolas De Loof added a comment - I can reproduce this issue (at least, OOME) using http://github.com/torvalds/linux.git

          Jesse Glick added a comment -

          Is this something we should even attempt to solve in Jenkins? IMO it would suffice to document (e.g. in a blurb in the JGit tool configuration section) that JGit is known to not handle extremely large repositories as well as the native Git client. If and when the memory usage patterns (or whatever the root problem is) are fixed upstream, we will integrate the updated JGit client as a matter of course. In the meantime, people with such large repositories can continue to use the native client as before.

          Jesse Glick added a comment - Is this something we should even attempt to solve in Jenkins? IMO it would suffice to document (e.g. in a blurb in the JGit tool configuration section) that JGit is known to not handle extremely large repositories as well as the native Git client. If and when the memory usage patterns (or whatever the root problem is) are fixed upstream, we will integrate the updated JGit client as a matter of course. In the meantime, people with such large repositories can continue to use the native client as before.
          Nicolas De Loof made changes -
          Status Original: In Progress [ 3 ] New: Open [ 1 ]

            ndeloof Nicolas De Loof
            markewaite Mark Waite
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: