| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2017-07-17 | |||
| 16:25:16 | sdague | I'd be more happy with an N-1 policy, but we do need to communicate it every time it would trip people up | |
| 16:26:55 | mriedem | i don't disagree | |
| 16:29:56 | mriedem | jaypipes: bauzas: i have an idea on that failure | |
| 16:29:59 | mriedem | the functional test failure that is | |
| 16:30:07 | jaypipes | yeah? | |
| 16:30:09 | bauzas | ? | |
| 16:30:18 | mriedem | the test setup creates 2 compute services/nodes/hosts | |
| 16:30:25 | mriedem | you can see the 2nd host CN created here http://logs.openstack.org/64/483564/2/gate/gate-nova-tox-functional-ubuntu-xenial/0f4534d/console.html#_2017-07-17_15_20_35_768000 | |
| 16:30:31 | mriedem | with uuid a945d18d-e6b6-4fd5-8b3b-e50c973a1ff9 | |
| 16:30:35 | mriedem | and it's posted into placement | |
| 16:30:57 | mriedem | now the purpose of the test is to restrict to 1 host | |
| 16:30:58 | mriedem | so | |
| 16:30:59 | mriedem | self.compute2.kill() | |
| 16:31:02 | mriedem | HOWEVER | |
| 16:31:13 | mriedem | filter scheduler is getting it's hosties from placement now | |
| 16:31:19 | mriedem | so that RP is still floating around in placement | |
| 16:31:55 | mriedem | you can see the scheduler do it's thing here | |
| 16:31:55 | mriedem | GET /allocation_candidates?resources=DISK_GB%3A20%2CMEMORY_MB%3A2048%2CVCPU%3A1 HTTP/1.1" status: 200 len: 992 time: 0.0521650 | |
| 16:32:02 | mriedem | and then | |
| 16:32:02 | mriedem | No compute service record found for host host2 | |
| 16:32:10 | mriedem | because the test killed it | |
| 16:32:15 | mriedem | Filter RetryFilter returned 0 hosts | |
| 16:32:29 | mriedem | what i don't understand is why it doesn't try the other compute host | |
| 16:34:38 | mriedem | so one easy hack is deleting the host2 RP from test_boot_servers_with_soft_anti_affinity_one_available_host - but that's pretty hacky, it seems odd that the filtering wouldn't check the other host | |
| 16:35:34 | jaypipes | mriedem: it's also odd that this test fails randomly. | |
| 16:39:11 | mriedem | yeah so we get this https://github.com/openstack/nova/blob/master/nova/scheduler/host_manager.py#L674 | |
| 16:39:26 | mriedem | so _get_host_states should return 1 host | |
| 16:45:20 | mriedem | my only guess is for whatever reason the retry is disabled when the test runs | |
| 16:46:10 | mriedem | nvm that doesn't make sense | |
| 16:46:37 | jaypipes | just failed that test again in the isolate get_sorted_hosts() patch :( | |
| 16:46:53 | mriedem | jaypipes: yeah that's the one bauzas was talking about | |
| 16:46:56 | mriedem | it failed in the gate | |
| 16:48:27 | mriedem | man you really need debug output when this fails | |
| 16:49:24 | mriedem | and why wouldn't we see this in the logs? https://github.com/openstack/nova/blob/master/nova/scheduler/filters/retry_filter.py#L47 | |
| 16:49:29 | jaypipes | mriedem: anything in the scheduler needs DEBUG output because of the policy of only doing DEBUG level logging :( | |
| 16:49:38 | mriedem | jaypipes: heh yeah i know | |
| 16:49:49 | jaypipes | mriedem: because it was never passed any hosts. | |
| 16:50:04 | jaypipes | mriedem: if you look at the log failures, you see REtryFilter(0 hosts) | |
| 16:50:24 | mriedem | RetryFilter: (start: 0, end: 0) ? | |
| 16:50:29 | jaypipes | yeah | |
| 16:51:45 | mriedem | ok, so the first compute node never came back from GET /allocation_candidates probably | |
| 16:53:03 | mriedem | http://logs.openstack.org/64/483564/2/gate/gate-nova-tox-functional-ubuntu-xenial/0f4534d/console.html#_2017-07-17_15_20_35_765791 | |
| 16:53:08 | mriedem | that's when the first compute host starts up | |
| 16:53:46 | mriedem | and then "Compute_service record created for compute:fake-mini" | |
| 16:54:05 | mriedem | Another thread already created a resource provider with the UUID 3694a10a-e435-4400-83aa-7d6ade1fc866. Grabbing that record from the placement API. | |
| 16:54:35 | mriedem | i don't know what 3694a10a-e435-4400-83aa-7d6ade1fc866 is | |
| 16:54:46 | mriedem | i thought the first compute RP should be e9e74898-4332-4e50-a4c6-1ad75dd295e5 | |
| 16:55:18 | mriedem | hmm wtf GET /resource_providers/3694a10a-e435-4400-83aa-7d6ade1fc866" status: 404 | |
| 16:55:29 | mriedem | Unable to refresh my resource provider record | |
| 16:56:09 | mriedem | so whatever happened, it never posted inventory for the first compute host, | |
| 16:56:18 | mriedem | which is why it didn't come back in GET /allocation_candidates | |
| 16:56:30 | mriedem | seems like another case of the wsgi eventlet weirdness | |
| 16:56:33 | mriedem | crossing streams | |
| 16:58:18 | mriedem | on a side note, it's silly that we go through all the work of calling down to get_filtered_objects when the original list we got back from GET /allocation_candidates is empty to begin with | |
| 16:59:19 | mriedem | ah yes jay's todo: "Really, we should raise NoValidHosts here" | |
| 16:59:40 | jaypipes | tada. | |
| 16:59:53 | mriedem | so i think the failure is totally unrelated | |
| 17:03:44 | mriedem | i rechecked and left a big ass summary of the failure | |
| 17:10:20 | mriedem | aha 10 hours later i think i figured out the ValueError: Cannot convert NUMATopologyLimits(cpu_allocation_ratio=16.0,ram_allocation_ratio=1.5) to primitive | |
| 17:10:26 | mriedem | and is a real bug it looks like | |
| 17:13:18 | mriedem | oooo and one mr jay introduced :) | |
| 17:13:30 | mriedem | i guess our numa 3rd party ci isn't running? | |
| 17:13:42 | jaypipes | mriedem: in, like, how long? :) | |
| 17:13:47 | mriedem | https://review.openstack.org/#/c/478291/1/nova/scheduler/manager.py | |
| 17:13:50 | mriedem | L48 | |
| 17:13:52 | mriedem | that's not a primitive | |
| 17:14:04 | mriedem | so when passing to jsonutils.to_primitive | |
| 17:14:07 | mriedem | kablammo | |
| 17:14:11 | mriedem | in the latest oslo.serialization | |
| 17:14:18 | mriedem | http://logs.openstack.org/87/482287/6/check/gate-cross-nova-func-ubuntu-xenial/a645ce8/console.html#_2017-07-16_14_02_02_649384 | |
| 17:14:22 | mriedem | but not to worry, | |
| 17:14:31 | jaypipes | mmm | |
| 17:14:38 | mriedem | i've wrangled the oslo team to blacklist that version because it was breaking us, because of the bug :) | |
| 17:14:40 | mriedem | i'll push a fix | |
| 17:15:03 | jaypipes | k, thanks matt | |
| 17:17:51 | mriedem | sean-k-mooney: do you know if anyone is running the intel NUMA 3rd party ci anymore? | |
| 17:21:47 | mriedem | fwiw this could have always been busted https://review.openstack.org/#/c/478291/1/nova/scheduler/filter_scheduler.py | |
| 17:21:55 | mriedem | i don't see any fancy conversion before | |
| 17:28:42 | openstackgerrit | Merged openstack/nova master: Fix the releasenote and api-ref for quota-class API https://review.openstack.org/483170 | |
| 17:31:31 | jaypipes | alex_xu: https://review.openstack.org/#/c/480379/ reviewed. couple tiny nits. if you can fix those up and re-push, I'm +2. | |
| 17:39:00 | openstackgerrit | Gábor Antal proposed openstack/nova master: Transform servergroup.create notification https://review.openstack.org/454023 | |
| 17:39:18 | openstackgerrit | Gábor Antal proposed openstack/nova master: Transform servergroup.delete notification https://review.openstack.org/483902 | |
| 17:54:57 | openstackgerrit | Gábor Antal proposed openstack/nova master: Transform servergroup.delete notification https://review.openstack.org/483902 | |
| 17:59:37 | openstackgerrit | Gábor Antal proposed openstack/nova master: Transform servergroup.create notification https://review.openstack.org/454023 | |
| 17:59:55 | openstackgerrit | Gábor Antal proposed openstack/nova master: Transform servergroup.delete notification https://review.openstack.org/483902 | |
| 18:03:27 | openstackgerrit | Matt Riedemann proposed openstack/nova master: Convert HostState.limits objcets to primitives https://review.openstack.org/484439 | |
| 18:03:43 | mriedem | dansmith: sfinucan: ^ i'm going to need someone more familiar with the numa limits stuff to look at that | |
| 18:03:47 | mriedem | like sahid or vladikr? | |
| 18:03:54 | mriedem | i don't know how this was actually working before | |
| 18:04:21 | openstackgerrit | Matt Riedemann proposed openstack/nova master: Convert HostState.limits objects to primitives https://review.openstack.org/484439 | |
| 18:05:56 | mriedem | was conductor serializing that response before for us so the NUMATopologyLimits was getting serialized by conductor? | |
| 18:07:47 | oomichi | alex_xu: most patches are approved on https://review.openstack.org/#/q/status:open+project:openstack/nova+branch:master+topic:bp/api-no-more-extensions-pike | |
| 18:08:09 | oomichi | alex_xu: need to update the remaining for conflicts | |
| 18:31:24 | openstackgerrit | Matt Riedemann proposed openstack/nova master: Log compute node uuid when the record is created https://review.openstack.org/484447 | |
| 18:52:46 | mriedem | dansmith: sfinucan: nvm i think i know how that worked before - jsonutils.to_primitive() wouldn't error out, but wouldn't convert the NUMATopologyLimits either, so it would go through NovaObjectSerializer to do the serialize/deserialize work on the object | |
| 18:53:08 | mriedem | the new change in to_primitive to raise ValueError is what blew it all up because it would try to serialize before hitting the NovaObjectSerializer | |
| 18:53:22 | dansmith | sorry I missed the above ping, | |
| 18:53:25 | dansmith | but I assume I can ignore now | |
| 18:53:53 | mriedem | validation of my understanding, and feelings, is always appreciated, but yeah you can ignore probably | |
| 18:54:26 | dansmith | jsonutils.to_primitive used to fail with "recursion error" or something like that when it hit a non-serializeable object | |