[dns-server] servers should be able to use older configs#8278
Conversation
PR #8047 comes with an unfortunate upgrade-only bug: before an upgrade, a system's DNS servers would write out a configuration without the new `serial` field added in 8047. When upgraded, the DNS servers would then try to load that config, see it is missing a `serial` field, and error for every query. We expect to replace the previous-format configuration immediately after upgrade by regenerating a blueprint for the current system and executing it. But we should be able to use the previous-format configuration anyway, so that DNS functions enough to get a control plane capable of planning and executing that blueprint.
so handle finding an old config at this point as well
|
on first, the control plane comes up. second, regenerating a blueprint from a current inventory and the misleading diff is not actually an issue, because when we execute the blueprint we compute a diff against what's in CRDB, not the previous blueprint. we correctly determine there are changes to be made, and send those updates out. third, the update does not become effectual in so i pulled the DNS server state from i think we ought to have a better with the second i've been wondering how to test this, and i'm still not really sure. i kind of want to be able to grab an old |
davepacheco
left a comment
There was a problem hiding this comment.
Sorry for not catching this!
The intent here is that zones never have to deal with persistent data written by older (or newer) versions. This won't come up during a real upgrade, but unfortunately does come up with MUPdate.
PR #8047 comes with an unfortunate upgrade-only bug: before an upgrade, a system's DNS servers would write out a configuration without the new
serialfield added in 8047. When upgraded, the DNS servers would then try to load that config, see it is missing aserialfield, and error for every query.We expect to replace the previous-format configuration immediately after upgrade by regenerating a blueprint for the current system and executing it. But we should be able to use the previous-format configuration anyway, so that DNS functions enough to get a control plane capable of planning and executing that blueprint.
I'm going to test out the upgrade flow imminently by hand somewhere, so we can be certain this will work on dogfood. Draft as I've not actually tried an upgrade with this change yet, but I'm very confident in it.
If we merge this, we should not merge #8272. If we merge #8272, then this will conflict with main, but would be a clean patch on top of a
revert #8272commit where both can go in as a new squash commit. I'm fine either way, more focused on making sure upgrades still.. work.