对于我们的一个 gerrit 项目,在浏览文件差异时,我们会收到以下错误:
应用程序错误
由于服务器错误,行内差异不可用
[继续]
并非所有项目都会发生这种情况,目前我们仅在一个项目上检测到错误。
我查看了 Google 和 gerrit 文档。在他们的源代码上找到了参考,但不知道是什么原因造成的以及如何解决。
出现错误的网页包含“继续”按钮。单击后,它将带您进入您选择的文件,但错误很烦人。
你知道如何解决这个问题吗?
对于我们的一个 gerrit 项目,在浏览文件差异时,我们会收到以下错误:
应用程序错误
由于服务器错误,行内差异不可用
[继续]
并非所有项目都会发生这种情况,目前我们仅在一个项目上检测到错误。
我查看了 Google 和 gerrit 文档。在他们的源代码上找到了参考,但不知道是什么原因造成的以及如何解决。
出现错误的网页包含“继续”按钮。单击后,它将带您进入您选择的文件,但错误很烦人。
你知道如何解决这个问题吗?
这是在缓存一个文件的行内差异时引起的,在两次提交之间进行比较时。默认超时值为 5 秒。如果文件很大,并且计算时间超过超时,工作线程将终止,显示错误消息,并且文件对不显示行内差异。
一个解决方案可以解决这个问题。
在 gerrit.conf 中添加配置。
[缓存“diff_intraline”]
timeout = 15000 ms # 或者你想要的其他时间长度。
使用具有 ViewCaches 全局功能的用户运行 SSH 命令“gerrit flush-caches”。
ssh -p 端口 userxxx@host gerrit 刷新缓存
然后它会工作。
错误原因:
这是因为 Gerrit 花费了太长时间来比较文件,并将其缓存之一中的差异标记为不可用。
相关的错误日志在这里:[2012-06-08 11:14:08,547] WARN com.google.gerrit.server.patch.IntraLineLoader:在提交 354dd67ad54578cf801d8cda64a4ae8484ebb0b7 比较路径 xxxxxxx.java 时,项目 xxxxxxx 中的 IntraLineDiff 达到 5000 毫秒超时bf9fbc21520af7bfd0841c8b9f955ca6e215b059..f6b9c7992c12cfdca253acd033966f98f70f3543。杀死 IntraLineDiff-6