21:01:32 #startmeeting swift 21:01:33 Meeting started Wed Dec 18 21:01:32 2019 UTC and is due to finish in 60 minutes. The chair is timburke. Information about MeetBot at http://wiki.debian.org/MeetBot. 21:01:34 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 21:01:36 The meeting name has been set to 'swift' 21:01:54 who's here for the swift meeting? 21:02:07 o/ 21:03:45 quiet. maybe this'll be a fast one 21:04:02 as always, agenda's at https://wiki.openstack.org/wiki/Meetings/Swift 21:04:19 #topic next meeting 21:04:23 o/ 21:04:40 just a reminder: no meeting next week (Dec 25) or the week after (Jan 1) 21:04:53 so next meeting will be Jan 8 21:05:19 ack 21:05:55 that's all i've got, really -- on to updates! 21:06:03 #topic versioning 21:06:09 o/ (sorry I'm late) 21:06:14 tdasilva, how's it going? 21:06:19 mattoliverau, no worries :-) 21:07:10 i can also talk about what *i've* found as a reviewer ;-) 21:07:35 i've been poking at getting a probe test for sharding a new-style versioned container 21:07:41 we are continuing to make good progress I think. timburke left comments on the swift versioning so we are working through some of those 21:07:50 sorry, i type slow 21:08:06 it's still early for you ;-) 21:08:30 (in particular, i'm looking to shard the backing, reserved-name container) 21:08:34 just wanted to add we added some todo items to the bottom of the ehterpad: https://etherpad.openstack.org/p/swift-object-versioning 21:09:06 kind of summarizes last few items we are currently aware of and working on 21:09:51 sounds good 21:10:32 any other input we need from people, or is it mostly a matter of cranking through the remaining issues? 21:10:34 so yeah, we are pushing it hard to get it over the finish line soon 21:10:42 I’m working on a version of the brain splitter that can use internal client so I can have reconciler probe tests for the null namespace. 21:10:58 clayg, *i* was thinking i need that, too! 21:11:38 Oh. Well today’s been crazy. Maybe tomorrow. 21:12:12 i'll see how far i can get; throw up whatever i've got at EOD, anyway 21:13:10 am i right in thinking that we know what needs to happen, and there aren't really any decisions we need to make regarding it? 21:13:26 oh 21:13:46 i think we said last week we would discuss again about `enabled by default` ? 21:13:52 or am i confused? 21:15:26 sorry, i'd forgotten. i think i'm of the opinion that i *wouldn't* recommend it by default yet (for upstream, anyway) 21:15:45 actually, yeah, nevermind: "anyway, something to think about. i don't think we're likely to enable-by-default before the next time we all see each other face-to-face, anyway ;-) " 21:16:10 maybe i'll feel differently once i've got probe tests for sharding/reconciler/expirer ;-) 21:16:19 especially given the probe tests ...right! 21:16:53 sounds like we've got what we need to keep moving 21:17:02 #topic profiling/md5 optimization 21:17:21 rledisez, how's it going? 21:18:13 well, I didn't di much on that. I mostly think about how I would implement it. I don't want to redo the whole world, so i'll try to be smart in integrating that. but no real code for now 21:18:46 👍 21:19:17 the different combination (crypto/replica, crypto/EC, EC, replica) make it a bit hard to do something really optimized (in the way it's designed). i'm thinking about that too 21:20:34 that's all for me about that 21:21:42 i wonder how crazy it'd be to always use footers and have someone pretty far left (like, gatekeeper or something) be responsible for validating the client data and storing the etag... then have everything else punt to a crc or something lighter-weight... 21:22:20 it's exactly what i'm building. I wrote it that way in the etherpad. 21:22:48 we need more hours in the day! at least, that's usually *my* problem ;-) 21:23:10 #topic RFC-compliant etags 21:23:56 so i've got a patch to enable it cluster-wide, but it sounds like rledisez might have a separate middleware that would allow finer-grained control... 21:24:30 i haven't seen that patch yet, though ;-) 21:24:30 timburke: I totally forgot to push it. i'll put a reminder for tomorrow 21:25:12 thanks! it doesn't have to be perfect -- i'd be happy to help polish docs or tests or what-have-you :D 21:25:33 it's "run-in-prod" polished, no more ;) 21:25:57 i just had one other thing i wanted to draw attention to, this time with a little more time for discussion :-) 21:26:05 #topic ranged SLO reads 21:26:28 so we had a customer complaining about latency variations 21:27:01 as i was helping look into it, i noticed that ranged SLO reads have this funny request pattern: 21:27:25 proxy sends the range request down to the object server 21:27:49 object server just has a manifest, so it responds 416 (that range is way off the end of the thing!) 21:27:52 I presume this is replicated, but go on. 21:28:30 (good point; yes, though the range manipulations we do for EC mean you get much the same behavior) 21:28:45 proxy says, well, no, actually i want that *whole manifest*! 21:28:54 object server sends it back 21:29:08 proxy finds the appropriate segment, requests *that* 21:29:22 object server sends it back, and we can actually start serving users 21:30:02 i set out to get rid of that 416-refetch behavior and just have the object-server send the whole manifest from the get-go 21:30:48 Wait, how does proxy know that it's an SLO object to begin with. 21:30:59 Of course it asks for a range first. 21:31:16 i think i designed my solution fairly smartly; it adds a new, not-slo-specific header to tell the object server "hey, if you see any of these pieces of metadata, ignore the range header i sent" 21:31:28 oh, nice 21:31:44 then has slo add X-Static-Large-Object to that list 21:32:01 or.... you could _always_ ignore range for manifests 21:32:58 i was thinking that i don't really want object-server to need to know *more* about large objects -- we've already seen how much trouble it is that they have to know about swift_bytes, for example 21:33:29 i was mostly inspired by the x-backend-etag-is-at behavior we already have 21:34:47 there is a wart, though, that i'm not sure i like: the EC obj controller (currently) pops off the Range header so that swob behaves itself when it makes the response 21:36:28 so i guess i'm wondering: has anyone else seen this behavior or had users complain about it? 21:36:37 does this design seem reasonable? 21:37:03 and are we ok with that wart? (even in this patch, it means that SLO has to grab the range itself before it calls down to the app, just so it can replace it later...) 21:37:23 I did not notice, but that's because I barely have any SLOs at all. It sounds completely plausible for the reasons of a-priori information that I just mentioned. 21:38:32 I like the approach, re: generic header and middleware can add to it, smart. I guess I need to look to understand the wart some more 21:39:23 i tried to capture it in the commit message; you can also see the consequence of it in https://review.opendev.org/#/c/697739/3/swift/common/middleware/slo.py 21:40:12 Cool, I'll check it out 21:41:18 thanks! i'll see about getting that save/restore logic out to the EC controller, too... i feel like that should be doable, and it'd remove my only real concern 21:41:27 that's all i've got 21:41:32 #topic open discussion 21:41:58 what else would people like to bring up? 21:43:50 all right, looks like we can let mattoliverau, tdasilva, and seongsoocho grab some breakfast ;-) 21:44:02 thank you all for coming, and thank you for working on swift! 21:44:12 talk to you all next year :-) 21:44:19 #endmeeting