问题描述
背景故事:
我们决定将SVN从本地迁移到云。
两台服务器均为CentOS 7,SVN版本本地为1.8.15,而云上为1.8.19;
访问协议从SVN(端口3690)更改为HTTPS(443),因此httpd设置很新颖。
对于存储库的迁移,我尝试在服务器之间进行简单的旧“ rsync”操作以移动整个存储库,并且由于功能和所有修订版都在那儿而已,但是我仍然遇到相同的错误。
我认为这可能是某种数据库问题,因此我使用了SVN原生的“ svnadmin dump”和“ svnadmin load”命令来导入存储库。问题仍然存在。
我正在使用通过Apache HTTPD通过HTTPS访问的SVN。 一切似乎都工作正常,并且所有功能都在那里,但是经过几次检出后,我开始收到500 Internal Server Error。
当前,此问题是由Jenkins管道导致的,该管道从SVN检出,这是输出的错误:
ERROR: Failed to check out https://svn-repo/path/to/files
org.tmatesoft.svn.core.SVNException: svn: E175002: OPTIONS of '/path/to/files': 500 Internal Server Error (https://svn-repo)
svn: E175002: OPTIONS request Failed on '/path/to/files'
目前我不认为这是客户端(Jenkins)的问题,原因是因为从PC SVN客户端中签出时我遇到了相同的错误。
这是来自HTTPD的日志:
10.10.10.16 - - [17/Aug/2020:12:45:21 +0300] "OPTIONS /path/to/files HTTP/1.
1" 401 381
10.10.10.16 - user [17/Aug/2020:12:45:21 +0300] "OPTIONS /path/to/files HTTP/1.1" 500 541
如您所见,我在获得500之前收到401,但正如我所说的那样,结帐是一个接一个地进行的,因此如果授权无效(整个仓库的权限),则无法先前结帐。是完全相同的,不是基于路径的。)
旁注:401的出现是由于WEBSAV协议的定义:它允许未经身份验证的访问,因此它将始终首先尝试它。如果返回401,它将发送凭据。
----进度报告----
引起我注意的是,“ SVNAllowbulkupdates On”可能是导致此问题的原因。
我尝试同时使用“首选”和“关闭”来运行管道,但这并不能解决问题。
可能与之相关的问题: Large SVN checkout fails sporadically
我已成功将SVN升级到版本1.10。 再次升级并运行管道之后,我在SVN错误日志中看到以下错误:
[Thu Oct 01 17:25:55.268333 2020] [dav:error] [pid 9465] [client 11.11.11.11:39580] Provider encountered an error while streaming a REPORT response. [500,#0]
[Thu Oct 01 17:25:55.268355 2020] [dav:error] [pid 9465] [client 11.11.11.11:39580] A failure occurred while driving the update report editor [500,#104]
[Thu Oct 01 17:25:55.268360 2020] [dav:error] [pid 9465] [client 11.11.11.11:39580] Connection reset by peer [500,#104]
由于日志指向客户端问题,因此我开始搜索与客户端相关的配置更改。在“〜/ .subversion /服务器”中添加了以下内容:
http-timeout = 259200
不幸的是,这仍然没有帮助。
后来,我在端口443(tcpdump -nnS -i ens5 port 443
)上执行了'tcpdump'命令,以查看传入/传出数据包的标头。我同时在Jenkins从站和SVN上同时运行了命令,发现它们在某一时刻停止了恰好一分钟的信息交换,此后SVN向Jenkins从站发送了一个会话终止数据包,后者试图稍后再发送信息,并终止连接:
17:14:56.976631 IP SVN > Jenkins-Slave: Flags [.],ack 4264260017,win 235,options [nop,nop,TS val 1054806523 ecr 1461582542],length 0
17:14:56.976961 IP SVN > Jenkins-Slave: Flags [P.],seq 394455454:394456190,length 736
17:14:56.983612 IP Jenkins-Slave > SVN: Flags [P.],seq 4264260017:4264260557,ack 394456190,win 279,TS val 1461582631 ecr 1054806523],length 540
17:14:56.983688 IP Jenkins-Slave > SVN: Flags [P.],seq 4264260557:4264260693,length 136
17:14:57.065351 IP SVN > Jenkins-Slave: Flags [.],ack 4264260693,win 252,TS val 1054806611 ecr 1461582631],length 0
17:15:57.124806 IP SVN > Jenkins-Slave: Flags [P.],seq 394456190:394457011,TS val 1054866672 ecr 1461582631],length 821
17:15:57.124832 IP SVN > Jenkins-Slave: Flags [F.],seq 394457011,length 0
17:15:57.125768 IP Jenkins-Slave > SVN: Flags [P.],seq 4264260693:4264260724,ack 394457012,win 300,TS val 1461642773 ecr 1054866672],length 31
17:15:57.125804 IP Jenkins-Slave > SVN: Flags [R.],seq 4264260724,TS val 1461642774 ecr 1054866672],length 0
出于明显的原因,我混淆了IP。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)