提交补丁以修复 LP:#600941 造成的所有损坏的方法是什么?

nut*_*ltz 9 patch development

提交补丁以修复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.

问题是/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 文件,不仅会删除 pid 文件,而且如果 nrpe 守护进程仍然延迟关闭,则重新启动 nrpe 的尝试将失败。

在这些情况下尝试启动将失败,因为 nrpe 仍将绑定到套接字,并且第二次尝试绑定将导致 nrpe 启动中止。

他们应该想知道为什么会有关于“有时 pid 文件没有被删除”的评论。

他们应该在负载较重并因此 nrpe 响应时间较慢的系统上进行测试。

解决方法是--retry 10在调用中添加或这样的start-stop-daemon ... --stop ...

谢谢

Spa*_*apS 14

首先感谢您迄今为止所做的所有错误工作。很高兴您愿意参与修复此错误!

最好的方法是针对精确报告一个新的错误,并说明它是由 LP 引起的回归:#600941。给它标签“回归更新”。最好在 LP:#600941 的评论中提及它,以便用户在他们自己调查回归时看到。回归更新标签将确保您的错误被分类并快速响应。所以是的,首先从这个开始:

ubuntu-bug nagios-nrpe-server
Run Code Online (Sandbox Code Playgroud)

由于它会影响所有版本,因此在何处执行此操作并不重要(最好在可以单独放置以便验证修复程序的平台上执行此操作)。

现在可能无法安装精确的 ISO,但您可以在此处尝试:

http://cdimage.ubuntu.com/daily/current/

您还可以通过编辑 /etc/apt/sources.list* 中的源并将 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
Run Code Online (Sandbox Code Playgroud)

XXXXXX 是你的新错误 #

您可以在https://wiki.ubuntu.com/DistributedDevelopment 上找到有关如何执行此操作的更多信息

请不要犹豫,在 Freenode 上的 #ubuntu-devel 和/或 #ubuntu-server 中提问。