From 8d0249b70882870cee76efbd89dcf6b2c6a1cbc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Tue, 10 Dec 2019 18:22:40 +0100 Subject: [PATCH] Make timeout configurable --- .../repository/api/BrowseCommandBuilder.java | 4 ++++ .../repository/spi/FileBaseCommandRequest.java | 17 ++++++++++++++++- .../scm/repository/spi/GitBrowseCommand.java | 6 ++---- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/repository/api/BrowseCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/BrowseCommandBuilder.java index 563557f0c1..437e3f5fa0 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/BrowseCommandBuilder.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/BrowseCommandBuilder.java @@ -300,6 +300,10 @@ public final class BrowseCommandBuilder return this; } + public void setComputationTimeoutMilliSeconds(long computationTimeoutMilliSeconds) { + request.setComputationTimeoutMilliSeconds(computationTimeoutMilliSeconds); + } + private void updateCache(BrowserResult updatedResult) { if (!disableCache) { CacheKey key = new CacheKey(repository, request); diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/FileBaseCommandRequest.java b/scm-core/src/main/java/sonia/scm/repository/spi/FileBaseCommandRequest.java index 9f563345fd..c6683905dd 100644 --- a/scm-core/src/main/java/sonia/scm/repository/spi/FileBaseCommandRequest.java +++ b/scm-core/src/main/java/sonia/scm/repository/spi/FileBaseCommandRequest.java @@ -147,6 +147,10 @@ public abstract class FileBaseCommandRequest this.revision = revision; } + public void setComputationTimeoutMilliSeconds(long computationTimeoutMilliSeconds) { + this.computationTimeoutMilliSeconds = computationTimeoutMilliSeconds; + } + //~--- get methods ---------------------------------------------------------- /** @@ -171,7 +175,14 @@ public abstract class FileBaseCommandRequest return revision; } - //~--- methods -------------------------------------------------------------- + public boolean isDisableCommitValues() { + return disableCommitValues; + } + + public long getComputationTimeoutMilliSeconds() { + return computationTimeoutMilliSeconds; + } +//~--- methods -------------------------------------------------------------- /** * Method description @@ -208,4 +219,8 @@ public abstract class FileBaseCommandRequest /** Field description */ private String revision; + + private boolean disableCommitValues = false; + + private long computationTimeoutMilliSeconds = 1000; } diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java index 6b02ab5fd7..a82a592497 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java @@ -141,8 +141,8 @@ public class GitBrowseCommand extends AbstractGitCommand } finally { executorService.shutdown(); try { - if (!executorService.awaitTermination(10, TimeUnit.SECONDS)) { - logger.info("lookup of all commits took too long in repo {}", repository.getNamespaceAndName()); + if (!executorService.awaitTermination(request.getComputationTimeoutMilliSeconds(), TimeUnit.MILLISECONDS)) { + logger.info("lookup of all commits aborted after {}ms in repo {}", request.getComputationTimeoutMilliSeconds(), repository.getNamespaceAndName()); } } catch (InterruptedException e) { Thread.currentThread().interrupt(); @@ -259,8 +259,6 @@ public class GitBrowseCommand extends AbstractGitCommand //~--- get methods ---------------------------------------------------------- -private RevWalk commitWalk = null; - /** * Method description *