Earlier  
Posted Nick Remark
#openstack-nova - 2018-04-10
15:20:29 mriedem L575 https://etherpad.openstack.org/p/nova-ptg-rocky
15:21:46 lyarwood mriedem: yeah, only just got around to starting yesterday when I hit https://bugs.launchpad.net/cinder/+bug/1762687
15:21:46 openstack Launchpad bug 1762687 in OpenStack Compute (nova) "Concurrent requests to attach the same non-multiattach volume to multiple instances can succeed" [Undecided,New] - Assigned to Lee Yarwood (lyarwood)
15:21:51 mriedem or was it a unique constraint on device name? now i'm confused
15:22:21 lyarwood mriedem: https://blueprints.launchpad.net/nova/+spec/remove-and-block-duplicate-bdms created that a while ago, wanted to catch up with melwitt or you about getting it approved etc this week
15:22:27 dansmith efried: the first bullet under "if there is no record" mentions stuff about user_id and project_id, but I'm missing why that's related
15:22:44 mriedem lyarwood: we don't need a blueprint for a bug fix
15:22:59 lyarwood mriedem: right, even if it's across two cycles?
15:23:00 mriedem lyarwood: as for that new concurrent requests bug, i know what that's about, and why it's only since queens
15:23:06 mriedem lyarwood: sure
15:23:12 lyarwood mriedem: kk, I'll nuke the bp then
15:24:15 efried edleafe: --^
15:24:58 efried dansmith: It's because of the goofiness we implemented wrt user and project IDs earlier, plus having no endpoints that manage consumers directly.
15:25:35 efried dansmith: At earlier microversions, proj/user IDs were optional, so we wanted to not create the consumer record if they weren't specified.
15:25:59 efried dansmith: But now we *always* want to set/maintain the generation, even at older microversions, so we *have* to create the consumer record.
15:26:25 efried dansmith: So we had to make proj/user ID fields nullable so that, at older microversions where they weren't required/specified, we could still create that record.
15:26:34 efried I think I've got that right - edleafe help me out here ^
15:27:26 dansmith hmm, okay, that is.. odd,
15:27:31 efried it is indeed.
15:27:37 dansmith so we didn't initially have a consumer record and then added it for user/proj?
15:27:47 efried I think that's the case, yes.
15:27:50 dansmith I guess it seems weird that we didn't just start creating those records with null fields at that point
15:28:00 efried yeah. That would have been a thing to do.
15:28:02 efried Somewhere I tagged the IRC discussion edleafe and I had about this.
15:28:05 mriedem lyarwood: details https://bugs.launchpad.net/nova/+bug/1762687/comments/3
15:28:05 openstack Launchpad bug 1762687 in OpenStack Compute (nova) "Concurrent requests to attach the same non-multiattach volume to multiple instances can succeed" [Undecided,New] - Assigned to Lee Yarwood (lyarwood)
15:28:08 efried possibly in a spec comment.
15:28:25 dansmith efried: so ... is it unreasonable to say that expecting the reader of the spec to have that context is.. unreasonable?
15:28:34 efried dansmith: Here's that IRC convo: http://eavesdrop.openstack.org/irclogs/%23openstack-nova/%23openstack-nova.2018-04-04.log.html#t2018-04-04T13:35:30
15:28:36 dansmith because reading it from the top, I get stopped at that point with zero idea where it's going
15:29:09 efried dansmith: That's not unreasonable. But trying to explain all that context probably would be. How about a vague "for historical reasons" sentence?
15:29:23 efried or I suppose we could link that eavesdrop in
15:29:53 dansmith well,
15:30:01 dansmith I kinda think the context is worthwhile in here
15:30:04 dansmith more than an irc link
15:30:38 efried Or perhaps this is an implementation detail that doesn't need to be in the spec at all. Since I *think* the interface isn't changing. (edleafe said it was changing a teeny bit; I never understood how)
15:30:43 lyarwood mriedem: I think you've missed that this is with two different instances, not one.
15:31:39 mriedem oh....
15:31:42 mriedem yes, dear
15:35:13 dansmith efried: edleafe: comments in there.. if you're really concernedand want to do those in a follow-in that's fine, but I think it's probably fine to just roll them in here
15:35:23 dansmith and I can fast approve if jaybird isn't around at that point
15:36:04 kashyap When anyone gets a moment later, I'm duking around a potentially stupid unit test mistake: http://paste.openstack.org/show/718840/. Corrections / snide remarks / rotten tomatoes welcome.
15:36:13 kashyap s/bbia/bbiab/
15:36:57 openstackgerrit Surya Seetharaman proposed openstack/nova master: Cleanup RP and HM records while deleting a compute service. https://review.openstack.org/554920
15:41:40 mriedem lyarwood: i don't have great solutions off the top of my head
15:41:52 dansmith kashyap: L26 isn't a tuple
15:41:54 mriedem was thinking if we had a bdm.multiattach column that maybe that could somehow be used, but not really...
15:42:15 dansmith kashyap: so I think you're doing "(mock_getver,).return_value = "
15:42:29 dansmith kashyap: (foo,bar) and (foo,) are tuples.. (foo) is not
15:42:54 mriedem lyarwood: we have this... https://github.com/openstack/nova/blob/master/nova/objects/block_device.py#L327 but that doesn't alleviate the race
15:43:22 dansmith kashyap: and of course, you should be removing test.nested
15:47:38 edleafe dansmith: yeah, I'll push a new rev of that spec shortly
15:47:45 dansmith edleafe: ack thanks
15:47:55 lyarwood mriedem: yeah we can still race on our side, then again so could c-api when it's creating the attachment
15:48:08 lyarwood *attachments
15:48:34 mriedem so i can't remember what we said at the ptg the bdm unique constraint would be on, since it can't be volume_id and instance_uuid, since that would break multiattach
15:48:41 mriedem oh, nvm,
15:48:45 mriedem that would be ok
15:49:01 dansmith what if people want multiple attachments to the same vm and instance??
15:49:14 dansmith s/??/?/
15:49:37 lyarwood to the same volume and instance you mean?
15:49:50 dansmith heh yeah
15:49:51 lyarwood like during LM
15:50:05 dansmith or just for some sort of fictitious multipathing sort of thing
15:50:15 dansmith like they want multiple VFs on the same physnet today
15:50:39 mriedem via the cinder api, you can create multiple volume attachments to the same instance and volume
15:50:45 mriedem nova uses that for migrations
15:50:46 lyarwood we wouldn't model that using attachments, that's all within a single attachment and the connection_info it provides
15:51:10 mriedem only one attachment should be 'active' at any time
15:51:15 mriedem like what we're doing with the neutron port binding stuff
15:51:42 mriedem active = the attachment has a host connector and connection to the backend storage
15:52:10 dansmith lyarwood: I dunno, if we have multiple paths to the host from the volume provider, we'd need different attachments because of differing addresses right?
15:53:13 dansmith I'm just playing devil's advocate here to make sure we don't regret a decision later
15:53:20 dansmith removing a constraint is easy I guess
15:53:32 mriedem i don't even have a decision/solution for this race problem right now
15:53:33 dansmith although I'm not sure if mriedem is saying current live migration behavior would break there
15:53:37 lyarwood dansmith: hehe yeah I understand
15:54:10 mriedem the solution to fix the race with attaching the same volume to the same instance concurrently is a unique constraint on the bdms table over the volume_id and instance_uuid columns
15:54:17 mriedem but that doesn't fix lyarwood's new bug
15:55:11 mriedem you can't put a unique constraint on just the volume_id column since that would break multiattach
15:55:35 mriedem you almost need a conditional constraint, where volume_id must be unique if multiattach=False
15:55:46 mriedem but there is no such thing as a conditional unique constraint is there?
15:56:11 mriedem and jaypibbles ran off
15:56:29 dansmith mriedem: I think you need an active=$id column to do that
15:56:39 dansmith that's why we have deleted=$id I think
15:56:47 mriedem https://en.wikipedia.org/wiki/Check_constraint
15:57:38 dansmith hmm
15:57:45 dansmith I wonder what the performance of that is
15:57:50 mriedem i've always seen these in sqla-migrate but never played with one
15:58:00 mriedem zzzeek_: how terrible are check constraints?
15:58:20 dansmith wait,
15:58:20 zzzeek_ mriedem: most mysql / mariadb variants ignore them
15:58:25 lyarwood http://docs.sqlalchemy.org/en/latest/core/constraints.html#check-constraint
15:58:28 lyarwood Note that some databases do not actively support check constraints such as MySQL.
15:58:30 zzzeek_ mriedem: which is why you never see thme :)
15:58:30 dansmith you have to do your own uniqueness checking in the contraint then
15:58:33 lyarwood ^ yeah what zzzeek_ said
15:58:34 mriedem gdi
15:58:49 zzzeek_ lyarwood: mariadb 10.2 does now. oddly enough this creates more problems :)
15:59:35 dansmith mriedem: I'm sure DB2 supports them and is just hanging out by the punch bowl waiting for someone to care

Earlier   Later