Wednesday, 2022-05-11

opendevreviewMerged openstack/swift master: container-server: plumb includes down into _get_shard_range_rows  https://review.opendev.org/c/openstack/swift/+/56984701:28
opendevreviewMatthew Oliver proposed openstack/swift master: Repair Gaps: Add a probe test  https://review.opendev.org/c/openstack/swift/+/84137207:37
opendevreviewMatthew Oliver proposed openstack/swift master: Repair Gaps: Add a probe test  https://review.opendev.org/c/openstack/swift/+/84137207:40
opendevreviewAlistair Coles proposed openstack/swift master: manage-shard-ranges: add gap repair option  https://review.opendev.org/c/openstack/swift/+/84114314:31
opendevreviewAlistair Coles proposed openstack/swift master: manage-shard-ranges: add gap repair option  https://review.opendev.org/c/openstack/swift/+/84114315:51
opendevreviewTim Burke proposed openstack/swift master: manage-shard-ranges: add gap repair option  https://review.opendev.org/c/openstack/swift/+/84114319:49
kotamorning21:00
timburke__#startmeeting swift21:00
opendevmeetMeeting started Wed May 11 21:00:28 2022 UTC and is due to finish in 60 minutes.  The chair is timburke__. Information about MeetBot at http://wiki.debian.org/MeetBot.21:00
opendevmeetUseful Commands: #action #agreed #help #info #idea #link #topic #startvote.21:00
opendevmeetThe meeting name has been set to 'swift'21:00
timburke__who's here for the swift meeting?21:00
*** timburke__ is now known as timburke21:00
kotahi21:00
mattolivero/21:00
timburkeas usual, the agenda's at21:01
timburke#link https://wiki.openstack.org/wiki/Meetings/Swift21:01
acoleso/21:02
timburkebut i mostly just want to follow up on the various threads of work i mentioned last week21:02
timburke#topic ring v221:02
timburkei don't think we've done further work on this yet -- can anyone spare some review cycles for the head of the chain?21:02
mattoliverI can go back and look again, but probably need fresh eyes too. 21:03
timburkethanks 👍21:04
timburke#topic memcache errors21:04
timburkeclayg took a look and seemed to like it -- iirc we're going to try it out in prod this week and see how it goes21:05
timburkei think it'll be of tremendous use to callers to be able to tell the different between a cache miss and an error talking to memcached21:05
mattoliver+121:06
timburke#topic eventlet and logging handler locks21:06
mattoliverI took a look at this in a vsaio. Threw a bunch of load at it, upped the workers. And seemed to all work fine.21:08
timburkewe're also going to try this out in prod. it may take a little longer to get data on it, though, since it seems riskier (and so requires ops to opt-in to the new behavior)21:08
timburkegood proof point! thanks mattoliver21:08
timburkeit'll be real interesting if we can notice a performance difference when we try it in prod21:09
mattoliverI then wanted to goto an elk environment to better tell me if there was a logging issues as file beat tries to break things into json21:09
mattoliverBut stalled getting the env set up21:10
mattoliverMight have a play with it now that we'll have it in our staging cluster.21:10
timburke👍21:11
timburke#topic backend rate limiting21:11
timburkesorry, acoles, i'm pretty sure i promised reviews and haven't delivered21:11
acoleshehe, no worries, I've not circled back to this yet (in terms of deploying at least)21:12
acolesI think since last week we've had some thoughts about how the proxy should deal with 529s...21:12
acolesoriginally I felt the proxy should not error limit. I still think that is the case given the difference in time scales (per second rate limiting vs 60second error limit), BUT it could be mitigated for by increasing the backend ratelimit buffer to match21:14
acolesi.e. average backend ratelimiting over ~60secs21:14
acolesalso, we need to consider there are N proxies requesting to each backend ratelimiter21:15
acolesin the meantime, since last week I think, I added a patch to the chain to load the ratelimit config from a separate file, and to periodically reload21:17
timburkedo we already have plumbing to make the buffer time configurable?21:17
mattoliverIf only we had global error limiting 😜 21:17
mattoliverOh nice21:17
acolestimburke: yes, rate_buffer can be configured in the upstream patch21:17
timburkeand do we want to make it an option in the proxy for whether to error-limit 529s or not? then we've put a whole bunch of knobs that ops can try out, and hopefully they can try some experiments and tell us how they like it21:19
acolesthat's an idea I have considered, but not actioned yet21:20
timburkeall right, that's it for old business21:20
timburke#topic shard range gaps21:20
timburkepart of why i didn't get to reviewing the ratelimiting stuff -- i slipped up last week and broke some shard ranges in prod21:22
timburkewe were having trouble keeping shard ranges in cache -- memcache would often complain about being out of memory21:23
timburkei wanted to relieve some of the memory pressure and knew there were shards getting cached that didn't have any objects in them, so i wanted to shrink them away21:23
* zaitcev is getting excited at a possibility of dark data in production.21:23
timburkeunfortunately, there was also a transient shard-range overlap which blocked me from trying to compact21:24
timburkei thought, "overlaps seem bad," and ran repair21:24
zaitcevNot to wish evil on Tim and crew but, I kinda wish my work on watchers were helpful to someone.21:25
zaitcevSo what did repair do?21:25
timburkeonly, the trouble was that (1) a shard had sharded, (2) at least one replica fully split up, and (3) at least one other replica reported back to the root. everybody was currently marked active, but it wasn't going to stay that way21:26
acoles@zaitcev IIRC we try very hard to send object updates *somewhere* ultimately falling back to the root container 🤞21:27
timburkeiirc, the child shards all got marked shrinking. so now the parent was trying to kick rows out to the children and delete itself, while the children were trying to send rows back to the parent and delete *themselves*21:27
timburkeeventually some combination succeeded well enough to where the children got marked shrunk and the parent got marked sharded. and now nobody's covering the range21:28
mattoliverSo the "overlap" was a normal shard event, just everything hadn't replicated. And after repair the shrink acceptor disappeared (deleted itself). 21:29
timburkeacoles was quick to get some new code into swift-manage-shard-ranges to help us fix it21:29
timburke#link https://review.opendev.org/c/openstack/swift/+/84114321:29
timburkeand immediately following this meeting, i'm going to try it out :-)21:29
timburkeany questions or comments on any of that?21:31
mattoliverNope, but I've been living it 😀 interested to see how it goes21:32
zaitcevI haven't even enabled shrinking, so none.21:32
mattoliverAlso seems fixing the early ACTIVE/CLEAVED would've helped here. 21:33
timburkei was just going to mention that :-)21:34
mattoliverSo maybe seeing the early ACTIVE edge case in real life, rather then in theory. 21:34
mattoliverSo we weren't crazy to work on it Al, that's a silver lining. 21:35
timburkethe chain ending at https://review.opendev.org/c/openstack/swift/+/789651 likely would have prevented me getting into trouble, since i would've seen some mix of active and cleaved/created and no overlap would've been detected21:35
timburkeall right, that's all i've got21:36
timburke#topic open discussion21:36
timburkewhat else should we bring up this week?21:36
mattoliverAs mentioned at ptg we think we have a better way of solving it without new states, but yeah, it would've helped definitely21:36
timburkemattoliver, do we have a patch for that yet, or is it still mostly hypothetical?21:37
mattoliverI've done the prereq patch, and playing with a timing out algorithm. But no still need to find time to write the rest of the code.. maybe once the gaps are filled ;) 21:39
acolesthere's a few other improvements we have identified, like making the repair overlaps tool check for any obvious parent-child relationship between the overlapping ranges21:39
acolesand also being wary of fixing recently created overlaps (that may be transient)21:40
acolesbut yeah, ideally we would eliminate the transient overlaps that are a feature of normal sharding21:40
timburkeall right, i think i'll get on with that repair then :-)21:43
timburkethank you all for coming, and thank you for working on swift21:43
timburke#endmeeting21:43

Generated by irclog2html.py 2.17.3 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!