Earlier  
Posted Nick Remark
#openstack-nova - 2018-01-24
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 purplerbot http://p.anticdent.org/4liQ
16:44:31 cdent the things edleafe says at [l 4liQ] seem sane
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: Usage docs and initial release note for osc-placement https://review.openstack.org/536858
16:51:57 openstackgerrit Matt Riedemann proposed openstack/osc-placement master: Address review comments from allocations patch https://review.openstack.org/536871
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 cdent Is the call as narrow as "should we += 1 in the client" or something more broad than that?
16:57:26 efried "opaque" will require some nontrivial redesign and rework
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.
16:59:38 efried And not to distract, but we still definitely have a problem with DELETE not sending a generation down, no matter which way we decide to go.
17:00:13 dansmith efried: I'm not sure we fully have a problem with delete
17:00:31 dansmith efried: I should be able to delete allocations without a generation without being in violation of anything
17:00:39 dansmith because I know the thing I'm deleting for is never coming back
17:00:58 dansmith what else do we delete for? inventory maybe, but I bet the same argument works for that
17:01:51 cdent efried: I think we can continue to fake on +1 in the ProviderTree if that's what we need to do, and _not_ document it. Other (to be developed) clients won't need to care and should respond to documentation that says what it already says "A consistent view marker"
17:01:52 efried dansmith Inventory, yeah, and agree it's the same argument.
17:02:16 dansmith efried: same argument, but you think we _do_ need a generation on delete right?
17:02:40 efried dansmith Considering the multiple-points-of-control thing, if I think I'm ready to delete the RP's inventory, but you think you're happily editing it...
17:03:01 dansmith efried: but inventory is and should only be managed by the thing owning the inventory
17:03:11 efried dansmith If that's the case, we don't need generations at all.

Earlier   Later