| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-01-24 | |||
| 16:22:47 | edleafe | It's sounding more and more like a doc bug | |
| 16:23:17 | efried | If in fact we want it to be part of the API. Which I'm not convinced of. | |
| 16:29:13 | efried | I'm gonna say we definitely have a doc shortage with respect to how to *use* the generation in any case. Other than that one spot in the API ref, there's not even anything that tells you you're supposed to send down the same generation you GET. | |
| 16:35:23 | cdent | efried, edleafe: I definitely agree (with dansmith) that _in the presence of the provider tree caching mechanism_ we should never gen += 1 on the client side. Instead we should always be prepared to invalidate the _entire_ cache when a 409 happens. This is the reason for creating the PlacementAPIConflict base class: so any gen conflict can cause a complete reset. | |
| 16:35:52 | openstackgerrit | Matt Riedemann proposed openstack/osc-placement master: CLI for resource classes (v1.2) https://review.openstack.org/511182 | |
| 16:35:53 | openstackgerrit | Matt Riedemann proposed openstack/osc-placement master: RP list: member_of and resources parameters (v1.3, v1.4) https://review.openstack.org/511183 | |
| 16:35:53 | openstackgerrit | Matt Riedemann proposed openstack/osc-placement master: RP delete inventories (v1.5) https://review.openstack.org/514642 | |
| 16:35:54 | openstackgerrit | Matt Riedemann proposed openstack/osc-placement master: CLI for traits (v1.6) https://review.openstack.org/514643 | |
| 16:35:54 | openstackgerrit | Matt Riedemann proposed openstack/osc-placement master: Resource class set (v1.7) https://review.openstack.org/514644 | |
| 16:35:55 | openstackgerrit | Matt Riedemann proposed openstack/osc-placement master: Usages per project and user (v1.8, v1.9) https://review.openstack.org/514646 | |
| 16:35:55 | openstackgerrit | Matt Riedemann proposed openstack/osc-placement master: CLI allocation candidates (v1.10) https://review.openstack.org/514647 | |
| 16:35:56 | openstackgerrit | Matt Riedemann proposed openstack/osc-placement master: [WIP] Get resource provider by uuid or name https://review.openstack.org/527791 | |
| 16:36:05 | jackie-truong | mriedem: During the 1/4 meeting, you said that you weren't sure who should be reviewing the certificate validation feature and that you expect a lot of blueprints to get deferred. jaypipes has been reviewing the patch series since that meeting, but seems to be out this week. Do you think it's reasonable to try to get this patch series through before the feature freeze? | |
| 16:36:07 | efried | cdent No arguments there. | |
| 16:36:21 | efried | In the scenario at hand, we don't get a 409, even though we should. | |
| 16:36:28 | cdent | efried, edleafe; Another option is for the provider tree to do a full reset after any finished operation | |
| 16:36:34 | edleafe | cdent: so the cache will *always* be invalid, as we will never have agreement with the rp's data and its generation | |
| 16:36:42 | mriedem | jackie-truong: i'm not going to be able to context switch to an entirely new thing the day before FF | |
| 16:36:53 | cdent | edleafe: yeah, which is why I've always wondered why we have a cache? | |
| 16:36:54 | edleafe | cdnet: jinx-ish | |
| 16:37:04 | efried | cdent At some point you started work on the "updating generation when aggregates changed" - where is that? | |
| 16:37:11 | edleafe | cdent, not cdnet | |
| 16:37:26 | efried | cdent I thought you started writing a spec, but it must not have been in nova-specs. | |
| 16:37:28 | mriedem | jackie-truong: unfortunately it's probably going to get deferred to rocky | |
| 16:37:56 | cdent | efried: the scenario at hand is using logic that pre-dates the provider tree and was an acknowledged hack that was deemed safe-ish in the world of _not_ nested | |
| 16:38:02 | mriedem | jackie-truong: i'd like it if we could do some version of the 'slots' or 'runways' concept so these blueprints that keep getting deferred from release to release actually become a review priority early in the next cycle before we take on new work | |
| 16:38:21 | cdent | efried: mriedem told me that wasn't going to get considered until rocky, so I lowered it off my priority list in favor of rechecking lots of things over and over | |
| 16:38:32 | cdent | that == aggregates with generations | |
| 16:38:35 | mriedem | especially before the people grinding that contribution don't burn out and move on | |
| 16:38:43 | jackie-truong | mriedem: Yeah, that'd be nice | |
| 16:38:57 | efried | cdent Okay, did you not already start writing words about it, though? | |
| 16:39:01 | mriedem | jackie-truong: i'll add something to the dublin ptg agenda for discussion | |
| 16:39:05 | jackie-truong | mriedem: If I can find jaypipes, I'll see if he has any time to look at the patches. Otherwise, I'll plan to wait for rocky | |
| 16:39:37 | efried | cdent I think we need a launchpad-something (bug? blueprint?) for that. | |
| 16:40:01 | efried | cdent And I want to point to it from the bug I'm opening now, titled "Placement client cache consistency is broken" | |
| 16:40:12 | cdent | efried: https://blueprints.launchpad.net/nova/+spec/placement-aggregate-generation | |
| 16:40:14 | edleafe | cdent: did you see my comments starting here? http://p.anticdent.org/4liQ | |
| 16:40:40 | edleafe | That's my understanding how caching was supposed to work with generations | |
| 16:40:42 | cdent | efried: I hope you'll revise that to say ProviderTree cache consistency, not Placement. Placement is fine. | |
| 16:41:03 | cdent | edleafe: looking. I tried to read the whole backlog but am way sick, so faking having a brain | |
| 16:41:08 | efried | cdent "Placement client" not "Placement". | |
| 16:41:22 | cdent | it's not even a placement client, it's the provider tree | |
| 16:41:25 | cdent | which uses a placement client | |
| 16:41:26 | edleafe | cdent: so IOW, normal for you :-P | |
| 16:41:33 | cdent | edleafe: yes | |
| 16:41:59 | cdent | if the day of the week ending in 'y': chris sick | |
| 16:42:09 | efried | p'tayta p'tata, but okay. | |
| 16:42:38 | mriedem | jackie-truong: L102 https://etherpad.openstack.org/p/nova-ptg-rocky | |
| 16:42:43 | efried | Any placement client wishing to use a cache is broken | |
| 16:43:02 | cdent | I disagree | |
| 16:43:11 | cdent | Any placement client wishing to use a unified cache is broken | |
| 16:43:39 | cdent | I dispute the need for a cache | |
| 16:43:44 | mriedem | gibi: have time to go over this again before your eod? https://review.openstack.org/#/c/536083/ | |
| 16:44:03 | jackie-truong | mriedem: Awesome. Thanks for adding that | |
| 16:44:04 | cdent | efried: but it is the road we went down | |
| 16:44:09 | cdent | and I think we can make it work | |
| 16:44:31 | cdent | the things edleafe says at [l 4liQ] seem sane | |
| 16:44:31 | purplerbot | http://p.anticdent.org/4liQ | |
| 16:45:00 | efried | cdent That part has never been under dispute. | |
| 16:45:34 | edleafe | cdent: we seem to have an underwhelming amount of docs about using the generation | |
| 16:45:53 | cdent | I don't doubt that | |
| 16:45:57 | cdent | efried: which part is "that part"? | |
| 16:46:28 | efried | Where we should get a 409 if we PUT something with a generation that's not the latest. | |
| 16:47:01 | cdent | the problems that seem possible from edleafe's flow is that appears to assume a granularity of interaction that it's not clear if the provider tree enables? | |
| 16:47:53 | edleafe | cdent: re: generation doc amount: https://www.youtube.com/watch?v=Ydpablsm7f0 | |
| 16:48:38 | efried | cdent I didn't follow that. | |
| 16:50:27 | cdent | What is it that we want/need the generation docs to say? | |
| 16:51:24 | efried | cdent Certainly they need to say, "You need to include whatever generation came in your GET when you do your PUT. If something else updated the provider in between your GET and your PUT, you'll get a 409." | |
| 16:51:39 | efried | cdent One part of the doc says sort of the second half of that, for one API. | |
| 16:51:40 | edleafe | Basically that it is a monotonically-increasing integer, and is increased with each modification of an RP | |
| 16:51:55 | cdent | do we _want_ people to know it is monotonic? | |
| 16:51:57 | openstackgerrit | Matt Riedemann proposed openstack/osc-placement master: Address review comments from allocations patch https://review.openstack.org/536871 | |
| 16:51:57 | openstackgerrit | Matt Riedemann proposed openstack/osc-placement master: Usage docs and initial release note for osc-placement https://review.openstack.org/536858 | |
| 16:52:06 | cdent | that point seems to not have agreeement | |
| 16:52:08 | mriedem | stephenfin: ok updated the docs one more time to fix a link and to include the resource class stuff which is approved ^ | |
| 16:52:27 | efried | cdent Beyond that, they *either* need to say, "We start at zero and increment by 1 whenever something changes about the provider," *or*, "You can't count on how we deal with the generation; it's an opaque value that you need to turn around and send back to us." | |
| 16:52:44 | efried | cdent Yes, I agree that point does not have agreement. | |
| 16:53:00 | efried | If we document the former, then the code as it sits is (almost) okay. | |
| 16:53:03 | cdent | efried why would we want to say the first point above? I think of it as the second. | |
| 16:53:10 | efried | cdent I'm with you. | |
| 16:53:18 | efried | edleafe is on the other side. | |
| 16:53:27 | efried | We don't know what jaypipes thinks | |
| 16:53:36 | cdent | I think edleafe is being pragmatic, more than anything? edleafe ? | |
| 16:53:40 | efried | And I *think* dansmith is also on the "opaque" side. | |
| 16:53:43 | edleafe | if our code makes that assumption, we should document that | |
| 16:54:16 | efried | whoah, we should document something about the API because of something our client code assumes? That's cray-cray. | |
| 16:54:20 | dansmith | efried: yes | |
| 16:55:09 | dansmith | efried: in fact, we could use some random sequence of numbers if we had one and that should be fine. or a uuid. "here is my proof that I'm making a change to the most recent copy" is all we should assume from the client side about the meaning of the generation field, IMHO | |
| 16:55:11 | efried | I'd be willing to bet the client assumptions were made out of expediency to get function merged. At the time it didn't matter because a) single point of control, b) no nested, c) no traits/aggs to complicate. | |
| 16:55:18 | edleafe | efried: the code uses it because it was understood to be the case. If it is going to be the case, it should be documented. If it isn't, the code that assumes that should change | |
| 16:55:20 | efried | dansmith ++ | |
| 16:55:30 | efried | edleafe ++ | |
| 16:55:53 | cdent | efried: yes, expediency is what I said above | |
| 16:56:14 | cdent | generation are ints because jay likes ints in databases | |
| 16:56:18 | edleafe | We went with a monotonic integer scheme, even though there were better options available. I don't recall why it won out | |
| 16:56:25 | cdent | but that they are ints is incidental | |
| 16:56:43 | efried | So we need to make a call. Course, Jay should be included in the "vote" (if it's a democracy in the first place). | |
| 16:57:26 | efried | "opaque" will require some nontrivial redesign and rework | |
| 16:57:26 | cdent | Is the call as narrow as "should we += 1 in the client" or something more broad than that? | |
| 16:58:44 | efried | cdent The call is, do we document +1 behavior or do we document opacity. What flows from the former is fairly narrow. What flows from the latter is broad. | |