SVN operations taking longer than an hour time out

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

問題

SVN operations taking more than 60 minutes to execute when using the built-in SVNKit library time out. Increasing the SVN Operation Timeout does not have any effect for SVN servers being reached over HTTP/S connections. The respective commands execute successfully on the command line when using native SVN libraries.

atlassian-fisheye-YYYY-MM-DD.log に次のメッセージが表示される。

WARN  - Cancelling SVN Operation (log -v -r 6952:7976 https://<Base URL>/svn/@7976) on repository svn due to timeout
ERROR - Problem processing revisions from repo svn due to class com.cenqua.fisheye.rep.RepositoryClientException - org.tigris.subversion.javahl.ClientException: svn: timed out waiting for server
...
INFO  [InitPing <repository_name>] fisheye SvnTask-cancel - Cancelling Subversion operation : svn diff --summarize -r 6952:7976 http://<Base URL>/svn//@7976
ERROR [InitPing <repository_name>] fisheye BaseRepositoryScanner-handleSlurpException - Problem processing revisions from repo testrepo due to class com.cenqua.fisheye.rep.RepositoryClientException - java.util.concurrent.TimeoutException
  com.cenqua.fisheye.rep.RepositoryClientException: java.util.concurrent.TimeoutException


診断

Diagnostic Steps

To check the duration of the SVN command that is timing out, the following method can be used.

  1. Determine the SVN command to run, this can be found by looking at which SVN operation was canceled. Using the example above, our command would be:

    svn diff --summarize -r 6952:7976 http://<Base URL>/svn//@7976
  2. Change directories to the lib/svn folder inside your Fisheye installation: 

    cd /path/to/fisheye/installation/lib/svn
  3. Run the above SVN command using SVNKit and append the time command before it, which time how long the command takes to complete: 

    time ./jsvn diff --summarize -r 6952:7976 http://<Base URL>/svn//@7976

    The time command is specific to Linux, if running Windows as the OS then you can install Cygwin which will allow you to run the command in a linux like environment.


This command took 289 minutes to complete, so the timeout should be set to 5+ hours to allow the command to complete

real 289m28.726s
user 109m24.279s
sys 25m51.374s

原因

The library that Fisheye/Crucible uses (SVNKit) for SVN integration defines a timeout of 60 minutes by default if the property http-timeout is not defined in the Subversion configuration. This property defines the time to wait for a server response and terminates the HTTP call if it exceeds the timeout.


ソリューション

Note that one or more of these resolutions can be applied depending on an environment set up.

Review the entire set of proxy or web servers between Fisheye and the SVN server to make sure that the connection is not interrupted by any of them.


Increase the connection timeout in any of the intermediate applications (including but not limited to):

  • a Web proxy
  • a Proxy Server
  • the Apache server

Setting http-timeout property on Fisheye Server

Set the property http-timeout in your Subversion configuration file (where Fisheye/Crucible server is running) and restart Fisheye/Crucible after making the change. For the below example adding 259200 (seconds) will be equivalent to 3 days:

Example - 3 days
[global]
http-timeout = 259200

This property can be defined in the file named servers (either for the user running Fisheye/Crucible or for the entire server) which is located in the Subversion configuration directory. If the file does not exist, create it. In Linux, this file can be found in either of these locations (respectively):

  • ~/.subversion/servers
  • /etc/subversion/servers

Windows XP users (without Native Subversion) running Fisheye/Crucible using Local System Account may find Subversion configuration files in C:\Windows\system32\config\systemprofile\Application Data\Subversion.

You can read more about this property and its usage here.

You must also set the SVN Operation Timeout on the Fisheye administration page as this also defaults to 60 minutes.

See the following improvement request for more information:  FE-3253 - Getting issue details... STATUS

Setting timeout on Apache

Apache Server could be also timing out the request. Configuring these values in httpd.conf with the help of this third party article should help elevate the timeout problem on Apache level. 

Using SVN command svnsync

Use the svnsync command to mirror SVN repository to a local machine where Fisheye is hosted (and eliminating some performance holdback). Also, configure Fisheye to use file:// protocol directly on the local copy of the repository



最終更新日: 2018 年 12 月 9 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.