如何提交一个补丁来修复LP: #600941所造成的所有损害?

什么是修复LP:#600941引起的所有损害的最佳方法?
我问这个问题是因为在目前支持的每个Ubuntu版本中都加入了LP:#600941。我应该选择一个特定的版本并在上面运行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脚本中的"stop"部分首先调用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响应时间较慢的系统上进行测试。
解决方法是在start-stop-daemon ... --stop ...的调用中添加--retry 10或类似的参数。
谢谢。
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,然后执行 apt-get update && apt-get dist-upgrade,在精确模式下使用 oneiric 机器。然而,目前正进行着过渡和重大变化,所以不要在生产系统上这样做!要提交修复,请使用 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频道中提问。

非常感谢您提供的所有这些宝贵信息。我会看看将来能否充分利用它们。 - nutznboltz
我已将你的待办事项清单附加到我们内部的Atlassian工单系统中,这样我就不会忘记它了。 - nutznboltz
到目前为止,我已经处理了LP:#896388。 - nutznboltz
1原来你骗我浪费了我的时间,参见http://ubuntuforums.org/showthread.php?p=11489142 - nutznboltz
Nutznboltz,我一点也不认为你浪费了时间!正如stgraber所说,他希望看到你的修复被Debian上游接受。这是一个非常正常的回应,也是流程中的一个重要步骤...否则它可能在下一个发布版本中出现退化。你的工作非常受到赞赏,我相信你的修复将会被接受。 - SpamapS
嗯,这是一个漫长的过程来修补一个最小的问题,所以我能理解他的一些沮丧,很遗憾,为Ubuntu修复问题并不容易。 - Javier López
由于修复需要被广大用户接受,所以这个过程是谨慎的。这也意味着很难以一种随意的方式参与其中。但这也意味着你会得到一个更高质量的操作系统,因为在将变化发送给所有人之前,有更多的眼睛(或许更重要的是,权威的眼睛)审查了这些变化。 - SpamapS