Earlier  
Posted Nick Remark
#openstack-nova - 2017-01-27
15:15:10 mriedem cdent: that's the same
15:15:14 mriedem but not what i'm talking about
15:15:17 mriedem bbiab
15:16:10 melwitt yeah, I don't think tests would fail from it. I have mentioned it to jaypipes in the past and he knew about it
15:17:24 cdent melwitt: hmm. well, thanks for providing some background. I wonder if it is worth revisiting since now it is spinning off redudant http requests?
15:17:32 melwitt bauzas: do you know anything about why tracked_instances is cleared each update_available_resource period?
15:19:45 johnthetubaguy cdent: so the bit I am stuck with, is where we make the new style ironic resource_class allocations
15:20:22 melwitt cdent: I think in general it's worth considering since it seemed excessive even in its original pre placement api form. just don't know what's involved in doing that or what gotchas there are
15:21:37 jroll mriedem: I'm working on devstack support right now, do you want a throwaway hack in the meantime?
15:21:51 superdan melwitt: cdent it's just to try to always stab the latest info into the database in case it's stale, right?
15:22:15 melwitt that's what I'm guessing
15:22:50 cdent if the node is authoritative for itself, and it keeps a cache of what it successfully wrote last time, how does staleness happen?
15:23:03 cdent (where last time could be 60s or 60 days ago)
15:23:24 cdent (mostly thinking about inventory here, not allocations)
15:23:48 cdent johnthetubaguy: i'm rereading the code, to bring it back into my brain
15:26:09 cfriesen cdent: refreshing tracked_instances would allow it to recover from errors where it missed an event that would cause the instance to be added/removed from the list. But it should be possible to handle that in a different way.
15:26:25 johnthetubaguy cdent: you probably want to ignore any changes to the "service" field in the compute_node as well, as service will keep getting updated every DB service update interval, unsure if thats related (re https://review.openstack.org/#/c/424305)
15:27:47 johnthetubaguy cdent: ignore that
15:29:23 cdent cfriesen: is missing events of that nature a thing happens a) often, b) sometimes, c) rarely?
15:29:23 melwitt cdent: looking back at the code to refresh my memory ... I think without the periodic clear, the only thing that removes instances from tracked_instances is the vm_state DELETED or SHELVED_OFFLOADED and if for some reason (errors) an instance doesn't get its state saved that way, it would never be removed
15:32:29 cfriesen cdent: I would expect rarely
15:33:54 cfriesen melwitt: abort_instance_claim() also removes it, by calling _update_usage_from_instance(is_removed=True)
15:34:10 melwitt yeah, sorry. I forgot to mention that too
15:34:12 cfriesen melwitt: cdent: but I think melwitt is correct that there would be cases we'd need to add explicit removal
15:34:57 cdent at least over the long run, making things more explicit would probably be better
15:35:29 cfriesen cdent: agreed, and it would make the resource tracking react faster to freeing up of resources.
15:40:54 johnthetubaguy cdent: at somepoint doesn't nova-conductor create the instance resource allocations, and retries if the generation id of the resource provider doesn't match, (as generation id increments on a related allocation, or something like that)? So the resource tracker is more just checking for rogue instances with missing allocations?
15:41:34 cfriesen so hardware.numa_usage_from_instances() expects a list, but we only ever call it with a single instance. Do we plan on ever using it with a list or should we maybe clean it up to expect a single instance?
15:42:29 cdent johnthetubaguy: when you say "allocations" do you mean allocations in the placement api, or something more general? because if the former, the conductor doesn't talk to the placement api at all.
15:43:18 johnthetubaguy cdent: I mean placement API, and when I say conductor, that happens in nova-scheduler today
15:45:06 cdent johnthetubaguy: as far as I know, right now, the only thing that writes allocations is the resource tracker
15:45:19 cdent and the only thing that writes inventories is the resource tracker
15:45:28 cdent when nova-scheduler talks to placement API it is read only
15:47:42 johnthetubaguy cdent: I am thinking about the (not too distant) future, as the sooner we add the allocations, the sooner other queries "notice" them
15:48:10 johnthetubaguy but thats probably just a distraction right now
15:48:12 cdent oh you mean "at some point won't it be the cast that...".
15:48:33 cdent Yes, at some point the scheduler will request and claim resources (thus make allocations) in one go
15:48:51 cdent probably with a POST to /allocations of something resembling a request spec
15:49:09 cdent instead of the curerrent GET /resoruce_provdiers (which then passing into existing filter scheduler)
15:49:30 cdent when that time comes, the resource tracker will change quite a bit, presumably
15:49:39 cdent but I suspect that that time is probably further off than we think
15:49:44 cdent s/think/hope/
16:03:30 johnthetubaguy cdent: fair point, just wondering if we can make baby steps in that direction, while we still have the middle ground
16:06:11 cdent johnthetubaguy: I'm not super familiar with the existing claim handling, so I'm too clear on what the options are for steps
16:08:59 openstackgerrit Chris Dent proposed openstack/nova: Add more debug logging on RP inventory update failures https://review.openstack.org/414230
16:09:00 openstackgerrit Chris Dent proposed openstack/nova: Add more debug logging on RP inventory delete failures https://review.openstack.org/426290
16:16:50 superdan sdague: are you back today?
16:16:57 sdague superdan: yeh
16:17:35 superdan sdague: you wanna look at the mess I've made here? https://review.openstack.org/#/c/424730/
16:17:53 superdan I think the wait for services is probably a good thing we want to avoid a race with the subnode checking back in,
16:18:03 superdan although I don't think it's related to the problem we were trying to solve
16:18:08 superdan and I figure that should be pulled out
16:18:12 superdan to a separate patch
16:18:30 superdan but, the configuring/starting of the placement stuff would be good to validate if you could
16:21:00 sdague yeh, it seems like that should be separate, and I do agree, based on how long all these phases take, I seriously doubt we'll have a practical issue there
16:21:05 cdent anyone: probably too late but: CORS for placement had a +2 on it a while back and there was some support for getting it in as part of ocata (probably not a huge deal if it doesn't happen): https://review.openstack.org/#/c/392891/
16:21:40 sdague superdan: I saw this patch briefly the other day, how about we bite the bullet now and make a 55_placement top level construct and do the placement service enablement and start there
16:21:43 superdan sdague: it would specifically catch the situation where we introduce a thing that broke the subnode entirely and call it out, instead of just trying to decipher it from the failed tempest run, at least
16:22:18 sdague superdan: sure, but has that shown up yet?
16:22:47 superdan sdague: meaning have we ever broken the subnode?
16:23:40 superdan sdague: at one point the service version code had a bug where the subnode couldn't check back in because its service record had timed out and it was told it couldn't check back in and regress the minimum version, yeah
16:23:40 sdague superdan: in this flow right now
16:23:55 superdan sdague: and it took a while to realize that the subnode was running, but never being sent instances
16:24:14 sdague I get the idea that it can happen, but lets not mix up problems being solved here
16:24:18 superdan sdague: unrelated to this flow, although this flow can definitely race with the subnode checking back in after the upgrade, I just haven't seen it happen yet
16:24:41 sdague we can always put a check like this back in later if it's happening at any frequency, and even backport it
16:24:57 superdan cdent: mriedem: scheduling patch just passed multinode grenade
16:25:00 superdan johnthetubaguy: ^
16:25:26 cdent amazeballs
16:25:35 superdan sdague: it just doesn't seem responsible to not check for and catch a thing we know can happen when it's trivial to do, but.. the fight is all gone from me this week
16:26:26 sdague superdan: I just want to fix one thing at a time here and get people unblocked. We can fix these other things later.
16:26:47 superdan sdague: I'm not saying that has to be in front of this necessarily
16:26:48 mriedem superdan: how is that possible
16:26:53 superdan mriedem: cosmic rays
16:27:07 sdague because it's not like you'll get the wrong test results if it happens, it's just that figuring out what went wrong takes a little longer
16:27:14 superdan mriedem: cdent johnthetubaguy I will get a bite to eat and then do the grenade refactor sdague is asking for
16:27:23 superdan there's also pep8 and unit fails in the nova side patch
16:27:46 johnthetubaguy superdan: cool, I can roll back the patch so the hacks are removed, and the tests are passing?
16:27:54 mriedem jroll: throwaway hack yes please
16:27:54 superdan sdague: it does mean we run another 50m of tests that we know will fail instead of just bailing early, but yeah
16:28:16 superdan johnthetubaguy: remove the logging and such, but keep the *correct* min ver check yeah :)
16:28:26 johnthetubaguy cdent: sorry, I meant to ask you, did you have any more thoughts on this one: https://review.openstack.org/#/c/404472
16:28:36 johnthetubaguy superdan: thats my *aim* anyways
16:28:46 sdague superdan: sure, but that makes it an optimization we can fix later, even deep in the freeze, once we see how often it happens
16:28:49 superdan johnthetubaguy: I wish you luck sir
16:29:12 cdent superdan, johnthetubaguy is the issue with making sure the service cache gets updated after each compute node update suitably okay? are we assuming the scheduler will be restarted every time some uprades a compute node?
16:30:11 cdent johnthetubaguy: sorry, I started looking and got distracted by a merge conflict on some logging fixes and lost my place. Is there a summary of what we're trying to resolve?
16:30:17 johnthetubaguy cdent: I was thinking you needed to SIG_HUP for the RPC API change anyways, but it might be the first time
16:30:27 johnthetubaguy cdent: the -1 comment on the patch should do it
16:30:32 superdan cdent: that's the assumption that my grenade service check ensures is safe, and which sdague wants to wait on since we haven't seen it yet, even though it's 100% possible
16:30:41 cdent sig hup won't do it, as there's no reset handler?
16:30:50 superdan cdent: so I'll pull that out and do it separately and if we start to break the world after this merges, we'll have it ready
16:30:56 johnthetubaguy cdent: basically, seems like the instance allocations will fail for ironic nodes that have resource_classes defined
16:31:16 superdan cdent: correct, there's no reset handler, which I did ask for, but we can do after as well, and won't help the gate anyway
16:31:24 johnthetubaguy cdent: ah, I missed that
16:31:33 johnthetubaguy superdan: +1, but lets keep that separate
16:31:40 cdent superdan: k, I wasn't think in terms of the gate, but you know, like real people ;)
16:32:52 superdan johnthetubaguy: yeah, I was going to pull it out regardless, but I was going to keep it in the path of this set, but I won't now
16:33:00 superdan cdent: yes, which is why I asked for the reset thing initially
16:34:14 cdent johnthetubaguy: tacking back to that allocations thing now

Earlier   Later