| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-11-28 | |||
| 16:18:17 | bauzas | artom: it's a possibility yes | |
| 16:18:23 | bauzas | that's even a common pattern | |
| 16:18:31 | sean-k-mooney | in that case they are likely specifyign the host as they are freeing up old host to upgrade | |
| 16:18:37 | bauzas | operators do a lot of migrations when they upgrade | |
| 16:18:48 | dansmith | artom: live migration during an upgrade is the primary mechanism that most people use | |
| 16:19:07 | dansmith | artom: *lots* of people refuse to upgrade a compute node until they've moved everything off of it | |
| 16:19:14 | bauzas | tbh, I'm fine with dropping a release note saying there will be an impact | |
| 16:19:21 | artom | dansmith, fair enough | |
| 16:19:49 | bauzas | given worloads should move from old to new | |
| 16:19:56 | bauzas | and not from new to old | |
| 16:19:59 | sean-k-mooney | bauzas: we could do what we did for multiple port bindings and just fall back to the old behavior | |
| 16:20:12 | bauzas | oh shit, the problem is with old to new | |
| 16:20:17 | bauzas | not the contrary, my bad | |
| 16:20:41 | artom | I just don't see how we can realistically handle that | |
| 16:20:44 | bauzas | so, yeah, we could shoot operators in the foot | |
| 16:20:58 | bauzas | artom: we could make a flag during the upgrade | |
| 16:21:03 | artom | Keep the old code paths intact while somehow adding claims and all the new XML stuff | |
| 16:21:13 | bauzas | and say 'if you need so, it's on you, folks" | |
| 16:21:21 | sean-k-mooney | artom: for old to new we can fallback to the old behvior | |
| 16:21:38 | bauzas | new to old isn't a problem | |
| 16:21:41 | bauzas | new to new isn't a problem | |
| 16:21:42 | artom | sean-k-mooney, can we? How do we even implement that? | |
| 16:21:45 | bauzas | old to new is the problem | |
| 16:22:00 | sean-k-mooney | e.g. claim nothing and tell people to migrate again after migrate to fix everything | |
| 16:22:02 | bauzas | so yeah, we somehow need to keep the broken behaviour | |
| 16:22:05 | artom | It's going to be way ugly with a whole bunch of conditionals all over the place | |
| 16:22:15 | bauzas | artom: I know, it's freaking ugly | |
| 16:22:46 | bauzas | but I don't see operators be happy with what you propose :p | |
| 16:22:46 | artom | Unless we do the new stuff in entirely new RPC calls/casts | |
| 16:22:55 | gibi | mriedem, jmlowe: I reported https://bugs.launchpad.net/nova/+bug/1805659 | |
| 16:22:55 | openstack | Launchpad bug 1805659 in OpenStack Compute (nova) "nova notifications hammering the message bus" [Undecided,New] | |
| 16:22:58 | sean-k-mooney | artom: its what we did for multiple port bindings. we check if a field exitsing in the migrate data if not we do the old stuff if its there we do the new way | |
| 16:23:04 | artom | bauzas, yeah, probably true | |
| 16:23:05 | dansmith | artom: that's how we do things gracefully | |
| 16:23:14 | bauzas | couldn't you drop the move claim if the RPC argument is not there ? | |
| 16:23:18 | dansmith | artom: i.e. pass a flag, and if it's missing, assume it's an old compute and do the old thing | |
| 16:23:19 | artom | dansmith, what is? New RPC version? | |
| 16:23:29 | dansmith | you can't see the rpc version on the receiving end | |
| 16:23:32 | dansmith | you need a flag | |
| 16:23:32 | bauzas | what dansmith said and me :) | |
| 16:23:36 | dansmith | do_the_new_thing=True | |
| 16:23:46 | bauzas | that's what we generally do | |
| 16:23:49 | artom | dansmith, I don't disagree, but it's going to be a mess | |
| 16:23:58 | bauzas | artom: I can point you some code I wrote that does the signaling | |
| 16:24:18 | dansmith | artom: it's how you have to do it | |
| 16:24:19 | dansmith | it's how everything we do that involves old/new services works | |
| 16:24:30 | bauzas | artom: sure, but we somehow need to know that the live migration comes from an old compute hence us releasing the check | |
| 16:24:41 | bauzas | and not doing the claim | |
| 16:25:05 | mriedem | if you have an old dest compute, the migrate_data won't have the numa stuff from the claim right? | |
| 16:25:24 | mriedem | so the source (if new) can't rely on it | |
| 16:25:35 | artom | mriedem, other way around, new dest, old source | |
| 16:25:44 | artom | So source won't send the updated XML, but dest will have claimed for it | |
| 16:25:55 | artom | So we need to do conditional claiming based on source compute version | |
| 16:26:15 | mriedem | i think that's what the file-backed memory live migration does... | |
| 16:26:16 | bauzas | you could make the migrate_data parameter a sentinel | |
| 16:26:22 | mriedem | it checks the compute service version for the source from the dest | |
| 16:26:47 | artom | Alright, lemme update the spec | |
| 16:27:02 | bauzas | artom: just change this | |
| 16:27:06 | bauzas | other things were nits | |
| 16:27:16 | bauzas | just for documenting the spec | |
| 16:27:18 | artom | Alright if I keep it kinda high-level? So "conditional claim", but without specifying what that condition will look like (flag, version checking, etc)? | |
| 16:27:20 | bauzas | later when we review | |
| 16:27:28 | dansmith | artom: you can't check the version | |
| 16:27:42 | mriedem | artom: this is the code i'm thinking of https://github.com/openstack/nova/blob/62245235bc15da6abcdfd3df1c24bd856d69fbb4/nova/virt/libvirt/driver.py#L6636 | |
| 16:27:51 | artom | dansmith, I guess not on the compute, eh? | |
| 16:27:59 | artom | Only conductor, so it has to be flag | |
| 16:28:07 | bauzas | mriedem: we don't want to fail | |
| 16:28:16 | dansmith | artom: I'm not sure what you mean | |
| 16:28:19 | bauzas | mriedem: we want to blindly accept the migration and not claim | |
| 16:28:23 | mriedem | bauzas: you don't want to claim on the dest if the source isn't going to use it | |
| 16:28:24 | mriedem | right? | |
| 16:28:38 | bauzas | that's right | |
| 16:28:39 | artom | dansmith, can the dest compute check the source compute version? | |
| 16:28:47 | artom | And do the new thing only if the source compute is hew? | |
| 16:28:48 | artom | *new | |
| 16:28:49 | dansmith | artom: don't do it that way | |
| 16:28:50 | mriedem | my point is, ^ is how the dest checks the source compute version today - that pattern could be re-used, not the specific failure thing | |
| 16:29:04 | dansmith | artom: because version pinning might mean you have a new compute, but it didn't send something new | |
| 16:29:23 | artom | dansmith, oh right | |
| 16:29:46 | artom | Wait up though | |
| 16:29:57 | bauzas | artom: https://github.com/openstack/nova/blob/master/nova/scheduler/manager.py#L93 | |
| 16:30:11 | bauzas | artom: that's one example of a flag (the _sentinel value) | |
| 16:30:23 | dansmith | the file-backed stuff chooses not to migrate at all if the target isn't going to support it I think, but in your case you have to allow it, you just need to do the old thing | |
| 16:30:40 | mriedem | if the source isnt going to suppor it | |
| 16:30:43 | mriedem | *support | |
| 16:30:49 | bauzas | shit, I need to bail out | |
| 16:30:58 | bauzas | I just dropped my poop and then I leave | |
| 16:30:59 | bauzas | excellent | |
| 16:31:08 | dansmith | bauzas: um... | |
| 16:31:10 | artom | You panda | |
| 16:31:17 | artom | Eats poops and leaves | |
| 16:31:21 | artom | No wait, it's "shoots" | |
| 16:31:21 | mriedem | dansmith: i think the point is, from the dest, if the source is old, we don't claim on the dest and we don't put the numa things in migrate_data, | |
| 16:31:22 | artom | Dammit >< | |
| 16:31:26 | bauzas | context is https://www.meetup.com/fr-FR/Groupe-dutilisateurs-Python-Grenoble/events/256520367/ | |
| 16:31:38 | mriedem | because and old source isn't going to use those anyway, and also wouldn't know to rollback the claim or whatever | |
| 16:31:43 | bauzas | for once we have a meetup that talks OpenStack here... | |
| 16:32:16 | dansmith | mriedem: it really needs to work both ways, whether the source is old or new | |
| 16:32:25 | mriedem | if the dest is old, | |
| 16:32:29 | mriedem | and the source is new, | |