Citeren Michal Hlavinka <[email protected]>:
Hi,
one user found problem with restarting nut. upsdrvctl does not wait for
drivers being really terminated. In init scripts we have following:
killproc upsmon
killproc upsd
upsdrvctl stop
and then
upsdrvctl start
upsd
upsmon
problem is upsdrvctl stop only sends terminating signals but does
not wait for
driver termination.
This is by design. If the battery is low, we don't want to hang around
waiting for a driver that fails to respond immediately. Instead, the
system should proceed shutting down immediately (to deal with systems
where stop scripts are not run concurrently).
This makes driver fail to start sometimes when old driver
is still running because "device is locked by another process".
Known issue, which has been discussed several times in the past as
well. The solution is also well known. If you put a 'sleep 2' between
stopping and starting of upsdrvctl, all sane drivers will have had
plenty of time to notice this. If you find one that doesn't, please
let us know (and we can fix it).
I've prepared
patch cloning stop_driver function to wait_driver_stoped which blocks until
timeout or until /proc/<pid> disappears. This function is called after
send_all_drivers(stop_driver). See attached patch.
Patch is missing, but I very much doubt we would take the risk to do
this anyway. I don't think we want to risk a longer delay at a time
where the battery is critical, versus a minor inconvenience when
restarting NUT (which can be fixed with a small delay).
If you don't want to make this changes I can modify init script restart
function instead to wait until all processes with pid in /var/run/nut/*.pid
files are dead, but I find this quite ugly.
It's not needed. Any driver that fails to respond to a signal to stop
within two seconds, is not listening anymore. So if after waiting for
two seconds the driver has not stopped, it never will. I doubt that
adding a two second delay in a restart script is noticeable.
Best regards, Arjen
--
Please keep list traffic on the list
_______________________________________________
Nut-upsdev mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/nut-upsdev