我面临一个非常奇怪的问题:我使用 mailer.py 作为提交后挂钩将代码差异发送给开发人员。但是后来我发现所有代码签入到这个存储库都很慢,即使是 1 个文件签入也要花费大约 2 分钟。禁用 post-commit 将使代码签入更快。我检查了 apache 日志和 subversion 日志,但没有发现任何有价值的东西。任何人都可以对这个问题有所了解吗?
环境:Redhat EL 5.4 + CollabNet SubversionEdge 2.0
谢谢,
杰弗里
我面临一个非常奇怪的问题:我使用 mailer.py 作为提交后挂钩将代码差异发送给开发人员。但是后来我发现所有代码签入到这个存储库都很慢,即使是 1 个文件签入也要花费大约 2 分钟。禁用 post-commit 将使代码签入更快。我检查了 apache 日志和 subversion 日志,但没有发现任何有价值的东西。任何人都可以对这个问题有所了解吗?
环境:Redhat EL 5.4 + CollabNet SubversionEdge 2.0
谢谢,
杰弗里
也许您可以将 diff 和 mailer 任务作为与 post-commit 脚本分开的进程产生。这样,签入过程可以完成并返回,而冗长的操作作为后台任务继续进行。
我刚刚面临同样的问题。过去工作得mailer.py
很好,几乎可以立即提交,但是在部署了一个包含错误自动挂载条目的新身份验证模式后,它开始减慢到几分钟。
正如通过 strace 运行它所揭示的那样,这一切都归结为对某些库的 mailer.py 测试。
作为提交后挂钩的一部分,通常会运行mailer.py
,我插入了一个 strace ,就像:
# EXAMPLE OF DOING STRACE TO DEBUG/TROUBLESHOOT THIS:
/usr/bin/strace /usr/share/doc/subversion-1.6.11/tools/hook-scripts/mailer/mailer.py commit "$REPOS" "$REV" > /tmp/zzSTRACE-MAILER 2>&1
# (The original line is)
# /usr/share/doc/subversion-1.6.11/tools/hook-scripts/mailer/mailer.py commit "$REPOS" "$REV"
这显示了脚本在多个位置(在我的 CentOS 6 系统中它们位于 /usr/lib64/python2.6 下)下寻找 os.py 和 os.pyc 文件。
搜索到的位置之一是 /users,它位于自动挂载地图中,指向无响应的服务器。因此,它一直挂起,直到超时 - 然后脚本继续并且提交操作完成 - 只有巨大的延迟。
修复自动挂载条目/修复该服务器立即解决了该问题。
希望这会有所帮助。