提交补丁来修复所有损坏的最佳方法是什么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
首先感谢您迄今为止所做的所有错误修复工作。您愿意参与修复此错误真是太好了!
最好的方法是报告针对 precise 的新错误,并明确说明这是由 LP:#600941 引起的回归。给它添加标签“regression-updates”。在 LP:#600941 的评论中提及它也很好,这样用户在调查自己遇到的回归时就会看到它。regression-updates 标签将确保您的错误得到快速分类和响应。所以是的,首先从这个开始:
ubuntu-bug nagios-nrpe-server
因为它会影响所有版本,所以你在哪里执行此操作并不重要(最好在你可以不动声色的平台上执行此操作,以便你可以验证修复)。
目前精确的 ISO 可能无法安装,但您可以在这里尝试:
http://cdimage.ubuntu.com/daily/current/
您还可以通过编辑 /etc/apt/sources.list* 中的源并将 oneiric 更改为 precise,然后执行 ,将 oneiric 机器带到 precise 上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 是你的新错误#
您可以在以下网址找到有关如何执行此操作的更多信息https://wiki.ubuntu.com/DistributedDevelopment
请随时在 Freenode 上的 #ubuntu-devel 和/或 #ubuntu-server 中提问。