Uploaded image for project: 'Bitbucket Data Center'
  1. Bitbucket Data Center
  2. BSERV-12777

Bitbucket Server commands timeout when trying process extremely long commit messages

      Issue Summary

      Bitbucket Server is unable to process git output containing extremely long commit messages in a reasonable amount of time. This causes actions which use this output to timeout and fail (e.g. loading the commits page in the UI).

      Steps to Reproduce

      1. Push a commit (or commits) with extremely long commit messages (millions of characters, hundreds of thousands of lines) to a repository in Bitbucket Server.
      2. Attempt to perform an action that causes Bitbucket Server to run a git rev-list command over those commits (e.g. viewing the commits page in the UI for that repository).

      Expected Results

      The git rev-list command completes quickly (~seconds, or less), and the associated action (e.g. viewing the commits page in the UI) completes successfully without any problems.

      Actual Results

      The git rev-list command takes an excessive amount of time to complete (multiple minutes). This will lead to for example REST requests timings out (so the UI for the commits page will show a 500 error after waiting for the commits).

      The below exception is thrown in the bitbucket.log file:

      c.a.b.i.p.nu.NioNuProcessHandler [/opt/git/bin/git rev-list --format=%H%x02%P%x02%aN%x02%aE%x02%at%x02%cN%x02%cE%x02%ct%n%B%n%x03END%x04 --no-min-parents --stdin --]: Dropping callback invocation (Canceled: false; Timed out: true)
      c.a.b.i.p.nu.NioNuProcessHandler [/opt/git/bin/git rev-list --format=%H%x02%P%x02%aN%x02%aE%x02%at%x02%cN%x02%cE%x02%ct%n%B%n%x03END%x04 --no-min-parents --stdin --]: Dropping callback invocation (Canceled: false; Timed out: true)
      c.a.b.i.p.nu.NioNuProcessHandler [/opt/git/bin/git rev-list --format=%H%x02%P%x02%aN%x02%aE%x02%at%x02%cN%x02%cE%x02%ct%n%B%n%x03END%x04 --no-min-parents --stdin --]: Dropping callback invocation (Canceled: false; Timed out: true)
      c.a.s.i.w.HandlerExceptionResolverImpl An error occurred while executing an external process: process timed out
      com.atlassian.bitbucket.ServerException: An error occurred while executing an external process: process timed out
      	at com.atlassian.bitbucket.scm.git.command.GitCommandExitHandler.evaluateThrowable(GitCommandExitHandler.java:120)
      	at com.atlassian.bitbucket.scm.git.command.GitCommandExitHandler.onError(GitCommandExitHandler.java:208)
      	at com.atlassian.stash.internal.scm.git.command.revlist.RevCoreExitHandler.onError(RevCoreExitHandler.java:55)
      	at com.atlassian.bitbucket.scm.DefaultCommandExitHandler.onExit(DefaultCommandExitHandler.java:32)
      	at com.atlassian.bitbucket.internal.process.nu.NioNuProcessHandler.callExitHandler(NioNuProcessHandler.java:285)
      	at com.atlassian.bitbucket.internal.process.nu.NioNuProcessHandler.finish(NioNuProcessHandler.java:326)
      	at com.atlassian.bitbucket.internal.process.nu.NioNuProcessHandler.onExit(NioNuProcessHandler.java:123)
      	at com.zaxxer.nuprocess.internal.BasePosixProcess.onExit(BasePosixProcess.java:319)
      	at com.zaxxer.nuprocess.linux.ProcessEpoll.handleExit(ProcessEpoll.java:375)
      	at com.zaxxer.nuprocess.linux.ProcessEpoll.cleanupProcess(ProcessEpoll.java:334)
      	at com.zaxxer.nuprocess.linux.ProcessEpoll.process(ProcessEpoll.java:272)
      	at com.zaxxer.nuprocess.internal.BaseEventProcessor.run(BaseEventProcessor.java:81)
      	at com.zaxxer.nuprocess.linux.ProcessEpoll.run(ProcessEpoll.java:188)
      	at com.zaxxer.nuprocess.linux.LinuxProcess.run(LinuxProcess.java:114)
      	at com.zaxxer.nuprocess.linux.LinProcessFactory.runProcess(LinProcessFactory.java:50)
      	at com.zaxxer.nuprocess.NuProcessBuilder.run(NuProcessBuilder.java:273)
      	at com.atlassian.bitbucket.internal.process.nu.NuNioProcessHelper.run(NuNioProcessHelper.java:75)
      	at com.atlassian.bitbucket.internal.process.NioCommand.call(NioCommand.java:52)
      	at com.atlassian.stash.internal.commit.DefaultCommitService.getCommits(DefaultCommitService.java:450)
      	at com.atlassian.stash.internal.commit.DefaultCommitService.getCommits(DefaultCommitService.java:175)
      	at com.atlassian.stash.internal.web.repos.RepositoryController.getCommits(RepositoryController.java:218)
      	at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
      	at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
      	at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
      	at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
      	at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
              ...
      Caused by: com.atlassian.utils.process.ProcessTimeoutException: process timed out
      	at com.atlassian.bitbucket.internal.process.nu.NioNuProcessHandler.callExitHandler(NioNuProcessHandler.java:269)
      	... 52 common frames omitted
      

      Workaround

      Currently there is no known workaround for this behaviour.

          Form Name

            [BSERV-12777] Bitbucket Server commands timeout when trying process extremely long commit messages

            Nate Hansberry made changes -
            Remote Link New: This issue links to "Page (Confluence)" [ 549333 ]
            Aditya Karia made changes -
            Fix Version/s Original: 7.7.2 [ 93592 ]
            Fix Version/s Original: 7.8.2 [ 94810 ]
            Fix Version/s Original: 7.9.2 [ 94811 ]
            Fix Version/s Original: 7.10.2 [ 94837 ]
            Stefan made changes -
            Resolution New: Fixed [ 1 ]
            Status Original: In Review [ 10051 ] New: Closed [ 6 ]
            Stefan made changes -
            Fix Version/s New: 7.6.5 [ 94836 ]
            Fix Version/s New: 7.10.2 [ 94837 ]
            Fix Version/s New: 7.11.2 [ 94838 ]
            Fix Version/s New: 7.7.2 [ 93592 ]
            Fix Version/s New: 7.8.2 [ 94810 ]
            Fix Version/s New: 7.9.2 [ 94811 ]
            Fix Version/s New: 7.12.0 [ 94823 ]
            Stefan made changes -
            Status Original: In Progress [ 3 ] New: In Review [ 10051 ]
            SET Analytics Bot made changes -
            UIS New: 1
            Bugfix Automation Bot made changes -
            Support reference count New: 1
            Christian Glockner made changes -
            Remote Link New: This issue links to "PS-74439 (Atlassian Support System)" [ 534557 ]
            Stefan made changes -
            Description Original: h3. Issue Summary

            Bitbucket Server is unable to process {{git}} output containing extremely long commit messages in a reasonable amount of time. This causes actions which use this output to timeout and fail (e.g. loading the commits page in the UI).
            h3. Steps to Reproduce
             # Push a commit (or commits) with extremely long commit messages (millions of characters, hundreds of thousands of lines) to a repository in Bitbucket Server.
             # Attempt to perform an action that causes Bitbucket Server to run a {{git rev-list}} command over those commits (e.g. viewing the commits page in the UI for that repository).

            h3. Expected Results

            The {{git rev-list}} command completes quickly (~seconds, or less), and the associated action (e.g. viewing the commits page in the UI) completes successfully without any problems.
            h3. Actual Results

            The {{git rev-list}} command takes an excessive amount of time to complete (multiple minutes). This will lead to for example REST requests timings out (so the UI for the commits page will show a 500 error after waiting for the commits).

            The below exception is thrown in the {{bitbucket.log}} file:
            {noformat}
            c.a.b.i.p.nu.NioNuProcessHandler [/opt/git/bin/git rev-list --format=%H%x02%P%x02%aN%x02%aE%x02%at%x02%cN%x02%cE%x02%ct%n%B%n%x03END%x04 --no-min-parents --stdin --]: Dropping callback invocation (Canceled: false; Timed out: true)
            c.a.b.i.p.nu.NioNuProcessHandler [/opt/git/bin/git rev-list --format=%H%x02%P%x02%aN%x02%aE%x02%at%x02%cN%x02%cE%x02%ct%n%B%n%x03END%x04 --no-min-parents --stdin --]: Dropping callback invocation (Canceled: false; Timed out: true)
            c.a.b.i.p.nu.NioNuProcessHandler [/opt/git/bin/git rev-list --format=%H%x02%P%x02%aN%x02%aE%x02%at%x02%cN%x02%cE%x02%ct%n%B%n%x03END%x04 --no-min-parents --stdin --]: Dropping callback invocation (Canceled: false; Timed out: true)
            c.a.s.i.w.HandlerExceptionResolverImpl An error occurred while executing an external process: process timed out
            com.atlassian.bitbucket.ServerException: An error occurred while executing an external process: process timed out
            at com.atlassian.bitbucket.scm.git.command.GitCommandExitHandler.evaluateThrowable(GitCommandExitHandler.java:120)
            at com.atlassian.bitbucket.scm.git.command.GitCommandExitHandler.onError(GitCommandExitHandler.java:208)
            at com.atlassian.stash.internal.scm.git.command.revlist.RevCoreExitHandler.onError(RevCoreExitHandler.java:55)
            at com.atlassian.bitbucket.scm.DefaultCommandExitHandler.onExit(DefaultCommandExitHandler.java:32)
            at com.atlassian.bitbucket.internal.process.nu.NioNuProcessHandler.callExitHandler(NioNuProcessHandler.java:285)
            at com.atlassian.bitbucket.internal.process.nu.NioNuProcessHandler.finish(NioNuProcessHandler.java:326)
            at com.atlassian.bitbucket.internal.process.nu.NioNuProcessHandler.onExit(NioNuProcessHandler.java:123)
            at com.zaxxer.nuprocess.internal.BasePosixProcess.onExit(BasePosixProcess.java:319)
            at com.zaxxer.nuprocess.linux.ProcessEpoll.handleExit(ProcessEpoll.java:375)
            at com.zaxxer.nuprocess.linux.ProcessEpoll.cleanupProcess(ProcessEpoll.java:334)
            at com.zaxxer.nuprocess.linux.ProcessEpoll.process(ProcessEpoll.java:272)
            at com.zaxxer.nuprocess.internal.BaseEventProcessor.run(BaseEventProcessor.java:81)
            at com.zaxxer.nuprocess.linux.ProcessEpoll.run(ProcessEpoll.java:188)
            at com.zaxxer.nuprocess.linux.LinuxProcess.run(LinuxProcess.java:114)
            at com.zaxxer.nuprocess.linux.LinProcessFactory.runProcess(LinProcessFactory.java:50)
            at com.zaxxer.nuprocess.NuProcessBuilder.run(NuProcessBuilder.java:273)
            at com.atlassian.bitbucket.internal.process.nu.NuNioProcessHelper.run(NuNioProcessHelper.java:75)
            at com.atlassian.bitbucket.internal.process.NioCommand.call(NioCommand.java:52)
            at com.atlassian.stash.internal.commit.DefaultCommitService.getCommits(DefaultCommitService.java:450)
            at com.atlassian.stash.internal.commit.DefaultCommitService.getCommits(DefaultCommitService.java:175)
            at com.atlassian.stash.internal.web.repos.RepositoryController.getCommits(RepositoryController.java:218)
            at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
            at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
            at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
            at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
            at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
                    ...
            Caused by: com.atlassian.utils.process.ProcessTimeoutException: process timed out
            at com.atlassian.bitbucket.internal.process.nu.NioNuProcessHandler.callExitHandler(NioNuProcessHandler.java:269)
            ... 52 common frames omitted
            {noformat}
            h3. Workaround

            Currently there is no known workaround for this behaviour. A workaround will be added here when available.
            New: h3. Issue Summary

            Bitbucket Server is unable to process {{git}} output containing extremely long commit messages in a reasonable amount of time. This causes actions which use this output to timeout and fail (e.g. loading the commits page in the UI).
            h3. Steps to Reproduce
             # Push a commit (or commits) with extremely long commit messages (millions of characters, hundreds of thousands of lines) to a repository in Bitbucket Server.
             # Attempt to perform an action that causes Bitbucket Server to run a {{git rev-list}} command over those commits (e.g. viewing the commits page in the UI for that repository).

            h3. Expected Results

            The {{git rev-list}} command completes quickly (~seconds, or less), and the associated action (e.g. viewing the commits page in the UI) completes successfully without any problems.
            h3. Actual Results

            The {{git rev-list}} command takes an excessive amount of time to complete (multiple minutes). This will lead to for example REST requests timings out (so the UI for the commits page will show a 500 error after waiting for the commits).

            The below exception is thrown in the {{bitbucket.log}} file:
            {noformat}
            c.a.b.i.p.nu.NioNuProcessHandler [/opt/git/bin/git rev-list --format=%H%x02%P%x02%aN%x02%aE%x02%at%x02%cN%x02%cE%x02%ct%n%B%n%x03END%x04 --no-min-parents --stdin --]: Dropping callback invocation (Canceled: false; Timed out: true)
            c.a.b.i.p.nu.NioNuProcessHandler [/opt/git/bin/git rev-list --format=%H%x02%P%x02%aN%x02%aE%x02%at%x02%cN%x02%cE%x02%ct%n%B%n%x03END%x04 --no-min-parents --stdin --]: Dropping callback invocation (Canceled: false; Timed out: true)
            c.a.b.i.p.nu.NioNuProcessHandler [/opt/git/bin/git rev-list --format=%H%x02%P%x02%aN%x02%aE%x02%at%x02%cN%x02%cE%x02%ct%n%B%n%x03END%x04 --no-min-parents --stdin --]: Dropping callback invocation (Canceled: false; Timed out: true)
            c.a.s.i.w.HandlerExceptionResolverImpl An error occurred while executing an external process: process timed out
            com.atlassian.bitbucket.ServerException: An error occurred while executing an external process: process timed out
            at com.atlassian.bitbucket.scm.git.command.GitCommandExitHandler.evaluateThrowable(GitCommandExitHandler.java:120)
            at com.atlassian.bitbucket.scm.git.command.GitCommandExitHandler.onError(GitCommandExitHandler.java:208)
            at com.atlassian.stash.internal.scm.git.command.revlist.RevCoreExitHandler.onError(RevCoreExitHandler.java:55)
            at com.atlassian.bitbucket.scm.DefaultCommandExitHandler.onExit(DefaultCommandExitHandler.java:32)
            at com.atlassian.bitbucket.internal.process.nu.NioNuProcessHandler.callExitHandler(NioNuProcessHandler.java:285)
            at com.atlassian.bitbucket.internal.process.nu.NioNuProcessHandler.finish(NioNuProcessHandler.java:326)
            at com.atlassian.bitbucket.internal.process.nu.NioNuProcessHandler.onExit(NioNuProcessHandler.java:123)
            at com.zaxxer.nuprocess.internal.BasePosixProcess.onExit(BasePosixProcess.java:319)
            at com.zaxxer.nuprocess.linux.ProcessEpoll.handleExit(ProcessEpoll.java:375)
            at com.zaxxer.nuprocess.linux.ProcessEpoll.cleanupProcess(ProcessEpoll.java:334)
            at com.zaxxer.nuprocess.linux.ProcessEpoll.process(ProcessEpoll.java:272)
            at com.zaxxer.nuprocess.internal.BaseEventProcessor.run(BaseEventProcessor.java:81)
            at com.zaxxer.nuprocess.linux.ProcessEpoll.run(ProcessEpoll.java:188)
            at com.zaxxer.nuprocess.linux.LinuxProcess.run(LinuxProcess.java:114)
            at com.zaxxer.nuprocess.linux.LinProcessFactory.runProcess(LinProcessFactory.java:50)
            at com.zaxxer.nuprocess.NuProcessBuilder.run(NuProcessBuilder.java:273)
            at com.atlassian.bitbucket.internal.process.nu.NuNioProcessHelper.run(NuNioProcessHelper.java:75)
            at com.atlassian.bitbucket.internal.process.NioCommand.call(NioCommand.java:52)
            at com.atlassian.stash.internal.commit.DefaultCommitService.getCommits(DefaultCommitService.java:450)
            at com.atlassian.stash.internal.commit.DefaultCommitService.getCommits(DefaultCommitService.java:175)
            at com.atlassian.stash.internal.web.repos.RepositoryController.getCommits(RepositoryController.java:218)
            at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
            at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
            at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
            at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
            at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
                    ...
            Caused by: com.atlassian.utils.process.ProcessTimeoutException: process timed out
            at com.atlassian.bitbucket.internal.process.nu.NioNuProcessHandler.callExitHandler(NioNuProcessHandler.java:269)
            ... 52 common frames omitted
            {noformat}
            h3. Workaround

            Currently there is no known workaround for this behaviour.
            Stefan made changes -
            Status Original: Needs Triage [ 10030 ] New: In Progress [ 3 ]

              spetrucev Stefan
              spetrucev Stefan
              Affected customers:
              1 This affects my team
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: