我面临一个非常奇怪的问题:我使用mailer.py作为post-commit钩子向开发人员发送代码diff。但后来我发现所有代码登记到这个存储库都很慢,即使1个文件签入也要花费大约2分钟。禁用后提交将使代码签入更快。我检查了apache日志和subversion日志,但没有找到任何有价值的东西。谁能对这个问题有所了解?
环境: Redhat EL 5.4 + CollabNet SubversionEdge 2.0
谢谢,
杰弗里
答案 0 :(得分:2)
也许您可以将差异和邮件程序任务作为与提交后脚本分开的进程生成。这样,签入过程可以完成并返回,而冗长的操作继续作为后台任务。
答案 1 :(得分:1)
我刚遇到同样的问题。 mailer.py
曾经工作得很好,几乎是即时提交,但在部署了包含错误自动挂载条目的新身份验证模式后,它开始减慢到几分钟。
这一切都归结为对某些图书馆的mailer.py测试,因为通过strace显示它
作为post-commit钩子的一部分,通常会运行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"
这显示脚本在几个位置下查找os.py和os.pyc文件(在我的CentOS 6系统中,它们位于/usr/lib64/python2.6下)。
其中一个搜索位置是/ users是在自动挂载映射中指向无响应的服务器。因此它一直挂起,直到计时 - 然后脚本继续&提交操作完成正常 - 只有那么大的延迟
修复automount输入/修复服务器立即解决了问题
希望这会有所帮助。