| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2017-08-30 | |||
| 16:21:24 | smcginnis | Oh, queens already. | |
| 16:21:29 | kashyap | melwitt: That link is a bit briken :-) | |
| 16:21:37 | stephenfin | mriedem: aha, well the docs don't fit into the style defined by that doc-migration thingy, if that matters. I doubt it does though | |
| 16:21:41 | smcginnis | mriedem: We were holding off until Pike wrapped up. Should be able to get that going now. | |
| 16:21:42 | mriedem | stephenfin: otherwise yes, osc-placement is nova-core for now https://review.openstack.org/#/admin/projects/openstack/osc-placement,access | |
| 16:21:42 | kashyap | melwitt: Meanwhile I'm double-checking with the author of the blockRebase() API, Eric Blake. | |
| 16:21:58 | stephenfin | cool. I'll take a look at that patch so | |
| 16:22:07 | mriedem | stephenfin: i want to move the osc-placement patches forward now because i want to use it in our ci post test hook | |
| 16:22:17 | melwitt | kashyap: gah, sorry. https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L7134-L7136 | |
| 16:22:34 | melwitt | kashyap: sweet, thanks | |
| 16:22:41 | stephenfin | mriedem: yup, done | |
| 16:22:52 | mriedem | http://lists.openstack.org/pipermail/openstack-dev/2017-August/121618.html | |
| 16:23:11 | kashyap | melwitt: Yes, that approach looks correct to me | |
| 16:24:29 | melwitt | kashyap: my other concern is, if something goes wrong during the blockRebase or resize and an exception is raised, could reading the live config at the end possibly be corrupted and bad to define the domain with? | |
| 16:25:49 | melwitt | so I was wondering if we should save the original persistent config at the beginning like it was originally and write that back in case of exceptions, else write using the live config. or if it's safe to just write using the live config in the finally: block | |
| 16:27:14 | kashyap | melwitt: What is the error scenario you're looking w.r.t blockRebase()? | |
| 16:27:55 | kashyap | (Just to quickly recap: blockRebase() moves data from backing files into overlays.) | |
| 16:28:44 | kashyap | melwitt: Hmm, I was first about to suggest to save the domain config before undefining | |
| 16:28:51 | melwitt | kashyap: no specific scenario. just say if rebase raised an exception and we go to the finally: block and read the live config and define the domain with it, could we have potentially written a bad config | |
| 16:29:13 | kashyap | melwitt: Because, that's what we suggest manual users of the API on libvirt-users list. So that they have a copy of the guest definition at the _time_ of blockRebase() | |
| 16:29:49 | melwitt | yeah. that's what I was thinking, maybe save it first and then if an exception occurs write the original, else write the new one read from live | |
| 16:30:45 | kashyap | melwitt: Yes, that is more robust. Otherwise, re-defining from live config means, all the guest configuration until that point that the user was expecting to stay will be lost | |
| 16:30:49 | kashyap | Do you agree? | |
| 16:31:04 | kashyap | s/that the/the/ | |
| 16:33:21 | melwitt | kashyap: I'm not sure TBH (whether anything would be lost). in the success scenario we need a way to reflect the changed volume in the persistent config. I don't know how to do that other than re-defining from live config | |
| 16:33:36 | mdbooth | melwitt: So I may have missed the boat here | |
| 16:33:37 | kashyap | melwitt: Okay, let's wait for Eric's response, I checked w/ him on OFTC before | |
| 16:33:43 | kashyap | Or mdbooth is here! | |
| 16:33:52 | mdbooth | melwitt: I'm looking at https://review.openstack.org/#/c/491630/3/nova/virt/libvirt/guest.py | |
| 16:34:15 | mdbooth | This function is really, really weird | |
| 16:34:55 | mdbooth | But iiuc it's purpose is to keep executing detach_device() until get_device_conf_func() doesn't return anything | |
| 16:35:21 | mdbooth | Except that we've over-complicated it by pulling out the initial execution of get_device_conf_func() | |
| 16:35:44 | mdbooth | We could throw away the top half of the function, including the code added in your patch, and I think it would achieve the desired result | |
| 16:35:57 | mdbooth | The bug only occurs because the first iteration is weird | |
| 16:37:08 | mdbooth | Also, there's no reason for that function to return a function, as both its callers simply execute it immediately | |
| 16:37:37 | mdbooth | Also, RetryDecorator over-complicates and already over-complex function | |
| 16:38:07 | melwitt | yeah. I'm guessing the reason it's like that is because if the detach from persistent fails, you don't want to retry that | |
| 16:38:27 | melwitt | live is the one it wants to retry for some time | |
| 16:41:13 | mdbooth | I double-checked, btw, that we're definitely retrieving the live xml desc (we are) | |
| 16:42:36 | mdbooth | melwitt: If that function is called and persistent=True, live=False | |
| 16:42:48 | mdbooth | And the device currently exists | |
| 16:43:26 | mdbooth | I think it will wait for timeout and return DeviceDetachFailed | |
| 16:44:22 | melwitt | I think there's no timeout in that case because it will raise on the first call (raise before the returned function is called) | |
| 16:44:40 | mdbooth | It won't raise on the first call if the device is present in persistent config | |
| 16:46:19 | mdbooth | Another weird thing there is that 'live' is pinned before it starts executing | |
| 16:46:38 | mdbooth | Whereas it may actually change during the call | |
| 16:46:51 | melwitt | it will raise on the first call if it fails to detach it | |
| 16:47:27 | mdbooth | So if we've got a persistent domain which is stopped, we'll have persistent=True, live=False | |
| 16:47:34 | openstackgerrit | Merged openstack/nova master: Reduce (notification) test duplication https://review.openstack.org/391428 | |
| 16:48:05 | mdbooth | The first execution will succeed | |
| 16:48:17 | mdbooth | Actually... the second execution will fail because there's no domain | |
| 16:48:23 | mdbooth | We don't handle that | |
| 16:48:30 | mdbooth | So it'll likely explode | |
| 16:48:31 | melwitt | and then it'll try to detach the live even though live is False? oh | |
| 16:49:12 | mdbooth | Ah, no, we'll get instance disappeared | |
| 16:51:33 | mriedem | i haven't read scrollback, but did https://review.openstack.org/#/q/I8cd056fa17184a98c31547add0e9fb2d363d0908,n,z regress something? | |
| 16:51:52 | mdbooth | mriedem: I don't think so, no | |
| 16:52:01 | kashyap | melwitt: About your other reivew - 498983, you're right: to get the swapped volume reflected, of course you need to use the live config. | |
| 16:52:09 | kashyap | melwitt: And your test (noted in the review) proves it, too. | |
| 16:52:31 | mdbooth | mriedem: I'm just trying to convince myself it solves the problem | |
| 16:53:22 | mriedem | cells v2 meeting in 7 minutes | |
| 16:53:31 | melwitt | kashyap: thanks for the sanity check. I'm thinking I'll add to the patch save of the original XML to write back in the exception case, if rebase/resize fails | |
| 16:53:32 | mriedem | in #openstack-meeting-3 | |
| 16:53:53 | mdbooth | melwitt: Do you happen to know what XMLDesc(0) returns for an inactive domain? | |
| 16:54:13 | kashyap | melwitt: Yep, saving the original XML to handle the failure path sounds correct. | |
| 16:54:45 | melwitt | mdbooth: you mean a stopped instance? no actually. I would also wonder what the rebase does in that case too | |
| 16:55:13 | mdbooth | I'm thinking in the context of detach_volume currently | |
| 16:56:00 | mdbooth | My feeling is that the use of the live flag is itself wrong | |
| 16:56:21 | melwitt | mdbooth: it solved the problem in a repro environment that I tested | |
| 16:57:05 | mdbooth | melwitt: Right, I just suspect it could be both simpler and more robust | |
| 16:57:18 | mdbooth | It looks like a haven for edge cases, and we closed one | |
| 16:58:37 | mdbooth | For eg, 'live' could change during the call | |
| 16:58:42 | mdbooth | Because the domain is stopped, for eg | |
| 16:58:45 | melwitt | mdbooth: sorry, that was in response to "trying to convince myself it solves the problem." I agree with you that there's probably a better way to refactor that function | |
| 16:59:07 | melwitt | it's bug prone for sure | |
| 16:59:48 | openstackgerrit | Eric Berglund proposed openstack/nova master: PowerVM Driver: config drive https://review.openstack.org/409404 | |
| 17:00:11 | mdbooth | melwitt: Yeah, I'm mid-stream here :) Not entirely sure where I'm going with this. | |
| 17:00:45 | dansmith | mriedem: cells meeting? | |
| 17:00:46 | melwitt | I think you're just surveying the horror | |
| 17:00:47 | mdbooth | It's just such an over-complex function, I spent way too much time thinking about it already | |
| 17:06:06 | kashyap | melwitt: I know you're multi-tasking between two reviews. For later, some related notes I did a brain-dump on debugging blockRebase() -> _swap_volume() -- http://lists.openstack.org/pipermail/openstack-dev/2016-October/105158.html | |
| 17:06:40 | kashyap | melwitt: Even after staring at these libvirt / QEMU block APIs, damned if I fully wrapped my head around. Just when I think I got a little hang of something, there it comes ... another corner case that I didn't think of | |
| 17:09:39 | andreaf | jamespage: I have a change in Tempest that if merged would break some nova-lxd integration tests from the in-tree tempest plugin | |
| 17:10:28 | andreaf | jamespage: but I don't see those tests running anywhere in nova-lxd gate, so I was wondering if I can just change tempest and propose a patch to fix nova-lxd afterward? | |
| 17:23:29 | jamespage | andreaf: +1 that's good with me | |
| 17:23:55 | jamespage | andreaf: sorry for no response yesterday - just back from hols so catchup was a bit extreme | |
| 17:24:09 | andreaf | jamespage: cool - so is that right that tests are not running in any CI right now? | |
| 17:24:32 | andreaf | jamespage: np thanks for your reply | |
| 17:24:39 | jamespage | andreaf: we have a tempest devstack gate, but I don't think the in-tree tests actually get executed | |
| 17:25:27 | andreaf | jamespage: yeah that was what I found as well | |
| 17:28:47 | openstackgerrit | Elod Illes proposed openstack/nova master: WIP: delete after failed evac https://review.openstack.org/499237 | |
| 17:29:50 | melwitt | kashyap: cool, thanks for the link | |
| 17:31:24 | openstackgerrit | Ed Leafe proposed openstack/nova master: WIP - Add ${Destination} and ${Destination}List objects https://review.openstack.org/499239 | |
| 17:31:24 | openstackgerrit | Ed Leafe proposed openstack/nova master: Add alternate hosts https://review.openstack.org/486215 | |
| 17:37:58 | mriedem | alaski: did you or someone else at some point have a doc with the known gaps in what we track for reporting instance action events? | |
| 17:38:02 | mriedem | i could have sworn you did | |
| 17:39:29 | alaski | I may have. You might be thinking of a spec opened by rosimata a while back looking to improve instance actions which listed some of the things it missed. | |
| 17:40:57 | mriedem | i also found https://blueprints.launchpad.net/nova/+spec/improve-instance-action-events-2 and something it depends on | |
| 17:41:17 | alaski | https://review.openstack.org/#/c/256743/ maybe | |
| 17:41:44 | alaski | https://review.openstack.org/#/q/project:openstack/nova-specs+owner:%22Brian+Rosmaita+%253Crosmaita.fossdev%2540gmail.com%253E%22 | |