-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rolling back doesn't work well with automatic updates #247
Comments
Generalizing this issue a bit, we should also avoid update loops in the case that a failed update is automatically rolled back. |
I believe there is quite a bit of design work hidden in here to define the semantics and flows (both human and automatic) of declaring a release "locally not appreciated". We definitely don't want the user to disable the auto-update logic. Instead, the system should be taking care of not following again edges to releases that the node did not appreciate. There is probably a similar but more tricky case of just rebooting into an older deployment. I haven't tried that yet, but I would expect Zincati to cause the same havoc as the one originally reported here. |
could we give zincati some state information? There are a few pieces of state that would be useful:
In this case we probably should disable auto-updating to the one we rolled back from
If we are manually rolled back by the user then maybe we should disable auto updating?
In this case maybe we should just disable auto-updating as it's not clear what the user wants us to do? |
I was thinking Zincati would just keep track of updates it's applied, and refuse to install the same update twice. That sidesteps the question of tracking rollbacks per se.
There's a very high bar to automatically disabling updates. We should basically never do it without an excellent reason. We might want to allow the user to manually blacklist certain versions (not ranges!) without updating to them first, but that's a bit different from this bug. Maybe we should just add a command-line mode that adds/removes a version from the replay list described above? |
Offhand idea: Have zincati "register" in such a way that rpm-ostree knows it's being driven via So if you want to rollback, you clearly need to opt-out of zincati. |
I don't think that's what we actually want, though. We should discourage users from disabling updates, while still giving them the functionality they need, such as avoiding a particular bad release. |
@bgilbert basically nailed it. But I think we may be all talking about the same thing just with different terms, so I'll try to rephrase all the comments above:
@jlebon has some ongoing work on deployments history at coreos/rpm-ostree#1813, so I'll wait for him to come back to brainstorm on if/how to integrate that here. Additionally, Zincati only provides auto-update hints on the side of rpm-ostree, and the user is still free to manually rollback/upgrade/deploy without having to disable Zincati. We may likely suggest to stop it though when performing manual transactions, to avoid unexpected results due to conflicting actions going through in parallel. |
A regression would then require manual intervention twice: once to roll back, and once to start updates again. |
So, we had additional chats around this topic and we decided to go in the short term for a slightly different strategy on Zincati side. I've split this task to coreos/zincati#111. |
This has been fixed with Zincati 0.0.6, which is already in all channels. Closing. |
Expected behavior: disable automatic updates and rpm-ostree rollback successfully rollback to the previous deployment
Actual behavior: automatic updates is difficult to disable because the rollback removes the file that disables automatic updates
Issue:
I provisioned a FCOS system running
30.20190725.0
and when the system booted, it automatically updated and rebooted into30.20190801.0
. 🍾 automatic updates!Lets say I needed to manually rollback to
30.20190725
for some reason. I disabled updates by creating/etc/zincati/config.d/90-disable-auto-updates.toml
with contentsrpm-ostree rollback
, and rebooted. The problem is thatrpm-ostree rollback
will roll back to an/etc/zincati/config.d
without the90-disable-auto-updates.toml
and will automatically update again as soon as the system is booted.@bgilbert suggested possibly automatically updating to a build only once. @arithx mentioned this related issue regarding reboots with active interactive sessions: #239
The text was updated successfully, but these errors were encountered: