使用tortoise svn客户端从subversion存储库更新时,我得到的错误如下:
Could not read chunk size: An existing connection was forcibly closed by the remote host.
它不会阻止我更新,只是中断更新过程,所以我必须在完成之前多次重复更新.
什么可以导致这种行为以及如何解决它?
我从几台机器上的客户端收到"无法读取块大小"消息.
解决这个问题的关键是Apache错误日志中的这个错误:
[Fri May 07 14:26:26 2010] [error] [client 155.35.175.50] Provider encountered an error while streaming a REPORT response. [500, #0] [Fri May 07 14:26:26 2010] [error] [client 155.35.175.50] Problem replaying revision [500, #24] [Fri May 07 14:26:26 2010] [error] [client 155.35.175.50] Can't open file '/usr/site/svnrep/impc/db/revs/16122': Too many open files [500, #24]
处理svn操作的Apache进程用完了文件描述符.在我的Ubuntu服务器上,我通过编辑/etc/security/limits.conf
并在底部添加它来修复它:
* hard nofile 5000 * soft nofile 5000
这将文件描述符限制从1024增加到5000.然后我登录了一个新的shell并确认限制通过增加ulimit -n
.然后重启Apache.
我刚刚得到'无法读取块大小'错误并找到了解决方案 - 至少在一个场景中.
服务器: 在Windows Server 2003 32位上运行的CollabNet Subversion Edge Server 2.0.0-2190.74(Subversion二进制文件1.6.17-2190.74).
客户端: TortoiseSVN 1.6.16,Build 21511 - 32位(Subversion 1.6.17)在带有SP3的Windows XP Pro 32位上运行.
右键单击将版本化的子文件夹拖放到我的本地工作副本文件夹中的另一个版本化子文件夹,然后选择"SVN复制版本化项目"(这是Windows资源管理器中的TortoiseSVN上下文菜单命令,当时右键 -拖动文件夹).子文件夹包含一个ANSI编码的文本文件MANIFEST.MF,我相信我没有修改(我的Subversion配置不包含.MF文件的mime类型). 我随后提交了新复制的子文件夹. 后来,无论何时我试图在这台PC上更新我的Subversion本地工作副本文件夹,我都得到了块大小错误.
我通过重新启动我的Subversion/Apache服务解决了这个问题(它本身没有帮助,可能没有必要),然后从我的本地工作副本文件夹中删除新添加的子文件夹(它已经进入了repo,所以我不会失去任何东西),然后执行更新,它成功没有块大小错误并重新获取我刚刚删除的子文件夹.
在我的情况下,我以这种方式复制了两个版本化的子文件夹,在我删除了这些新子文件夹之前,我无法成功更新本地工作副本文件夹的根目录.
我认为这是Subversion服务器和/或TortoiseSVN客户端中的一个错误,但我没有调试技巧来做出这个决定.我将在TortoiseSVN问题跟踪器中报告我的发现,看看它在哪里.
我刚刚遇到这种情况,这不是服务器问题; 我的工作副本被破坏了(顺便说一下,我).
关闭客户端防病毒后,问题和(其他一些)消失了.
我通过Apache使用Ubuntu服务器和subversion 1.7.4.