Wednesday, 2021-08-04

manuvakery1timburke_: we are running following version of swift and is consistent across all nodes. 03:10
manuvakery1 openstack-swift-account.noarch         2.23.1-1.el7                   @centos-openstack-train03:10
manuvakery1openstack-swift-container.noarch       2.23.1-1.el7                   @centos-openstack-train03:10
manuvakery1openstack-swift-object.noarch          2.23.1-1.el7                   @centos-openstack-train03:10
manuvakery1timburke_: sorry my mistake. we are running swift==2.25.003:22
opendevreviewPete Zaitcev proposed openstack/swift master: Make the dark data watcher work with sharded containers  https://review.opendev.org/c/openstack/swift/+/78765604:33
manuvakery1timburke_: you are right, one of the storage node was running an older version even though we upgrade to  swift==2.25.0 via pip, cleanup and reinstall fixed the issue, thanks for the help05:25
opendevreviewMatthew Oliver proposed openstack/swift master: conatiner-server: return objects of a given policy  https://review.opendev.org/c/openstack/swift/+/80342307:21
mattoliver^ that still needs unit tests... but clays probe test looks better :P07:23
*** mabrams is now known as Guest327908:58
*** mabrams1 is now known as mabrams08:58
*** diablo_rojo is now known as Guest328109:49
*** Guest3281 is now known as diablo_rojo10:09
*** diablo_rojo is now known as Guest331618:34
*** Guest3316 is now known as diablo_rojo18:35
timburke_almost meeting time!20:57
*** timburke_ is now known as timburke20:57
clayg🥳20:59
zaitcevSounds good.20:59
kotagood morning20:59
mattoliverMorning21:00
acolesgood evening :)21:00
timburke#startmeeting swift21:00
opendevmeetMeeting started Wed Aug  4 21:00:31 2021 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
timburkewho's here for the swift meeting?21:00
kotao/21:00
acoleso/21:00
mattolivero/21:01
timburkeas usual, the agenda's at21:01
timburke#link https://wiki.openstack.org/wiki/Meetings/Swift21:01
timburkesorry, i only *just* got around to updating it21:01
timburke#topic PTG21:01
timburkejust a reminder to start populating the etherpad with topics21:02
timburke#link https://etherpad.opendev.org/p/swift-ptg-yoga21:02
timburkei did get around to booking rooms, but i still need to put add them to the etherpad, too21:03
timburkei decided to split times again, try to make sure everyone has some time where they're likely to be well-rested ;-)21:03
timburkeany questions on the PTG?21:04
mattoliverNot yet, let's fill out the etherpad and have some good discussions :) 21:05
timburkeagreed :-)21:05
timburke#topic expirer can delete data with inconsistent x-delete-at values21:06
timburkeso i've got some users that are using the expirer pretty heavily, and i *think* i've seen an old bug21:07
timburke#link https://bugs.launchpad.net/swift/+bug/118262821:07
timburkebasically, there's a POST at t1 to mark an object to expire at t5, then another POST at t2 to have it expire at t10. if replication doesn't get rid of all the t1 .metas, and the t5 expirer queue entry is still hanging around, we'll delete data despite getting back 412s21:09
timburkeon top of that, since the data got deleted, the t10 expiration fails with 412s and hangs around until a reclaim_age passes21:10
claygtimburke: do you have any evidence we've hit expiry times getting [412, 412, 204] because it expired before the updated POST was fully replicated?21:10
zaitcevUgh21:11
claygany chance we could reap the t10 delete row based on the x-timestamp coming off the 404/412 response?21:11
zaitcevI can see telling them not to count on POST doing the job, but the internal inconsistency is just bad no matter what.21:11
claygalso I think there's an inline attempt (maybe even going to async) to clean up the t5 if the post at t2 happens to notice it21:11
timburkei've seen the .ts as of somewhere around the start of July, and the expirer kicking back 412s starting around mid-July. i haven't dug into the logs enough to see *exactly* what happened when, but knowing my users it seems likely that they wanted the later expiration time21:12
timburkeclayg, there is, but only if the t1 .meta is present on whichever servers get the t2 POST21:14
clayg👍21:14
timburkei *think* it'd be reasonable to reap the t10 queue entry based on the t5 tombstone being newer than the t2 enqueue-time. but it also seems preferable to avoid the delete until we actually know that we want to delete it21:16
timburke'cause i *also* think it'd be reasonable to reap the t5 queue entry based on a 412 that indicates the presence of a t2 .meta (since it's greater than the t1 enqueue-time)21:17
timburkeanyway, i've got a failing probe test at21:18
timburke#link https://review.opendev.org/c/openstack/swift/+/80340621:18
mattoliverGreat start 21:19
timburkeit gets a pretty-good split brain going on, with 4 replicas of an object, two with one delete-at time, two with another, and queue entries for both21:20
claygnoice21:21
clayglove the idea of getting those queue entries cleaned up if we can do it in a way that makes sense 👍21:21
timburkei'm also starting to work on a fix for it that makes DELETE with X-If-Delete-At look a lot like a PUT with If-None-Match -- but it seems like it may get hairy. will keep y'all updated21:21
claygtimburke: just do the HEAD and DELETE to start - then make it fancy21:22
clayg"someday"21:22
clayg(also consider maybe not making it fancy if we can avoid it)21:22
timburkeit'd have to be a HEAD with X-Newest, though -- which seems like a pretty sizable request amplification for the expirer :-(21:23
claygit doesn't *have* to be x-newest - you could just use direct client and get all the primaries in concert21:24
claygthe idea is you can't make the delete unless everyone already has a matching x-delete-if-match21:24
timburkei'll think about it -- seems like i'd have to reinvent a decent bit of best_response, though21:26
timburkenext up21:26
timburke#topic last primary table21:26
timburkethis came up at the last PTG, and i already see it's a topic for the next one (thanks mattoliver!)21:27
timburkemattoliver even already put a patch together21:27
timburke#link https://review.opendev.org/c/openstack/swift/+/79055021:27
mattoliverThanks for the reviews lately timburke 21:28
timburkei just wanted to say that i'm excited about this idea -- it seems like the sort of thing that can improve both client-observable behaviors and replication21:28
zaitcevVery interesting. That for_read, is it something proxy can use too?21:29
zaitcevRight, I see. Both.21:29
zaitcevSo, where's the catch? How big is that array for a 18-bit ring with 260,000 partitions?21:30
mattoliverIn my limited testing and as you can see in its follow ups it makes a post rebalance reconstruction faster and less CPU bound. 21:30
timburkebasically, it's an extra replica's worth of storage21:30
timburke /ram21:30
mattoliverYeah, so you ring grows an extra replica basically. 21:30
kotainteresting21:31
timburkeand with proxy plumbing, you can rebalance 2-replica (or even 1-replica!) policies without so much risk of unavailability21:32
mattoliverAlso means on post rebalance we can take last primaries into account and get built in handoffs first (or at least for last primaries). Which is why I'm playing with the reconstructor as a follow-up. 21:34
timburke👍21:35
timburke#topic open discussion21:35
timburkethose were the main things i wanted to bring up; what else should we talk about this week?21:35
claygThere was that ML thread about the x-delete-at in the past breaking EC rebalance because of old swift bugs.21:36
claygMoral: upgrade!21:37
timburkezaitcev, looks like you took the DNM off https://review.opendev.org/c/openstack/swift/+/802138 -- want me to find some time to review it?21:41
mattoliverJust an update, I had a meeting with our SREs re the tracing request patches, they gave some good improvements they'd find useful.. next I plan to do some bench marks to see if it effects anything before I move forward on it. 21:42
timburkemattoliver and acoles, how are we feeling about the shard/storage-policy-index patch? https://review.opendev.org/c/openstack/swift/+/80074821:42
timburkenice!21:43
zaitcevtimburke: I think it should be okay.21:44
acolestimburke: I need to look at the policy index patch again since mattoliver last updated it21:45
zaitcevtimburke: Some of the "zero" tests belong into system reader. I was thinking about factoring them out, but haven't done that. It's not hurting anything except my sense of symmetry.21:45
mattoliverI moved the migration into the replicatior, so there is a bit of new code there, but means we can migrate shards spi before enqueued reconiler (but it still happens in the sharper too). So take a look and we can decide where to do it.. or maybe both.21:45
zaitcevI wish people looked at this though... it's the first step of the mitigation for stuck updates: https://review.opendev.org/c/openstack/swift/+/74379721:46
zaitcevI'll take a look at 790550 and 803406.21:48
mattoliverThere is then a follow up to the shard spi migration and that's to get shard containers to respond to GET with the policy supplied to it (if one is supplied) so a longer tail spi migration doesn't effect root container GETS. A shard is an extension of its root, and happily takes objects with a different spi (supplied by the root) so makes sense it should return them on get too.21:49
acolesmattoliver: does that need to be a follow-up? does it depend on the other change?21:50
mattoliverNo it doesn't..  but wanted to test it with clays probe test he wrote :)21:50
acolesoic21:51
mattoliverSo ca n move it off there :) the follow up still needs tests so will do that today. I could always steal clays probe test and change it for this case :) 21:51
acolesI'll try to catch up on those patches tomorrow21:51
mattoliverJust was useful while writing :) 21:51
acolesclayg has a habit of being useful :)21:52
clayg😊21:53
timburkezaitcev, i'll take a look at https://review.opendev.org/c/openstack/swift/+/743797 -- you're probably right that we're in no worse situation than we already were. i might push up a follow-up to quarantine dbs with hash mismatches21:53
timburkeall right, we're about at time21:55
timburkethank you all for coming, and thank you for working on swift!21:55
timburke#endmeeting21:55
opendevmeetMeeting ended Wed Aug  4 21:55:57 2021 UTC.  Information about MeetBot at http://wiki.debian.org/MeetBot . (v 0.1.4)21:55
opendevmeetMinutes:        https://meetings.opendev.org/meetings/swift/2021/swift.2021-08-04-21.00.html21:55
opendevmeetMinutes (text): https://meetings.opendev.org/meetings/swift/2021/swift.2021-08-04-21.00.txt21:55
opendevmeetLog:            https://meetings.opendev.org/meetings/swift/2021/swift.2021-08-04-21.00.log.html21:55

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