| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-08-09 | |||
| 20:27:32 | dansmith | regardless, you did a LB migration job and it passed a few times at least | |
| 20:27:34 | mriedem | i had rigged up a patch that ran linuxbridge multinode to test sahid's patch | |
| 20:27:41 | mriedem | yeah, could have won the race though right? | |
| 20:27:43 | Sundar | efried: Please ping me when you have a moment | |
| 20:28:07 | efried | Hi Sundar, what's up? | |
| 20:28:16 | dansmith | I guess because of the polling loop we have a decent chance | |
| 20:28:32 | mriedem | and all of our controller services on a single node slowing things down maybe, idk | |
| 20:28:38 | mriedem | don't know what prometheanfire's env setup is like | |
| 20:28:38 | dansmith | because pre-dest is pretty long before we get to the event wait, which seems ...crazy to ever win it | |
| 20:28:59 | dansmith | if so, presumably this patch broke live migration for anyone with a fast system | |
| 20:29:17 | mriedem | god i hope so | |
| 20:29:19 | mriedem | that would be magical | |
| 20:29:32 | dansmith | so, sahid has been arguing to make the timeout non-fatal, reportedly because someone was using a custom driver or something | |
| 20:29:39 | dansmith | but I wonder if it's actually because this is actually totes broken | |
| 20:29:54 | Sundar | We were discussing the relative roles of plugins and drivers. It seems to me that that the distinction is not a hard one. We just need some extension agent with clear APIs for both os-acc and Cyborg. It could be the same module providing two sets of APIs. Does that work for you? | |
| 20:30:20 | efried | Sundar: Absolutely. | |
| 20:30:33 | dansmith | mriedem: melwitt: tbh, if we really think this is that broken (and sounds like it is) then we should probably revert it from the release immediately | |
| 20:31:06 | mriedem | well the other thing i was saying above was, | |
| 20:31:16 | Sundar | Great. I was trying to delineate the two and it was getting rather ambiguous. Good to have this sorted out. Will send out the os-acc spec with this update | |
| 20:31:16 | melwitt | oof | |
| 20:31:20 | mriedem | even if we get the TimeoutError, we raise MigrationError or whatever, | |
| 20:31:32 | mriedem | but i *think* by that point we've already started the guest transfer | |
| 20:31:43 | efried | Sundar: Well, we should still delineate the two, if they're going to be *able* to be separate modules. | |
| 20:31:43 | mriedem | b/c we call _live_migration_operation | |
| 20:31:44 | mriedem | the nwait | |
| 20:31:44 | dansmith | correct | |
| 20:32:07 | mriedem | so starting the guest transfer and then timing out on the watier b/c we registered late kills the nova live migration option but not what's in the hypervisor | |
| 20:32:09 | mriedem | right? | |
| 20:32:18 | mriedem | s/option/operation/ | |
| 20:32:29 | dansmith | mriedem: um, what? | |
| 20:32:52 | mriedem | if we get the timeout and raise MigrationError | |
| 20:32:56 | mriedem | but have already started the guest transfer | |
| 20:33:07 | mriedem | the only thing that happens in nova is we call the _rollback_live_migration code, | |
| 20:33:16 | mriedem | we don't attempt to kill any live migration job that's running in libvirt | |
| 20:33:17 | Sundar | efried: There will certainly be two sets of APIs: one for instance half of the attach and one for the device half. But both can do device-specific, platform-specific and vendor-specific actions. | |
| 20:33:17 | mriedem | right? | |
| 20:33:31 | efried | Sundar: I dig it. | |
| 20:33:49 | efried | Sundar: And I like the idea of being able to supply that code in one module or two. | |
| 20:33:54 | dansmith | lemme look | |
| 20:34:00 | mriedem | in other words, | |
| 20:34:10 | mriedem | nova will say "migratoin failed" but the guest might actually get transferred | |
| 20:34:17 | mriedem | just really f'ing slowly | |
| 20:34:52 | dansmith | well, yeah, I mean, the point of this code was to not raise the speed limit until it came | |
| 20:35:24 | mriedem | so did sahid want the timeout to just log and we'd have a finally that always set the bw back up? | |
| 20:35:54 | dansmith | yes | |
| 20:36:01 | mriedem | given what seems to be a pretty easy race to fail, that seems like it would have been better | |
| 20:36:04 | dansmith | which means you let it go to the other side but without networking | |
| 20:36:20 | Sundar | efried: So, it may be superfluous to have two separate modules, which are separately loaded by Stevedore. os-acc would have to load both, and the distinction in terms of what each module does seems to come down to APIs, rather than anything else. So, we might as well define two sets of APIs, and have one module do both. Internally, of course, the module may have separate packages/sub-modules for different functionalities. | |
| 20:36:36 | dansmith | mriedem: but the goal of the patch wasn't to "maybe catch the plug event", so if it never came in, it really should stop | |
| 20:36:51 | dansmith | mriedem: so I think it should cancel | |
| 20:37:02 | dansmith | which I said on the patch a couple of times, but I guess we never even got it that far | |
| 20:37:16 | Sundar | We may also provide common functions in os-acc for specific hypervisors | |
| 20:37:29 | mriedem | dansmith: ok, well the waiter is in the wrong place then, and https://review.openstack.org/#/c/558001/ was the right thing, | |
| 20:37:31 | mriedem | but not backportable | |
| 20:37:38 | Sundar | which any driver/plugin/module can invoke | |
| 20:37:43 | efried | Sundar: Offhand I don't see a problem with that. Is it ever going to be the case that you need to run one but not both (i.e. a driver but not its corresponding plugin, or vice versa) on a given system? | |
| 20:37:53 | sean-k-mooney | efried: Sundar provided there is a well defiend versioned interface its ok but Sundar i dont thin os-acc should be able to alter the hypervior context | |
| 20:38:18 | efried | Sundar: Let's move to #openstack-cyborg so we're not cross-talking with the others. | |
| 20:38:21 | sean-k-mooney | e.g. just like os-vif os-acc should not be able to modify the libvirt xml | |
| 20:38:27 | dansmith | mriedem: yeah, I was just looking through compute manager wondering why the fsck it was in there too | |
| 20:38:46 | dansmith | mriedem: does that not work for LB for some reason? | |
| 20:39:20 | mriedem | does what not work? | |
| 20:39:22 | mriedem | https://review.openstack.org/#/c/558001/ ? | |
| 20:39:22 | openstackgerrit | Merged openstack/nova stable/queens: Reload oslo_context after calling monkey_patch() https://review.openstack.org/589249 | |
| 20:39:26 | dansmith | yeah | |
| 20:39:29 | openstackgerrit | Merged openstack/nova stable/queens: Fix message for unexpected external event https://review.openstack.org/589505 | |
| 20:39:34 | mriedem | prometheanfire is failing in pike | |
| 20:39:36 | mriedem | https://review.openstack.org/#/c/558001/ is rocky | |
| 20:39:41 | openstackgerrit | Merged openstack/nova master: Trivial fix on migration doc https://review.openstack.org/589028 | |
| 20:39:45 | mriedem | b/c we backported sahid's patch | |
| 20:39:48 | openstackgerrit | Merged openstack/nova master: Add a prelude release note for the 18.0.0 Rocky GA https://review.openstack.org/589303 | |
| 20:39:49 | Sundar | sean-k-mooney: os-acc may provide device-specific XML snippets, for example, which libvirt driver would compose into a domain XML. | |
| 20:40:02 | Sundar | efried: Sure, joined #openstack-cyborg | |
| 20:40:03 | dansmith | mriedem: no, I realize that | |
| 20:40:24 | sean-k-mooney | Sundar: i really hope not or that code should live in the nova tree | |
| 20:40:33 | efried | sean-k-mooney: Can you join us in -cyborg? | |
| 20:40:40 | sean-k-mooney | efried: sure | |
| 20:40:41 | dansmith | mriedem: what I'm saying is, because the event gets triggered from pre-migration, the wait should really be up a level in compute manager, which you added in rocky | |
| 20:41:04 | dansmith | mriedem: and I'm asking if there's some reason why the wait in compute manager can't work with LB | |
| 20:41:32 | dansmith | mriedem: so we like just rip sahid's stuff out of everywhere and make sure that you're including events in the compute manager wait | |
| 20:42:18 | sean-k-mooney | efried: #openstack-cyborg? | |
| 20:42:27 | efried | yes | |
| 20:44:28 | mriedem | dansmith: it should work for LB as far as i know | |
| 20:44:41 | dansmith | seems like it | |
| 20:44:52 | mriedem | the only backend i know that won't work, | |
| 20:44:54 | mriedem | is ODL | |
| 20:45:10 | mriedem | because that doesn't send events on vif plug/unplug, only port host binding changes | |
| 20:45:10 | dansmith | in fact | |
| 20:45:13 | sean-k-mooney | mriedem: lb polls for new interfaces and can miss the addtion and removal of interfaces in some cases | |
| 20:45:25 | dansmith | mriedem: you're not only waiting for ovs interfaces there right? | |
| 20:45:29 | sean-k-mooney | so we can rely on lb to emit the event | |
| 20:45:31 | mriedem | dansmith: correct | |
| 20:45:46 | sean-k-mooney | or rathar the lb l2 agent | |
| 20:45:49 | dansmith | mriedem: so you should be eating them up there, and then his wait is definitely never going to get them right? | |
| 20:46:10 | dansmith | so in pike, I expect it races, | |
| 20:46:16 | dansmith | and in rocky it never ever works at all | |
| 20:47:03 | mriedem | yeah maybe | |
| 20:47:10 | mriedem | i could dig up my 2 node lb ci patch, | |
| 20:47:12 | dansmith | oh sweet baby jesus thank you for this day | |
| 20:47:17 | mriedem | and enable this waiter in nova on master, | |