大型SVN结账偶尔会失败
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大型SVN结账偶尔会失败相关的知识,希望对你有一定的参考价值。
我目前在一个大型,完整的SVN存储库检出(20GB +)期间遇到问题,其中结帐过程将随机停止。存储库由许多小文本文件和一些大型CSV文件组成。
由于错误只会在结帐时弹出几个小时,因此很难缩小问题范围。从我所看到的,它不是一个停止进程的特定文件,并且使用svnadmin验证没有返回任何错误。
错误:
典型的Apache错误日志:
Unable to deliver content. [500, #0]
Unable to deliver content. [500, #0]
Could not write data to filter. [500, #175002]
Could not write data to filter. [500, #175002]
Provider encountered an error while streaming a REPORT response. [500, #0]
A failure occurred while driving the update report editor [500, #730053]
眼镜:
服务器:运行XAMPP v1.8.2-5,Apache v2.4和SVN v1.8.9的Windows Server 2003。它最近从Apache v2.2和SVN v1.5.3更新,它遇到了类似的问题。
客户端:运行TortoiseSVN v1.8.8 x64的Windows 7,最近从v1.8.3 x64更新,遇到了类似的问题。命令行SVN v1.8.9。
我正在使用HTTP协议来执行结帐。
我试过的事情:
将Apache上的“TimeOut”指令设置为更高的值(最多30000秒)。
将“SVNAdvertiseV2Protocol”指令设置为off。
将“SVNPathAuthz”指令设置为off。
将“SVNCompressionLevel”指令设置为“0”。
我们最近遇到了同样的问题。到目前为止,我认为它与较新的颠覆客户端有关。
Apache dav_svn_module指令
SVNAllowBulkUpdates Prefer
似乎有所帮助。将其添加到apache conf后,没有发现任何问题。在此之前,大多数大型结账都失败了。
我找到了一个讨论线程,它解释了与版本1.8.x更新的subversion客户端相关的问题。 See the mailing list thread.
我有以下错误:
Unable to deliver content. [500, #0]
Could not write data to filter. [500, #175002]
我甚至没有使用mod_deflate
所以不可能。在我的情况下,它原来是导致错误的身份验证(auth_digest_module
)。如果checkout
持续超过300秒,我将在我的Apache服务器日志中记录上述错误。
问题是默认的AuthDigestNonceLifetime 300
指令。见here。我的解决方案是将此指令设置为无穷大:AuthDigestNonceLifetime -1
根据subversion maillinglist上的this post,这似乎是文件的编码问题。您可以在apache配置中查找AddEncoding x-gzip .gz
条目并将其删除或将其添加到您的<Location /svn>…</Location>
条目中:
RemoveEncoding .gz
RemoveEncoding .Z
这实际上是在changelog中提到过的,但我也不在乎读这篇文章并且很难学到它......
我遇到了同样的问题,试图在中等大小(500MB)存储库上使用由Centos 7.4.1708,Apache 2.4.6,Subversion 1.9.15和Windows 10客户端组成的服务器进行snv checkout,后面使用TortoiseSVN 1.9.7 Apache反向代理。
我的解决方案是添加类似于teori的答案的SVNAllowBulkUpdates Off
。我试图使用“SVNAllowBulkUpdates首选”,但是当我重新启动httpd时,它抛出一个错误,说“SVNAllowBulkUpdates必须打开或关闭”。我的最终SVN / Apache配置文件是:
<Location /svn > DAV svn SVNParentPath /svn SVNAllowBulkUpdates Off AuthType Basic AuthName "SVN Repo" AuthUserFile /var/svn/svn-auth-user Require valid-user </Location>
其他想法:我不相信Timeout
和AuthDigestNonceLifetime
设置与问题直接相关。我确实试图使用它们,但都没有任何效果。我专门在SVN主机和反向代理主机上试验了timeout
,keepalive
和keepalivetimeout
设置。
这个问题可能与“缩小”有关,但我也像Tim S.所暗示的那样禁用它,它也没有效果。我仍然认为可能与之相关的原因是,在消除错误后,我注意到传输的字节数比以前大得多。
以上是关于大型SVN结账偶尔会失败的主要内容,如果未能解决你的问题,请参考以下文章