
提交補丁來修復所有損壞的最佳方法是什麼LP:#600941原因?
我問這個問題是因為 LP: #600941 已被放入目前仍受支援的每個 Ubuntu 版本中。我應該選擇一個特定的版本並ubuntu-bug
在其上運行嗎?該版本應該是 LTS、Oneiric 還是 Precise(如果需要,如何獲得 Precise?)
故事是,在它推出後,我們所有的系統都開始遇到 Nagios nrpe 重新啟動失敗的情況。
命令如/etc/init.d/nagios-nrpe-server restart
會導致 nrpe 停止但不重新啟動。
/etc/init.d/nagios-nrpe-server
我追蹤到腳本呼叫的方式start-stop-daemon
。
問題是腳本中的“stop”節/etc/init.d/nagios-nrpe-server
首先呼叫 start-stop-daemon,它將 SIGTERM 發送到 nrpe,然後只等待一秒鐘。
如果此時 nrpe 尚未退出,pid 檔案仍將存在,/etc/init.d/nagios-nrpe-server
腳本將刪除它。
更糟的是,如果/etc/init.d/nagios-nrpe-server restart
使用它,不僅會刪除 pid 文件,而且如果 nrpe 守護程序仍未關閉,嘗試重新啟動 nrpe 將失敗。
在這些情況下嘗試啟動將會失敗,因為 nrpe 仍將綁定到套接字,而第二次嘗試綁定將導致 nrpe 啟動中止。
他們應該想知道為什麼有一條關於「有時 pid 檔案不會被刪除」的評論。
他們應該在負載較重、因此 nrpe 反應時間較慢的系統上進行測試。
解決方法是添加--retry 10
或類似的調用start-stop-daemon ... --stop ...
謝謝
答案1
首先感謝您到目前為止所做的所有錯誤工作。很高興您願意參與修復此錯誤!
最好的方法是報告一個針對 precision 的新 bug,並明確這是由 LP:#600941 引起的回歸。為其添加標籤“regression-updates”。在 LP:#600941 的評論中提及它也很好,這樣用戶在自己調查回歸時就會看到這一點。回歸更新標籤將確保您的錯誤得到分類並快速回應。所以是的,首先從這個開始:
ubuntu-bug nagios-nrpe-server
由於它會影響所有版本,因此您在哪裡執行此操作並不重要(最好在可以單獨放置的平台上執行此操作,以便可以驗證修復)。
目前精確的 ISO 可能無法安裝,但您可以在這裡嘗試:
http://cdimage.ubuntu.com/daily/current/
您也可以透過編輯 /etc/apt/sources.list* 中的來源並將 oneiric 變更為 precision,然後執行 操作,將 oneiric 機器引入精確apt-get update && apt-get dist-upgrade
。不過,正在發生轉變和重大變化,所以不要在生產系統上執行此操作!
要提交修復程序,最好的方法是使用 Ubuntu 分散式開發。將錯誤指派給自己,然後使用以下步驟:
bzr branch lp:ubuntu/nagios-nrpe
cd nagios-nrpe
<edit files that need editing>
dch -D precise -i 'Fixing regression caused by bug 600941. (LP: #XXXXXX)'
debcommit
bzr push lp:~nutznboltz/ubuntu/precise/nagios-nrpe/fix-lpXXXXXX
bzr lp-propose
XXXXXX 是你的新 bug #
您可以在以下位置找到有關如何執行此操作的更多信息https://wiki.ubuntu.com/DistributedDevelopment
請隨時在 Freenode 上的 #ubuntu-devel 和/或 #ubuntu-server 中提問。