如何解决svnsync 无法从源空闲断开连接中恢复
如果我尝试将第 3 方存储库镜像到本地存储库,那么当 svnsync
将 300M+ 文件上传到慢速目标服务器时,源服务器断开连接,svnsync
不会尝试重新连接到它并进入无限循环。如何解决这个问题?
C:\progs\svnsync-dir>svnsync --version
svnsync,version 1.14.0 (r1876290)
compiled May 24 2020,17:07:49 on x86-microsoft-windows
C:\progs\svnsync-dir>svnsync --steal-lock sync https://targetreposito.acme.com/s
vn/Reponame
Stole lock prevIoUsly held by 'my-host-name:ab204a7a-756f-2947-af9c-caf904a8945d
'
Transmitting file data .........................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
............< here it hangs
解决方法
在从主干 serf
编译 svn 通信库 svnsync
而不是挂起后,现在与 An error occurred during decompression
或 (if
[global]
http-compression = no
) 在 ~/.subversion/servers
中,然后与 Malformed XML: no element found
。
在转储 svnsync 和源服务器之间的 HTTP 对话后,我发现源服务器关闭了连接,而 svnsync 正在将部分接收到的增量刷新到目标服务器。
解决方案是使用 pv
工具禁用 slice
并使用巨大的缓冲区来保存完整响应:pv -q -C -B4G
添加到 /etc/hosts:
127.0.0.3 svn.acme.com
1.2.3.4 svn.acme.com.real
然后运行:
sudo socat TCP-LISTEN:443,reuseaddr,fork EXEC:"./hugebuf.sh svn.acme.com.real 443",nofork
hugebuf.sh(简化版):
#!/bin/bash
host=${1:?}
port=${2:?}
exec 4>"/dev/tcp/${host:?}/${port}"
cat <&0 >&4 &
pv -q -C -B4G <&4
最后,正常运行 svnsync 命令。现在它可以提交这个修订版了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。