Earlier  
Posted Nick Remark
#openstack-nova - 2017-10-03
17:24:11 mriedem so filtering on changes-since for that is kind of dumb
17:24:19 dansmith mriedem: ack will look
17:24:22 sdague clarkb: it's not going to be entry points
17:24:24 mriedem like i said, it's come up before
17:24:33 cdent mriedem, why is that not a bug? (as in, to fix)
17:24:44 sdague clarkb: it's just going to be non custom cli parsing
17:24:52 sdague clarkb: there is nothing about stevedore here
17:24:59 mriedem Kevin_Zheng is on holiday this week but i'll also bug him on the wechat-o-sphere
17:25:40 dansmith mriedem: instance action list is per instance, right? so no paging across cells?
17:26:03 clarkb sdague: I thought cliff had some baked in ideas of registering commands via stevedore as part of its command parsing
17:26:10 clarkb sdague: but maybe its optional
17:27:18 cdent mriedem: “ it's that we literally don't update the updated_at column for intsance actions” <- Is there a reason why for that? Isn’t that what updated_at means?
17:28:13 melwitt I didn't think we updated individual instance action records. aren't they just written once?
17:28:50 melwitt like, "instance created" "instance rebooted" "instance rebuilt" it's not like you go back and edit those
17:30:03 dansmith updated_at is built into oslo.db
17:30:14 dansmith so if it's never set on those, it's because we never did a save, AFAIK
17:30:35 dansmith there are other things missing in that spec,
17:30:44 dansmith like it doesn't show them actually using the marker they say they're going to,
17:31:06 dansmith but I assume they really mean start_time, which is its own field
17:31:11 dansmith separate from the usual three default ones
17:31:31 dansmith there is a finish_time on that object too
17:31:37 melwitt yeah, I was trying to say I don't think instance action rows are ever saved, they're created/written once and that's it
17:31:48 sdague melwitt: how is end time set then?
17:32:08 sdague or, only if it's set all at once
17:32:25 dansmith we can update them actually
17:32:34 dansmith action_event_finish()
17:32:47 dansmith sets the finish time and calls action.update()
17:32:54 melwitt oh, weird
17:33:15 dansmith I'd bet we don't finish all the actions we start though.. like everything else:P
17:38:56 mriedem i'd have to read back through the specs, but we create the action record and then we just deal with the events
17:38:59 mriedem which are different records
17:39:15 mriedem so there is event_start and event_finish
17:40:35 mriedem and i don't see us ever updating the action record when the event is finished
17:41:31 dansmith mriedem: https://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/api.py#L6224
17:41:48 dansmith ohh, the action and event I'm getting confused I guess
17:42:07 dansmith we actually just return the action from the action_finish() thing
17:42:17 dansmith not sure why or how that makes sense
17:42:25 dansmith but I guess that means we're never updating the _action_
17:42:40 mriedem correct
17:42:46 dansmith it doesn't matter though, because changes-since should key on the start_time I would think
17:43:25 dansmith or it could be on max(start_time, finish_time) in case we ever set finish_time
17:43:30 dansmith but not updated_at I wouldn't think
17:43:37 melwitt I think the question was, why isn't updated_at updated and I was saying because it's never updated
17:44:13 cdent tautology alert
17:44:19 cdent but: yes
17:44:24 melwitt haha yeah
17:44:26 dansmith melwitt: right, I get that, and it's because we're not updating it from action_finish
17:44:43 dansmith melwitt: I had found action_event_finish() when looking for action_finish() which _does_
17:44:51 melwitt yeah
17:44:58 dansmith I dunno _why_ we're not updating it during the finish, but..
17:45:22 melwitt well, because each action is just "instance create started" "instance create finished" and they're separate right?
17:45:22 dansmith regardless, I would expect changes-since on this kind of thing to use the inbuilt fields
17:45:27 dansmith not the default one
17:45:33 melwitt there's nothing to update about it, it's just there
17:45:48 dansmith melwitt: except we have a finish method that doesn't finish it, and a finish_time field we never set, apparently
17:45:57 mriedem dansmith: i don't think anything actually calls action_event_finish()
17:46:06 mriedem i remember talking to laski about that at one point
17:46:14 melwitt oh
17:46:15 mriedem and it was like, something something tasks...we never used it
17:46:22 dansmith fine, extend my argument to why we have those in addition to why they do nothing :)
17:46:35 mriedem the EventReporter context manager calls objects.InstanceActionEvent.event_finish_with_failure
17:46:38 dansmith it's beside the point though, IMHO
17:47:27 melwitt I think I don't know what instance action events are. I'm just thinking of the "instance actions" which are a basic log of things that have happened to the instance
17:47:56 mriedem the events are tied to the action
17:48:06 dansmith right, an action is a high level thing,
17:48:07 mriedem see the EventReporter class
17:48:09 dansmith events are small steps
17:48:21 mriedem ever notice the @wrap_instance_event decorator on the compute manager methods?
17:48:33 mriedem that creates the event start on entry, and event finish on exit
17:48:55 mriedem the action record is created in the API before casting to compute where the real business happens, and that real bidness is recorded with events
17:48:57 mriedem on the action
17:50:06 melwitt bidness
17:51:04 melwitt okay, so I guess someone forgot to ever finish_time instance actions after creating the data model
17:51:28 mriedem jesus i thought this was merged in pike https://review.openstack.org/#/c/480746/
17:51:44 mriedem so ^ gives an example of how a user can use these things for polling when an operation is complete
17:52:24 melwitt that's leet
17:53:48 mriedem leet?
17:55:06 mriedem also, note that if we ever rename methods in the compute manager which have the @wrap_instance_event decorator, we break that api
17:55:14 dansmith which we have, I think
17:55:17 melwitt like elite use of that API
17:55:19 dansmith hasn't gibi complained?
17:55:26 mriedem don't remember
17:55:41 dansmith I think when we moved things from compute to conductor there was a thing about that
17:56:03 dansmith I don't recall if there was an override to fix it or just "meh, this is an internal api"
17:56:05 mriedem for events or notifications?
17:56:22 dansmith oh yeah I guess I'm thinking of notifications
17:56:30 dansmith but similar deal
18:01:45 mriedem heh coincidentally https://bugs.launchpad.net/nova/+bug/1719561
18:01:46 openstack Launchpad bug 1719561 in OpenStack Compute (nova) "Instance action's updated_at doesn't updated when action created or action event updated." [Undecided,In progress] - Assigned to Yikun Jiang (yikunkero)
18:01:56 mriedem i guess they found this out on their own...
18:06:00 mriedem huh we have no indexes on the events table
18:10:36 mriedem might be time to fire up the ol' create 1000 instances and list some things out of the api machine
18:11:32 cdent mriedem: one of the last times you did that there were 409s coming out of placement, did that ever get narrowed down, or did the rest of the world come rushing in and flush that for a while?
18:12:30 mriedem i've got a patch
18:12:41 mriedem but zuul has been zuuling it up
18:12:58 mriedem https://review.openstack.org/#/c/507918/
18:13:54 cdent that’s the recreate patch, right, not the “here’s my theory” patch?
18:14:38 mriedem it's a recreate yeah
18:14:44 mriedem to see if we can find out from the logs where the 409 comes from
18:14:49 mriedem what triggers it i mean

Earlier   Later