In master we added a new
configure-snapd task. This replaces the old “configure” hook to configure the “core” snap. This opens the following problem on core devices. When going from a snapd A that supports this new “configure-snapd” task to a snapd B that does not supports this new task the result will be that in the refresh/revert change there is a task in “Do” state that will never run because the B does not know this task so it will never finish.
This is easy to trigger. On a Ubuntu Core 16 device run:
$ sudo snap refresh --edge core [reboot] $ sudo snap refresh --candidate core [reboot] $ snap changes ... 5 Do 2017-11-10T15:25:43Z - Refresh "core" snap from "candidate" channel $ snap change 5 ... Do 2017-11-10T15:25:43Z - Run configure hook of "core" snap if present $ sudo snap refresh core --edge error: cannot refresh "core": snap "core" has changes in progress
So there is no refresh/auto-refresh out of this situation.
The good news is that its easy to resolve manually:
$ sudo snap abort 5
But we need something that does not require manual intervention here and fix edge to be robust.