In short, if pump fails to renew a lease prior to expiration, it tries once, and only once, to get a new lease. If this fails, it exits (leaving the interface configured). This is undesirable for two reasons: a) since the interface is left up and running it leads to IP address conflicts and b) it's not very friendly since it requires users to restart pump unnecessarily. In many situations, this attempt to get a new lease will fail for the same reason that the renew failed. Note this should occur less frequently once the patch from 19501 is applied but is still a problem. The attached patch adds a new state (PUMP_INTFINFO_NEEDS_NEWLEASE) to pump.h. When renews fail and the lease has expired, we set this bit in pumpNetIntf.set and set renewAt to 30 seconds from now. In each iteration of the while(1) loop in runDaemon(), we check if the current interface is in this state. If so we try to get a new lease for it. This should allow dhcp machines to survive the situation where the dhcp server is not reachable for a short period of time (or really any period of time). This was found during a short code review of the pump source code after the incident described in http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=19501. Note that I have not tested the attached patch since I don't run RH and the issue was with another user's RH box. At a minimum, consider this a design proposal (although I think the patch should be close to correct modulo the comments about doing this every 30 secs forever). -scott
Created attachment 4488 [details] proposed patch to forever retry new lease request post expiration
Note that this patch assumes that the patch in Bug 19501 has already been applied.
I have seen the described behavior many times. It is extremely annoying and needs to be fixed.
patch applied (and removed #19501 patch since it is included in this one)