| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2023-11-17 | |||
| 10:40:54 | bauzas | elodilles: https://review.opendev.org/c/openstack/requirements/+/901079 | |
| 10:42:40 | elodilles | +1 | |
| 10:43:19 | elodilles | (from release team perspective i'm still happy we are not finding this one week before the final release o:)) | |
| 10:44:31 | bauzas | all hail to the grenade-skip-level lord | |
| 10:44:53 | frickler | and to the "release at rc-1" policy | |
| 10:45:05 | frickler | eh milestone-1 | |
| 10:45:20 | elodilles | yepp \o/ | |
| 11:33:59 | opendevreview | Rajesh Tailor proposed openstack/nova master: trivial doc fix https://review.opendev.org/c/openstack/nova/+/901237 | |
| 11:34:01 | pas-ha[m] | re tooz/etcd - may I bring your attention to https://review.opendev.org/c/openstack/etcd3gw/+/887662 - this adds version autodiscovery to etcd3gw, once there, we could switch default version in tooz to 'auto', and everyone is happy, new tooz will be able to work with the same 'backend_url' with old and new etcd3 | |
| 11:39:03 | pas-ha[m] | this allows to upgrade the etcd and tooz-using components in whatever order w/o changing the configuration | |
| 12:57:25 | opendevreview | Merged openstack/nova master: Bump jsonschema minimum to 4.0.0 https://review.opendev.org/c/openstack/nova/+/850021 | |
| 13:33:19 | jangutter | pas-ha[m]: regarding version autodetect: https://lists.openstack.org/pipermail/openstack-discuss/2023-August/034704.html | |
| 13:35:17 | jangutter | pas-ha[m]: probing for a version also means you don't error on the case where you forgot to upgrade your etcd. | |
| 14:13:57 | bauzas | lemme get it straight | |
| 14:14:08 | bauzas | etcd changed its endpoint by a release | |
| 14:14:36 | bauzas | tooz accordingly changed to use the newer endpoint by a specific tooz release | |
| 14:15:18 | bauzas | given now, we upgrade tooz but not etcd, tooz talks the new way while it should talk to the other endpoint | |
| 14:15:32 | bauzas | amirite, jangutter pas-ha[m], frickler ? | |
| 14:17:57 | jangutter | bauzas: correct, it's also possible to override the endpoint away from the default, in cinder config. Both old and new tooz can work with old and new etcd if the endpoint is given explicitly. | |
| 14:18:02 | tkajinam | the problem is that tooz used to use v3beta which is hardcoded and users had to override it in case needed | |
| 14:18:53 | bauzas | jangutter: was cinder using the default, or was it specifically asking an endpoint? | |
| 14:19:03 | tkajinam | the problem here is that in stable/2023.1 we had old tooz using v1beta by default along with old etcd3 with v1beta. now we upgrade only tooz and the new version uses v1 by default. | |
| 14:19:15 | tkajinam | and because etcd3 is still old after upgrade v3 api is not available | |
| 14:20:13 | jangutter | https://opendev.org/openstack/devstack/commit/3a7a3cd8c5a5ac3f1655d6ff17974f8623fb3330 <--- before this, cinder was using default, after this cinder was asking explicitly for v3 | |
| 14:20:29 | bauzas | we shouldn't expect operators to upgrade their dependencies when upgrading | |
| 14:20:43 | tkajinam | we added api_version=/v3 in coordination url in devstack stable/2023.2, so if you first deploy cinder with stable/2023.1 coordination url does not contain api version | |
| 14:20:56 | opendevreview | John Garbutt proposed openstack/nova-specs master: Expose PCI device NUMA using PXB https://review.opendev.org/c/openstack/nova-specs/+/869416 | |
| 14:21:01 | tkajinam | and the same config value is carried over so tooz continue using the default which has been changed from stable/2023.1 to master | |
| 14:21:42 | jangutter | tkajinam: and it's worse, tooz was using v3alpha, not v3beta https://review.opendev.org/c/openstack/tooz/+/891355/6/tooz/drivers/etcd3gw.py | |
| 14:21:43 | bauzas | okay, but that's then a devstack config problem | |
| 14:21:55 | tkajinam | ah, yeah. I was wrong/ v1alpha | |
| 14:22:09 | bauzas | jangutter: why shouldn't we changing devstack now to use the default? | |
| 14:22:32 | tkajinam | bauzas, no we can't use default | |
| 14:22:36 | bauzas | that's still a breaking change and people would need to change their config when upgrading to Caracal | |
| 14:23:21 | jangutter | the only way config stays the same is if etcd and tooz is upgraded in lockstep. | |
| 14:23:24 | tkajinam | bauzas, the default in tooz stable/2023.1 is v3alpha, the default in tooz master is v3. Because we keep using old etcd without v3 during upgrade process we have to override api version to v3alpha to keep using v3alpha after upgrade | |
| 14:23:58 | jangutter | if etcd and tooz mismatches, the endpoint has to be specified. | |
| 14:24:31 | bauzas | shouldn't tooz be somehow a bit smarter and do a failback call if etcd isn't new enough ? | |
| 14:24:56 | tkajinam | that's what was proposed above by pas-ha[m] | |
| 14:25:02 | opendevreview | John Garbutt proposed openstack/nova-specs master: Add spec for PCI Groups https://review.opendev.org/c/openstack/nova-specs/+/899719 | |
| 14:25:57 | bauzas | what I'm afraid is that operators doing upgrades would face that problem too, right? | |
| 14:26:24 | bauzas | if we start tweaking devstack, there is surely an impact for regular ops that don't deploy with it :) | |
| 14:26:43 | jangutter | that's technically down to etcd3gw backend... and etcd doesn't have a nice version discovery, so, it's the try-different-versions method. | |
| 14:26:45 | bauzas | this means they have to change some config on the fly during upgrades | |
| 14:26:57 | tkajinam | well, we did document the upgrade impact to suggest setting api version in case old api version should be used. | |
| 14:27:08 | bauzas | jangutter: I'm personnally fine with a try/catch clause | |
| 14:27:19 | tkajinam | but what we are learning here is that just documentation may kill some people. | |
| 14:27:23 | tkajinam | including us | |
| 14:27:28 | bauzas | oh yeah | |
| 14:27:47 | tkajinam | https://review.opendev.org/c/openstack/tooz/+/891355/6/releasenotes/notes/etcd-3.4-eee8300c942a1263.yaml | |
| 14:28:00 | bauzas | if you really do breaking upgrades, my personal recommandation is to provide tools that people can consume for checking their states and whether they'll break | |
| 14:28:05 | jangutter | yep, the release notes are the last resort :-/ | |
| 14:28:34 | bauzas | tkajinam: we, in nova, create the nova-status upgrade command for that exact reason | |
| 14:28:40 | bauzas | created* | |
| 14:29:04 | bauzas | because even if we spoil the breaking changes in our relnotes, people may be impacted and miss the point | |
| 14:29:37 | bauzas | anyway, I'm not saying tooz shall do a tooz-status upgrade commande | |
| 14:29:39 | bauzas | command* | |
| 14:29:44 | tkajinam | the problem may be that tooz is not the right place to provide that config validation, because tooz itself does not register config options but components using it does and pass the url value | |
| 14:29:51 | jangutter | The problem is that etcd is sometimes regarded as an _externally_ managed service, and sometimes an _internally_ managed service. | |
| 14:30:00 | tkajinam | we can provide the base implementation but every project may need to implement the command using that | |
| 14:30:08 | bauzas | I'm just saying that we need some kind of lockstep mechanism that can handle both etcd/tooz upgrades at once | |
| 14:31:25 | jangutter | yeah: for kolla-ansible that happens because in one release all the elements (config, tooz, etcd) is in lockstep. But that's not necessarily the same case for source-level projects. | |
| 14:32:43 | bauzas | problem is, again, you can't really ask operators to do some OS upgrade while you're upgrading your services | |
| 14:32:56 | bauzas | that's why grenade is not bumping the reqs | |
| 14:33:36 | jangutter | yeah, _however_ etcd in devstack isn't the os-bundled one. | |
| 14:35:04 | bauzas | just checked, we pull tooz-3.2.0 | |
| 14:35:09 | bauzas | https://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_73a/900783/2/check/grenade-skip-level-always/73acbef/controller/logs/old/devstacklog.txt | |
| 14:36:13 | bauzas | and we have etcd3gw==2.1.0 | |
| 14:36:59 | bauzas | oh tonyb +Wd my revert patch https://review.opendev.org/c/openstack/requirements/+/901079 | |
| 14:38:00 | tonyb | it's clearly broken | |
| 14:38:24 | bauzas | oh heh, https://github.com/openstack/grenade#theory-of-upgrade | |
| 14:38:31 | bauzas | tkajinam: jangutter: ^ | |
| 14:38:45 | jangutter | yeah I saw that. | |
| 14:38:54 | tonyb | we should block it in g-r and figure out how to handle things for the longer term | |
| 14:39:30 | bauzas | "Any other required changes on upgrade are an exception and must be called out in the release notes." and "Grenade supports per release specific upgrade scripts (from-juno, from-kilo)." | |
| 14:39:47 | bauzas | tonyb: I don't disagree | |
| 14:40:33 | bauzas | I still think I'd appreciate if tooz may do some fallback mechanism to an older endpoint if the newer endpoint sounds invalid | |
| 14:40:39 | tkajinam | https://review.opendev.org/q/topic:etcd-api-discovery | |
| 14:40:42 | bauzas | just for the sake of easing people's lifes | |
| 14:41:15 | tkajinam | We probably need a bug and link these to the bug, but we can make tooz smart and discover the available api version unless user explicitly requires a specific version | |
| 14:41:22 | bauzas | tkajinam: wow, kudos | |
| 14:41:26 | tkajinam | which is being implemented in these | |
| 14:41:53 | tkajinam | (tooz patch need further work because we first need a new release of etcd3gw... | |
| 14:41:57 | bauzas | sounds a good path to me | |
| 14:42:32 | bauzas | we may ban the current tooz release and just await for a newer release once everything is fine | |
| 14:42:38 | jangutter | tkajinam: one question - if etcd gets updated (v3alpha disappears and v3 appears) - would this case be handled? | |
| 14:44:33 | tkajinam | jangutter, yes. with that code etcd checks the etcd server version using version api and use the latest api version available | |
| 14:44:47 | tkajinam | jangutter, though you may need to restart servers because the detected api is cached after the first detection. | |
| 14:44:57 | tkajinam | s/servers/services/ I mean | |
| 14:45:10 | tkajinam | s/etcd checks/tooz checks/ | |
| 14:45:44 | jangutter | takjinam: so it will appear if cinder "remembers" the version of etcd it first connected to and never try a newer version? | |
| 14:46:37 | tkajinam | there is tradeoff. we can let tooz check api version every time but it always requires additional api call | |
| 14:46:47 | tkajinam | we may probably implement expire but I'd leave it for now | |
| 14:46:58 | tkajinam | jangutter, I probably had to say this first. yes, you are correct | |
| 14:49:19 | jangutter | tkajinam: yeah, gracefully redetecting the endpoint on error is also another option, that adds time to report errors. | |
| 14:50:40 | jangutter | but this covers 95% of the pain. | |
| 14:58:08 | tkajinam | https://bugs.launchpad.net/python-etcd3gw/+bug/2043810 | |
| 14:59:01 | tkajinam | I've created a bug here... in case you want something you can refer to | |
| 14:59:04 | tkajinam | jangutter, we can discuss how we can realize the automated switch without restart, but I'd prefer leaving it for follow-up. | |
| 15:00:05 | jangutter | tkajinam: right, I'm fine with just documenting the behavior (i.e. we expect dependent services to be restarted on etcd upgrade) | |