| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2017-05-25 | |||
| 15:54:18 | cdent | edleafe: I don't really have a strong opinion. my natural inclination is parameters, but that's not been seasoned by years of nova-based RPC | |
| 15:55:07 | edleafe | jaypipes: cdent: my preference was reqspec (which is why I did it that way first), since it already had the pretty much useless 'instance_uuid' attribute | |
| 15:55:08 | openstackgerrit | Sean Dague proposed openstack/nova-specs master: oslo.middleware request_id spec https://review.openstack.org/468066 | |
| 15:55:13 | jaypipes | dansmith: can you, in one sentence, explain your preference to change the RPC interface vs. add a field to the reqspec object? | |
| 15:55:21 | sdague | mriedem: done | |
| 15:55:35 | jaypipes | dansmith: I want to make sure I understand you completely. | |
| 15:56:00 | dansmith | jaypipes: we don't need to store the uuids in the database, right? | |
| 15:56:22 | dansmith | we've had this conversation a couple times | |
| 15:56:44 | edleafe | dansmith: but there is already the 'instance_uuid', which we don't store either | |
| 15:57:46 | dansmith | edleafe: um, what? | |
| 15:57:53 | dansmith | already instance_uuid in the reqspec? | |
| 15:58:00 | edleafe | yup | |
| 15:58:33 | edleafe | dansmith: https://review.openstack.org/#/c/463623/5/nova/objects/request_spec.py@77 | |
| 15:58:38 | dansmith | what do you mean we don't store it | |
| 15:58:39 | dansmith | ? | |
| 15:58:49 | dansmith | ...right, I know it's in there | |
| 15:58:54 | edleafe | well, we don't *need* to store it | |
| 15:59:12 | edleafe | it's useless if num_instances > 1 | |
| 15:59:15 | dansmith | okay not sure what that has to do with not adding another thing we don't need to store, which could be a hundred uuids :) | |
| 15:59:31 | mriedem | fuel on the fire makes it better right? | |
| 15:59:50 | mriedem | at what point do we add kitchen_sink to request spec? | |
| 16:00:21 | edleafe | I understand the reqspec to be the vehicle for passing the requested info to the scheduler | |
| 16:00:28 | edleafe | the scheduler needs this info | |
| 16:01:28 | jaypipes | dansmith: so the reason I was advocating passing in all the instance uuids in the reqspec was because I wanted to get rid of the retry stuff and do all of that in the scheduler (and thus we'd need all those UUIDs). But now that that is off the table, I'm not sure it makes sense any more. | |
| 16:01:50 | dansmith | aye | |
| 16:01:52 | edleafe | jaypipes: it definitely does | |
| 16:02:22 | edleafe | if num_instances > 1, how will the scheduler claim the resources if it doesn't know the consumer_id? | |
| 16:02:38 | dansmith | the uuid list is only something that makes sense for a single call to the scheduler, AFAIK, so it shouldn't be stuffed into the database, just something we pass like anything else, IMHO | |
| 16:03:19 | jaypipes | edleafe: a fair point. | |
| 16:03:52 | jaypipes | edleafe: if we moved the handling of num_instances > 1 to the conductor, though... | |
| 16:04:23 | jaypipes | edleafe: we'd need more robust concurrent update handling in the conductor, then. | |
| 16:04:24 | edleafe | jaypipes: sp the conductor would make num_instances calls to the scheduler, instead of 1? | |
| 16:04:32 | jaypipes | edleafe: I'm spitballing. | |
| 16:04:49 | edleafe | We'd also have to run the host queries num_instances times instead of once | |
| 16:05:05 | jaypipes | edleafe: right. | |
| 16:05:06 | openstackgerrit | Matt Riedemann proposed openstack/nova master: Exclude deleted service records when calling hypervisor statistics https://review.openstack.org/467220 | |
| 16:05:16 | edleafe | you're spitballing; I'm poking holes | |
| 16:05:19 | edleafe | :) | |
| 16:05:24 | mriedem | Kevin_Zheng: ^ i updated the commit message and re-wrote the test a bit | |
| 16:05:25 | jaypipes | edleafe: I'm thinking out loud. | |
| 16:05:29 | mriedem | with a bunch of comments to explain it | |
| 16:05:45 | edleafe | me too | |
| 16:05:58 | edleafe | I've thought about these a lot already, though :) | |
| 16:06:07 | sdague | mriedem: I'm confused about your comment on https://review.openstack.org/#/c/467995/ about implications for versioned objects | |
| 16:06:28 | sdague | maybe that's where we need dansmith poking | |
| 16:07:39 | openstackgerrit | Ed Leafe proposed openstack/nova master: Pass the number of hosts to return explicitly https://review.openstack.org/465767 | |
| 16:07:40 | openstackgerrit | Ed Leafe proposed openstack/nova master: Return multiple hosts from select_destinations https://review.openstack.org/465768 | |
| 16:07:40 | openstackgerrit | Ed Leafe proposed openstack/nova master: Remove selecting host based on host_subset_size https://review.openstack.org/465174 | |
| 16:08:01 | edleafe | jaypipes: ^^ The series is ready for review. I can switch the passing of UUIDs if needed | |
| 16:08:08 | jaypipes | edleafe, dansmith: for retries, do we ever retry the entire list of instances (in a num_instances > 1 case) or do we just retry the launch of one of them? | |
| 16:08:36 | edleafe | jaypipes: if we retry the whole list, that would be very dumb | |
| 16:08:52 | edleafe | since some could have already been successful | |
| 16:09:00 | jaypipes | edleafe: well, it all depends on how "atomic" we view the num_instances > 1 case, right? | |
| 16:10:05 | dansmith | jaypipes: we've lost scope of the others by the time we're retrying any of them | |
| 16:10:11 | dansmith | jaypipes: and they might've scattered across cells | |
| 16:10:23 | dansmith | jaypipes: as you've pointed out, the api implies atomicity, and we guarantee almost none | |
| 16:10:25 | mriedem | sdague: yes, that's my call for dan | |
| 16:11:01 | edleafe | the min_count and max_count were supposed to provide a go/no-go atomicity | |
| 16:12:54 | sdague | mriedem: ok, cool. Jenkins is currently a happy camper, so there is at least that | |
| 16:13:38 | jaypipes | dansmith, edleafe: ok, random idea here... what if we triggered claims in the scheduler only if num_instances == 1? at least for right now... and let the num_instances > 1 case be handled in the same wonky claim-on-compute way it is now? | |
| 16:13:56 | dansmith | oh please god no | |
| 16:14:03 | cdent | what would that gain? | |
| 16:14:12 | dansmith | jaypipes: nobody wants to claim on compute right? | |
| 16:14:31 | jaypipes | it would mean we would solve the 80% case now. and come up with a solution for the 20% case later. | |
| 16:14:34 | edleafe | jaypipes: yeah, that sounds terrible | |
| 16:15:04 | edleafe | the only thing missing to solve 100% of the claims is the instance UUIDs. | |
| 16:15:20 | edleafe | As long as we pass those in some form to the scheduler, we are good | |
| 16:15:38 | edleafe | the only question is what is the best way to pass them | |
| 16:15:47 | jaypipes | edleafe: right, but what I'm saying is we solve that later and for the first patch(es), we bite off what we can chew for right now. | |
| 16:16:00 | jaypipes | instead of trying to solve everything at once. | |
| 16:16:17 | edleafe | IMO the patches are bite-sized | |
| 16:16:42 | jaypipes | edleafe: the patches might be. the debate isn't. :) | |
| 16:16:50 | mriedem | pass them over rpc | |
| 16:16:54 | mriedem | don't store them in the db | |
| 16:16:58 | mriedem | i thought that was clear? | |
| 16:17:07 | dansmith | mriedem: me too | |
| 16:17:10 | jaypipes | mriedem: nobody has suggested storing them in the DB. | |
| 16:17:13 | edleafe | mriedem: well, if that's the decision, then everything is ready for review | |
| 16:17:18 | dansmith | jaypipes: perhaps we can nail this down quicker in a hangout? | |
| 16:17:22 | dansmith | jaypipes: edleafe did :) | |
| 16:17:28 | jaypipes | he did? | |
| 16:17:31 | mriedem | if you put them in the reqspec they go in the db unless you monkey the object to not persist | |
| 16:17:35 | mriedem | but that seems wrong | |
| 16:17:39 | edleafe | I suggested putting them in the reqspec | |
| 16:17:51 | jaypipes | ok. | |
| 16:17:54 | edleafe | so I guess DB storage is inevitable :) | |
| 16:17:59 | mriedem | i mean sure you can throw any attribute on an object and it won't persist | |
| 16:18:07 | mriedem | if it's not in the model | |
| 16:18:09 | jaypipes | right | |
| 16:18:12 | edleafe | jaypipes: to be fair, you suggested the same thing :) | |
| 16:18:18 | jaypipes | that's what I thought we were going to do.. | |
| 16:18:24 | edleafe | me too | |
| 16:18:40 | jaypipes | edleafe: not store in the DB. I suggested just tacking instance_uuids as a field on the object, since that would avoid an RPC API change. | |
| 16:18:43 | mriedem | it seems very not intuitive | |
| 16:18:51 | dansmith | jaypipes: it doesn't avoid an rpc change | |
| 16:18:55 | mriedem | 2 years from now someone is going to ask, wtf, why are these on this object but not in the db? | |
| 16:18:59 | dansmith | yeah | |
| 16:19:03 | dansmith | it's silly to do that | |
| 16:19:16 | cdent | there's nothing wrong with an rpc api change, and it is semantically clean. let's just do that. | |
| 16:19:17 | jaypipes | fine. call me silly. I don't care. | |