为啥会出现“svn: E120106: ra_serf: The server sent a truncated HTTP response body”错误? [复制]

Posted

技术标签:

【中文标题】为啥会出现“svn: E120106: ra_serf: The server sent a truncated HTTP response body”错误? [复制]【英文标题】:Why do I get “svn: E120106: ra_serf: The server sent a truncated HTTP response body” error? [duplicate]为什么会出现“svn: E120106: ra_serf: The server sent a truncated HTTP response body”错误? [复制] 【发布时间】:2015-01-31 18:44:52 【问题描述】:

我使用的是 svn 1.8.9,在查看中继代码时出现以下错误

svn: E120106: ra_serf: 服务器发送了一个截断的 HTTP 响应正文。

由于上述错误,我无法查看整个中继代码。请提出解决此问题的方法。

谢谢

【问题讨论】:

【参考方案1】:

你没有写你的 SVN 服务器是什么版本。当您将客户端降级到 1.7 时,您的问题可能会得到解决 - 由于版本 1.8 和 1.7 之间不兼容,您将不得不删除本地存储库并再次同步它。

【讨论】:

【参考方案2】:

SVN 1.8 包含一个新的 HTTP 客户端库 (Serf)。

我认为这是造成这种情况的原因。我已经安装了TortoiseSVN-1.8.6.25419-x64-svn-1.8.8.msi 并执行svn merge 给出了同样的错误。最初我虽然是 svn 服务器超时的问题,但同样的合并操作适用于 1.6。所以我想问题出在 SVN 1.8 及更高版本上。 请将您的 svn 客户端版本恢复到 1.7 或 1.6 并尝试!

【讨论】:

【参考方案3】:

此错误的原因是在服务器上打开一个内部 SVN 文件失败。这是服务器问题,但不是错误。

如果您的 SVN 服务器软件是 Linux 上的 apache WebDAV 扩展:

您需要转到服务器上的位置,apache 存储存储库数据库的位置。使用sudo chown -R www-data:www-data folder_name 更改文件夹所有者。来自客户端的提交问题将消失。

这就是我对这个错误的了解。

【讨论】:

我不确定这一点,因为有时重试最终对我有用。【参考方案4】:

当您通过 svn webdav 提供代码时,这可能会在大签出或大合并期间发生。通常延长服务器超时时间会有所帮助。

http://httpd.apache.org/docs/2.2/mod/core.html#timeout

【讨论】:

【参考方案5】:

我遇到了同样的问题,因为它是一个大结帐但无权延长服务器超时,通过发出解决它:

$ svn cleanup
$ svn up

每次我收到此错误时(直到结帐完成)。

【讨论】:

【参考方案6】:

这是我的解决方案:

1 - 使用清理或 sudo 清理

svn cleanup

2-使用更新或sudo更新

svn update

【讨论】:

【参考方案7】:

这是与超时有关的 apache 服务器问题(SVN 客户端无法正常工作,因为它需要处理大量大文件)。把httpd.conf放到这里,重启一下httpd,问题就解决了,以后不需要清理更新了:

Timeout 12000
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15

【讨论】:

嗨 Komp,欢迎来到 SO!我可能是个好主意,可以解释一下你的 sn-p 正在做什么以及你为什么做了你所做的事情,这样你所谈论的语言和想法的新手会更容易理解。 请注意,增加 客户端 的超时时间要容易得多,而不是服务器:请参阅上面 Denis Shulyaka 的答案。 那是唯一真正帮助我的改变。所有其他提到的变化对我都不起作用。 对我来说,问题在于较新版本的 svn 客户端。另一个 SO 问题的 answer 为我解决了这个问题。我正在使用 Apache 和 dav_svn。 SVNAllowBulkUpdates Prefer【参考方案8】:

尝试将 http-timeout 客户端参数设置为较大的值,如下所述: https://mail-archives.apache.org/mod_mbox/subversion-users/201410.mbox/%3CF98FEACF1869AF4497A996B6F32D22600A91CA@NHL-SVEX01.WSD.L-3Com.com%3E

~/.subversion/servers:

[global]
http-timeout = 6000

http://www.hostingezpublish.com/FAQ/Solving-checkout-problems-with-svn-repositories

【讨论】:

【参考方案9】:

今天我通过使用 SVN 1.9.9 并通过 SVN 命令行从 apache SVN 服务器收集一些“差异”数据也遇到了同样的问题。好吧,'Kompjuteras' 建议将 apache 配置参数设置如下 [== 特别是增加超时]:

“超时 12000 保活开启 MaxKeepAliveRequests 100 KeepAliveTimeout 15"

已经解决了这个问题(而不是 Timeout 12000,我将它设置为 3600 [== 1h])。此外,上面的“Ethan Field”有一个关于参数含义的问题。他们在这里解释得很好:http://httpd.apache.org/docs/2.4/mod/directives.html

我认为这里描述的问题是由在 SVN apache 服务器上配置的“超时”太短引起的。 (自 2.4 版起默认为 60 == 1MIN !!!!!!)

祝你好运,非常感谢!

【讨论】:

【参考方案10】:

可能有点晚了,但是如果您正在疯狂地谷歌搜索这个问题并且您的 Subversion 服务器最近更新到 Debian Buster,您可能想在您的 Apache 的 Subversion 存储库虚拟主机中试试这个选项:

SVNAllowBulkUpdates prefer

将其放在SVNParentPath 指令之后,执行sudo service apache2 reload,然后再次尝试结帐。

来源:https://audeuro.com/node/44

此设置的作用(引自subversion manual):

切换对更新样式报告的全包响应的支持 要求。 Subversion 客户端使用 REPORT 请求获取信息 关于来自 mod_dav_svn 的目录树检出和更新。他们能 要求服务器以两种方式之一发送该信息:使用 整个树的信息在一个大规模的响应中,或者与 skelta(树三角洲的骨架表示),其中仅包含 足够的信息让客户知道要添加哪些附加数据 来自服务器的请求。当此指令包含在值中时 关闭,mod_dav_svn 只会响应这些 REPORT 请求 使用 skelta 响应,无论请求的响应类型如何 由客户提供。

大多数人根本不需要使用这个指令。它主要是 存在于出于安全或审计原因希望的管理员 强制 Subversion 客户端单独获取所有文件和 更新和结帐所需的目录,从而留下审计 Apache 日志中的 GET 和 PROPFIND 请求的踪迹。默认值 该指令的开启。

这听起来有点过时了。我怀疑如果你有一个相当大的存储库,那么一个包含所有内容的报告的大小可能对于传输来说太大了,所以“大多数人根本不需要使用这个指令”的评论不再适用。

【讨论】:

【参考方案11】:

在我的情况下,这是由 SVN 服务器和我的工作站之间的一些“透明”基础设施引起的。我怀疑它是一个代理(websense / mcafee / forcepoint)。

大多数提交都很好,但它无法流式传输一个特别大的提交的内容,可能是内容太大并导致代理崩溃/断开连接。

我能够绕过这个基础设施来解决。在我的情况下,我能够在我的 .git/config 中设置一个替代代理来绕过有问题的基础设施。

【讨论】:

以上是关于为啥会出现“svn: E120106: ra_serf: The server sent a truncated HTTP response body”错误? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 GoogleSignInAccount 会出现此错误?

为啥会出现死锁?

为啥解密时会出现“BadPaddingException”?

为啥会出现“数字格式异常”?

为啥python中会出现这个AttributeError?

为啥删除 UITableView 行时会出现错误?