| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2022-08-30 | |||
| 19:21:44 | dansmith | I'n not saying we should waste time on a test | |
| 19:21:59 | dansmith | I'm saying we *could* easily write a legit test that *will* fail on a grenade job because this is broken | |
| 19:22:14 | dansmith | that should be our *semantic test* for "is this something we should merge" | |
| 19:23:02 | dansmith | sean-k-mooney[m]: this also has a bit of a race sort of condition in it | |
| 19:23:11 | dansmith | if I do a hard reboot with new user data, | |
| 19:23:20 | sean-k-mooney[m] | ah right i think you confinced me already that we should not merge it as is | |
| 19:23:22 | dansmith | the API will write the user data to the instance record, then go to make the rpc call | |
| 19:23:31 | dansmith | if rabbit is down, or the compute is down, the rpc call will fail, | |
| 19:24:33 | dansmith | well, I guess it will still see the dirty flag in that case, but only if they do another hard reboot | |
| 19:24:44 | dansmith | point being, the pre-update of the user data is presumptuous | |
| 19:24:45 | sean-k-mooney[m] | yes | |
| 19:24:55 | dansmith | not easy to resolve that at this point though | |
| 19:25:03 | sean-k-mooney[m] | the dirty flag was intneded to say regenerate the config drive the next time you hard reboot | |
| 19:25:46 | sean-k-mooney[m] | which made sense when the intent was to allow update with config drive | |
| 19:25:48 | dansmith | another interesting wrinkle in that case, | |
| 19:25:55 | dansmith | is that we'll set that flag even if the compute is way too old, | |
| 19:25:57 | sean-k-mooney[m] | since it was lazy | |
| 19:26:16 | dansmith | then they reboot, nothing happens.. then 6mo later when the operator upgrades that compute .. poof, user data changes | |
| 19:26:33 | sean-k-mooney[m] | yes but when the compute is eventually updated it will regenerate the config on the next reboot | |
| 19:27:48 | dansmith | right, but that could be many months later | |
| 19:27:56 | dansmith | which could be quite confusing for someone, | |
| 19:28:15 | dansmith | especially if they wrote something to test, tried to set it via hard reboot, it seemed to allow it but never worked, shrugged and went off, | |
| 19:28:24 | dansmith | then 6mo later it changes suddenly... | |
| 19:28:38 | dansmith | that user_data script might have been untested, they couldn't test it, so they assumed no harm | |
| 19:29:08 | sean-k-mooney[m] | it could. so orginally the problem of how/when to regnerate the conf dirver came up a few months ago after the spec review | |
| 19:29:27 | dansmith | I upgraded my +0 to -1: https://review.opendev.org/c/openstack/nova/+/816157 | |
| 19:29:32 | sean-k-mooney[m] | and at the time the ideia of the dirity flag was disucsed to allow this | |
| 19:29:59 | sean-k-mooney[m] | its obvious we should have intoduced the rpc bump now | |
| 19:30:15 | dansmith | yeah I understand the "lazy do it later" aspect, but if it's broken and doesn't get honored right away, that "later" being a half year or more seems like more harm than good | |
| 19:30:25 | sean-k-mooney[m] | but orgianlly i tought that lazy rebuild was actully desirebale | |
| 19:30:39 | sean-k-mooney[m] | ack | |
| 19:30:51 | dansmith | lazy is good as long as it's not TOO LAZY :P | |
| 19:31:53 | sean-k-mooney[m] | the rebuild series has both a compute service bump and rpc bump right | |
| 19:32:22 | dansmith | yes | |
| 19:32:30 | sean-k-mooney[m] | so eihter way it will have to be updated when this is adressed | |
| 19:32:38 | dansmith | yes | |
| 19:32:50 | sean-k-mooney[m] | so 6.1 would be for update_userdata and 6.2 for rebuild | |
| 19:33:02 | dansmith | yeah | |
| 19:33:09 | dansmith | are you thinking be sneaky and combine? I dunno how I feel about that | |
| 19:33:30 | sean-k-mooney[m] | no | |
| 19:33:53 | sean-k-mooney[m] | 6.1 for extending hard_reboot | |
| 19:34:01 | sean-k-mooney[m] | and 6.2 for extending rebuild | |
| 19:34:08 | sean-k-mooney[m] | not cominign both into 6.1 | |
| 19:34:18 | sean-k-mooney[m] | since there in different patches that would be odd | |
| 19:34:23 | dansmith | ack, yep, that's what i'll be, and of course service versions for each bump | |
| 19:34:35 | dansmith | *it'll | |
| 19:34:39 | sean-k-mooney[m] | and we should not squash them obviously since the patches are unrelated | |
| 19:35:11 | dansmith | no, I just thought you were about to "get creative" :) | |
| 19:35:29 | sean-k-mooney[m] | hehe not with correctness | |
| 19:35:49 | sean-k-mooney[m] | out side of a bug fix… | |
| 19:36:59 | sean-k-mooney[m] | jhartkopf: ^ | |
| 19:37:09 | sean-k-mooney[m] | not sure you were following that | |
| 19:38:17 | dansmith | not online, AFAICT | |
| 19:39:00 | dansmith | ugh, | |
| 19:39:11 | dansmith | all of the virt and rpc stuff that the rebuild patches touch will conflict out | |
| 19:39:18 | dansmith | I so wish luck had landed these in opposite order | |
| 19:46:56 | sean-k-mooney[m] | by the way apprently the matix bridge does not actullly only show you the currently online people | |
| 19:47:24 | sean-k-mooney[m] | which is why jhartkopf auto completed for me even if they are not here | |
| 19:51:26 | dansmith | sean-k-mooney[m]: https://termbin.com/q3ev | |
| 19:51:32 | dansmith | I think that's basically what needs to happen | |
| 19:52:43 | dansmith | I wish we could get a read on this from melwitt and gibi so I should know if I should spend my evening trying to get this all changed and tested | |
| 19:53:31 | sean-k-mooney[m] | ignoring your base64 nits that looks about right | |
| 19:54:57 | dansmith | it also seems like the tests on this are pretty lacking, no? | |
| 19:55:04 | dansmith | like, there are no tests on the virt driver changes? | |
| 19:55:10 | sean-k-mooney[m] | im currently trying to set up a devstack env i dont currently have one to test it. we do still have 2 days for code frezee | |
| 19:55:42 | dansmith | like, no test that I see that actually checks that the libvirt driver will honor the flag | |
| 19:56:03 | opendevreview | Rico Lin proposed openstack/nova master: Add traits for viommu model https://review.opendev.org/c/openstack/nova/+/844507 | |
| 19:56:19 | gibi | I'm not sure I have enough brain left today for this. But I have at least two comments to the above 1) I don't think this is a rebuild feature it is tight to hard reboot 2) I think we prevented the possible upgrade issue with the capability trait. | |
| 19:56:43 | ricolin | sean-k-mooney[m]: just update the viommu traits patch :) | |
| 19:56:45 | gibi | I cannot argue that this can be done differently | |
| 19:57:08 | gibi | and dansmith you are right that the system metadata dependency makes it at least a grey interface | |
| 19:57:42 | gibi | it is sad that we figured out this issue late in the cycle | |
| 19:58:12 | dansmith | gibi: I don't understand what you mean by #1, but yeah I guess you're right on the trait.. that's preeety thin though :) | |
| 19:59:02 | gibi | #1 is probably just a missunderstanding from | |
| 19:59:03 | gibi | 20:58 < dansmith> rebuild is basically growing a new feature, and we need to pass it a flag, | |
| 20:00:03 | sean-k-mooney[m] | the trait wont be reported on a non upgraded compute yes | |
| 20:00:14 | sean-k-mooney[m] | which might help for the upgrade chase specifically | |
| 20:00:26 | dansmith | gibi: oh yeah I meant reboot there sorry | |
| 20:00:27 | gibi | on the flag itself. The RPC flag vs the persisted field has some semantic difference. If we update the user_data in the DB in the API layer then pass a flag to regenerate the config drive via the RPC then a lost RPC means that the DB data and the config data got out of sync | |
| 20:01:24 | dansmith | gibi: but we can and should revert if we're reporting failure to the user | |
| 20:01:30 | sean-k-mooney[m] | so im not sure if we should revert | |
| 20:01:32 | dansmith | because if this happens because of the lack of a trait or version, | |
| 20:01:34 | gibi | the reboot RPC is a cast | |
| 20:01:45 | gibi | so if the RPC lost the API wont notice | |
| 20:01:46 | sean-k-mooney[m] | the reason for that is todya id we update instnace metadata | |
| 20:01:48 | dansmith | then it will pop into being in six months and be very confusing | |
| 20:01:52 | sean-k-mooney[m] | we dont update the config drive | |
| 20:02:04 | sean-k-mooney[m] | unless you do a cross cell migration | |
| 20:02:23 | sean-k-mooney[m] | so you can have a delta between the metadta api and the config drive today | |
| 20:02:31 | melwitt | ugh, my irc client had "froze" not receiving new messages for only this network and I didn't realize it until now. had to close and reopen the client to receive and send messages | |
| 20:03:02 | dansmith | gibi: ack, not for a version conflict, but for an actual lost RPC we'd get out of sync.. I'm not sure if that's better or worse than queuing an update for six months later on a different version of the software, but fair point | |
| 20:03:35 | gibi | yeah, both case seems problematic | |
| 20:03:39 | dansmith | indeed | |
| 20:03:55 | melwitt | I just skimmed through yalls review comments from today a little while ago and don't have a handle yet on what's going on. I will read further and add a comment once I understand it | |
| 20:04:23 | dansmith | I guess the trait eliminates the acute concern of this being actually broken, but I'm still concerned about setting the precedent for shadow RPC interfaces in metadata, even if protected by a flag like that | |
| 20:04:24 | gibi | could we do both the DB update and the config driver regeneration from the nova-compute service? | |
| 20:04:33 | sean-k-mooney[m] | do we consider the user_data to be higher imporantce to be updated then other info in the config drive | |
| 20:04:36 | dansmith | it's what we have versioning for and how we do math about "can we do this now or not" | |
| 20:04:38 | sean-k-mooney[m] | that we dont regenerate today | |
| 20:05:06 | dansmith | gibi: well my first thought was not a flag, but pass the user data to the reboot call, and let it update it | |