Timeout on 'git blame' for large files

Issue #17 new
Wilfred Hughes created an issue

We're seeing errors in our logs when the plugin tries to make suggestions on repos containing large files:

2015-07-20 14:12:06,945 INFO  [io-pump:thread-40357] redacteduser @5DSGV2x851x1062249x2 fmywnw 10.190.212.25,127.0.0.1 "GET /rest/api/latest/projects/FOO/repos/redacted/pull-requests/65/changes HTTP/1.1" c.a.s.internal.web.StreamGuardFilter The remote client has aborted the connection
2015-07-20 14:12:17,134 ERROR [http-nio-7990-exec-7] redacteduser @5DSGV2x850x1062048x0 fmywnw 10.190.212.25,127.0.0.1 "GET /rest/suggest-reviewers/1.0/by/ref HTTP/1.1" c.a.s.s.i.ScoringSuggestedReviewerService class com.atlassian.stash.suggestreviewers.internal.suggester.BlameSuggester threw an exception (or returned unexpected data) when suggesting reviewers and was ignored.
com.atlassian.stash.exception.CommandFailedException: '/usr/bin/git blame --incremental 8d5c9d62415C091818f54B0ba698be782e919316 -- tests/very_large_file' exited with code -1
        at com.atlassian.stash.scm.DefaultCommandExitHandler.onError(DefaultCommandExitHandler.java:43) ~[stash-spi-3.10.0.jar:na]
        at com.atlassian.stash.suggestreviewers.internal.suggester.git.MissingPathIgnoringExitHandler.onError(MissingPathIgnoringExitHandler.java:28) ~[plugin_5206972163245662555_stash-suggest-reviewers-1.4.jar:na]
        at com.atlassian.stash.scm.DefaultCommandExitHandler.onExit(DefaultCommandExitHandler.java:33) ~[stash-spi-3.10.0.jar:na]
        at com.atlassian.stash.scm.BaseCommand.callExitHandler(BaseCommand.java:138) ~[stash-spi-3.10.0.jar:na]
        at com.atlassian.stash.scm.BaseCommand$CommandFuture.internalGet(BaseCommand.java:251) ~[stash-spi-3.10.0.jar:na]
        at com.atlassian.stash.scm.BaseCommand$CommandFuture.get(BaseCommand.java:220) ~[stash-spi-3.10.0.jar:na]
        at com.atlassian.stash.scm.BaseCommand.call(BaseCommand.java:75) ~[stash-spi-3.10.0.jar:na]
        at com.atlassian.stash.suggestreviewers.internal.suggester.BlameSuggester.getBlame(BlameSuggester.java:143) ~[plugin_5206972163245662555_stash-suggest-reviewers-1.4.jar:na]
        at com.atlassian.stash.suggestreviewers.internal.suggester.BlameSuggester.suggestFor(BlameSuggester.java:67) ~[plugin_5206972163245662555_stash-suggest-reviewers-1.4.jar:na]
        at com.atlassian.stash.suggestreviewers.internal.ScoringSuggestedReviewerService.getSuggestedReviewers(ScoringSuggestedReviewerService.java:56) ~[plugin_5206972163245662555_stash-suggest-reviewers-1.4.jar:na]
        at com.atlassian.stash.suggestreviewers.internal.rest.SuggestedReviewersResource.suggestReviewers(SuggestedReviewersResource.java:102) ~[plugin_5206972163245662555_stash-suggest-reviewers-1.4.jar:na]
        at com.atlassian.stash.suggestreviewers.internal.rest.SuggestedReviewersResource.forRefs(SuggestedReviewersResource.java:82) ~[plugin_5206972163245662555_stash-suggest-reviewers-1.4.jar:na]
        at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:25) ~[na:na]
        at com.atlassian.stash.internal.spring.security.StashAuthenticationFilter.doFilter(StashAuthenticationFilter.java:88) ~[StashAuthenticationFilter.class:na]
        at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doInsideSpringSecurityChain(BeforeLoginPluginAuthenticationFilter.java:111) ~[BeforeLoginPluginAuthenticationFilter.class:na]
        at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doFilter(BeforeLoginPluginAuthenticationFilter.java:77) ~[BeforeLoginPluginAuthenticationFilter.class:na]
        at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:103) ~[atlassian-trusted-apps-core-4.0.0.jar:na]
        at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:79) ~[na:na]
        at com.atlassian.analytics.client.filter.DefaultAnalyticsFilter.doFilter(DefaultAnalyticsFilter.java:32) ~[na:na]
        at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32) ~[na:na]
        at com.atlassian.stash.internal.web.StreamGuardFilter.doFilter(StreamGuardFilter.java:49) ~[na:na]
        at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doBeforeBeforeLoginFilters(BeforeLoginPluginAuthenticationFilter.java:89) ~[BeforeLoginPluginAuthenticationFilter.class:na]
        at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doFilter(BeforeLoginPluginAuthenticationFilter.java:75) ~[BeforeLoginPluginAuthenticationFilter.class:na]
        at com.atlassian.stash.internal.request.DefaultRequestManager.doAsRequest(DefaultRequestManager.java:85) ~[stash-service-impl-3.10.0.jar:na]
        at com.atlassian.stash.internal.hazelcast.ConfigurableWebFilter.doFilter(ConfigurableWebFilter.java:38) ~[ConfigurableWebFilter.class:na]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_25]
        at java.lang.Thread.run(Thread.java:724) ~[na:1.7.0_25]
        ... 207 frames trimmed
Caused by: com.atlassian.utils.process.ProcessTimeoutException: process timed out
        at com.atlassian.utils.process.ExternalProcessImpl.wrapUpProcess(ExternalProcessImpl.java:662) ~[atlassian-processutils-1.7.1.jar:na]
        at com.atlassian.utils.process.ExternalProcessImpl.finish(ExternalProcessImpl.java:161) ~[atlassian-processutils-1.7.1.jar:na]
        at com.atlassian.stash.scm.BaseCommand$CommandFuture.get(BaseCommand.java:218) ~[stash-spi-3.10.0.jar:na]
        ... 22 common frames omitted

In this case, the file is a ~75MiB binary used for regression tests. Rather than attempting then timing out, could the plugin skip files over a certain size?

We're using Stash v3.10.0 and Stash Reviewer Suggester v1.4.

Comments (0)

  1. Log in to comment