2011-09-01 32 views
2

我面臨一個非常奇怪的問題:我使用mailer.py作爲post-commit掛鉤向開發者發送代碼差異。但後來我發現所有的代碼簽入到這個倉庫是非常緩慢的,即使1個文件簽入將花費大約2分鐘。禁用後提交將使代碼簽入速度更快。我檢查Apache日誌和顛覆日誌,但沒有發現任何有價值的東西。任何人都可以對這個問題有所瞭解嗎?Subversion承諾由於提交後非常緩慢

環境: 紅帽EL 5.4 + CollabNet的SubversionEdge 2.0

感謝,

傑弗裏

+2

我的假設是你的提交後腳本腳本需要大約2分鐘才能運行。 –

+0

是的,運行需要很長時間,但我認爲後提交是以異步方式運行的,但事實並非如此。無論如何,我想出了一種將任務作爲後臺任務運行的方式。 – asticx

回答

2

或許你可以從後提交腳本產卵關閉diff和郵件的任務,因爲單獨的進程。這種方式的簽入過程可以完成並返回,而冗長的操作繼續作爲後臺任務。

+0

我假設post-commit被設計爲作爲後臺任務運行,但在搜索後我得到一個註釋:當運行hook時,svn調用apr_proc_wait,apr_proc_wait被設計爲等到所有子進程退出之前退出。所以我必須附加「>>/dev/null 2>&1」以及「&」,這樣差異檢查和郵件程序就會從提交後過​​程中分離出來。它看起來像所有事情都按我的預期工作。 – asticx

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下)。
其中一個搜索到的位置是位於自動安裝映射中指向無響應服務器的用戶。因此它一直掛起直到超時 - 然後腳本繼續&提交操作完成 - 只有這個巨大的延遲。

修復自動登錄/修復該服務器立即解決了問題。
希望這有助於。