If the clock was jumping on the controller, then this could be explained. I've looked over the worker/lease and worker/leadership code, and it should now be sound when compiled with Go 1.9+ (which we now do), from Juju 2.3-beta2+ (new lease manager code).
"is-leader" does refresh. You can see the details here: https:/ /github. com/juju/ juju/blob/ develop/ worker/ uniter/ runner/ context/ leader. go#L54.
If the clock was jumping on the controller, then this could be explained. I've looked over the worker/lease and worker/leadership code, and it should now be sound when compiled with Go 1.9+ (which we now do), from Juju 2.3-beta2+ (new lease manager code).