Wednesday, 2024-01-03

opendevreviewDavid Hauer proposed openstack/python-swiftclient master: make setup dependencies discoverable  https://review.opendev.org/c/openstack/python-swiftclient/+/90454704:42
opendevreviewDavid Hauer proposed openstack/python-swiftclient master: Remove duplicate script entry leading to broken wheel build  https://review.opendev.org/c/openstack/python-swiftclient/+/90454805:17
opendevreviewASHWIN A NAIR proposed openstack/python-swiftclient master: Support part-num in python swiftClient  https://review.opendev.org/c/openstack/python-swiftclient/+/90202017:05
opendevreviewASHWIN A NAIR proposed openstack/swift master: slo: part-number=N query parameter support  https://review.opendev.org/c/openstack/swift/+/89457019:17
opendevreviewClay Gerrard proposed openstack/swift master: s3api: Support GET/HEAD request with ?partNumber  https://review.opendev.org/c/openstack/swift/+/89458019:19
opendevreviewClay Gerrard proposed openstack/swift master: s3api: unify enforcement of configured max part num  https://review.opendev.org/c/openstack/swift/+/90423419:19
opendevreviewAlistair Coles proposed openstack/swift master: sq: don't lie about max part number constraint  https://review.opendev.org/c/openstack/swift/+/90449719:19
opendevreviewAlistair Coles proposed openstack/swift master: Delete s3api MPU segments when the manifest expires  https://review.opendev.org/c/openstack/swift/+/80070119:20
opendevreviewAlistair Coles proposed openstack/swift master: s3api: add API support for optional bucket inventory  https://review.opendev.org/c/openstack/swift/+/83593819:20
opendevreviewMerged openstack/swift master: Document allowed_digests for formpost middleware  https://review.opendev.org/c/openstack/swift/+/90432520:18
kotagood morning and a happy new year20:58
acoleskota: happy new year21:00
kotaacoles: o/21:01
acolesI spoke to timburke earlier - he's done with jury duty and was planning to be here21:03
acoleswho else is here for the swift meeting?21:04
jianjianhappy new year21:04
acolesjianjian: o/21:04
jianjianme :-)21:04
kotao/21:04
acolesok let's make a start21:05
acoles#startmeeting21:05
opendevmeetacoles: Error: A meeting name is required, e.g., '#startmeeting Marketing Committee'21:05
acoles#startmeeting swift21:05
opendevmeetMeeting started Wed Jan  3 21:05:14 2024 UTC and is due to finish in 60 minutes.  The chair is acoles. Information about MeetBot at http://wiki.debian.org/MeetBot.21:05
opendevmeetUseful Commands: #action #agreed #help #info #idea #link #topic #startvote.21:05
opendevmeetThe meeting name has been set to 'swift'21:05
acolesI did volunteer to chair in Tim's absence. I've missed a couple of previous meetings, but I can at least offer some updates on stuff I've been involved with recently21:06
timburkeoh! sorry -- lost track of time21:06
acolesthe agenda is here https://wiki.openstack.org/wiki/Meetings/Swift21:06
acolesaha! welcome back timburke 21:07
timburkei'll let you do your updates, though ;-)21:07
acolestimburke: can you give us an update on eventlet? I'll let you catch your breath though and start with s3api partNumber support21:08
timburke👍21:08
acoles#topic s3api partNumber21:08
acoleswe've been working on this for a while but feel like it's very close to being done21:09
acoles#link https://review.opendev.org/c/openstack/swift/+/89458021:09
acolesrecap: the partNumber API feature allows clients to GET or HEAD parts of a multipart upload21:10
acolesswift implements multipart uploads (MPUs) using SLO, so first we need to add support to SLO for GET and HEAD using a part number https://review.opendev.org/c/openstack/swift/+/89457021:11
acoles#link https://review.opendev.org/c/openstack/swift/+/89457021:11
acolesthen the s3api takes advantage of the new feature in SLO21:11
acolesalong the way we refactored the s3api unit tests to better separate the s3acl True/False test cases21:12
jianjianquite a patch, +1261 -40. one question, how do users know how many parts in one SLO object? before they issue s3api partnum HEAD/GET requests.21:13
acolesthere's a few pieces still to polish - s3 restricts the maximum nmber of parts to 10000, but swift made it configurable and it defaults to 1000, so we've tried to do the right thing in terms of matching error messages that state what the partNumber range should be https://review.opendev.org/c/openstack/swift/+/90449721:14
acolesjianjian: the s3api MPU etag includes the part number count, something like <etag>-<part count>, so clients can infer the number of parts from the etag21:15
timburkejianjian, fwiw i've seen s3 libraries do a GET with ?partNumer=1, then look at the response headers to see how many more concurrent download threads to kick off (one per part)21:15
jianjiani see, thanks.21:16
acolesunfortunately SLO does NOT have expose its part count in general (so only manifests uploaded via s3api have this form of etag) 21:16
acolesbut we could expose the part count from SLO as metadata in future (just not for existing objects IIUC)21:17
acolesok, that's probably enough said on that, watch this space for a merge soon 🤞21:19
jianjianokay, this is mainly for s3api21:19
acoles#topic container server GET namespaces21:20
acolesanother set of patches that are hopefully near completion!21:20
acolesthe patch chain starts with https://review.opendev.org/c/openstack/swift/+/890470 but we're planning to squash patches before merging21:21
acoles#link https://review.opendev.org/c/openstack/swift/+/89047021:21
acolesfor a while we have been using a more compact representation of shards when the proxy is caching them in memcache - we called this a Namespace - just has a name and lower/upper bounds\21:22
acolesthis next step is to use the compact Namespace format when the proxy fetches shard ranges from the container server21:23
jianjianyeah, the format stored in memcache only has name and lower21:23
acolesright, even more compact when serialized into memcache21:23
acolesso the container server GET grows support for a X-Backend-Record-Shard-Format header that can take value 'namespace', which will cause the container server to return a list of ... guess what... Namespaces :)21:25
acolesand the proxy changes to request this namespace format *when it wants shard ranges that will be cached*, since it only needs the compact form21:25
jianjianone note on the performance improvement, for a very large container which has >10K shards, a single query of all shard ranges into container DB will take more than 300 ms, but a query of all namespaces will only take about 80ms.21:27
acolesyes, so we've seen significant improvement in container GET request times with this change already in prod , where we have some very large containers with many shards21:28
timburkei'm starting to wonder if we should *require* shard range caching -- i seem to remember OVH noticing a regression in the no-cache path at one point; i don't think we have any gate tests that really functionally cover it...21:28
acolestimburke: the no cache path worries me a little - I do sometimes set the cache existence times to zero in my SAIO for probe tests, but not routinely I confess21:29
acolesBTW, that's the only way I know to exercise "no cache" path - you gotta have memcache in the pipeline for auth to work21:30
timburkeyeah, that's part of my thinking... though i suppose i could push on https://review.opendev.org/c/openstack/swift/+/861271 more to get fernet token support into tempauth21:31
acolesthe last patch in the chain (which may remain a separate patch) cleans up the proxy container GET path a lot, which may help reason about the two paths https://review.opendev.org/c/openstack/swift/+/90133521:31
acoles#Link https://review.opendev.org/c/openstack/swift/+/90133521:31
acoleshmmm, it'll be interesting to consider how we would enforce "sharding requires memcache", if that's what you mean21:32
timburkei mean, we already nearly require memcache for account/container info -- if you don't have it, you're going to be incredibly sad21:33
timburkemy thinking is mainly to formalize the dependency on memcache more21:33
jianjiangood point, we should do the same thing to shard range caching, it's much more expansive21:35
jianjianagree with acoles, 901335 can be a separate patch21:36
acolesremind, does zuul functional testing use a setup with memcache?21:37
timburkeiirc the dsvm jobs at least do; i think maybe the in-process tests use our FakeMemcache? i'm not actually entirely sure...21:38
timburkethey must have *some* way of storing/retrieving tokens...21:38
timburkesure enough, FakeMemcache: https://github.com/openstack/swift/blob/master/test/functional/__init__.py#L110-L11821:39
acolesok, maybe we can explore that more21:39
acoleslet's move on?21:39
acoles#topic eventlet21:40
clayghttps://github.com/NVIDIA/swift/blob/master/tools/playbooks/saio_single_node_setup/setup_saio.yaml#L11421:40
timburkeso, there's been a bunch of eventlet activity lately21:40
timburkeamong other things, including adding support for py310-py312!21:41
timburkewhich is all well and good, except when the powers that be went to update upper-constraints... our tests were failing with it21:41
timburke#link https://review.opendev.org/c/openstack/requirements/+/90414721:42
timburkethe fun thing, though, is that it wasn't a normal failure; it was a segfault!21:42
timburkei wrote up a bug for eventlet21:42
timburke#link https://github.com/eventlet/eventlet/issues/86421:42
timburkeand they wrote up a bug for cpython (since i didn't have time to get to that right then)21:43
timburke#link https://github.com/python/cpython/issues/11363121:43
timburkebut the response there was mostly "well, don't do that, then"21:43
jianjianhaha21:44
timburkethe good news is, there seems to be a new approach to greening existing locks for eventlet21:44
timburke#link https://github.com/eventlet/eventlet/pull/86621:44
timburkei'm going to try to put it through its paces, but so far it seems promising21:45
timburkebut it might have some implications for when we want to monkey-patch -- i remember us wanting to stop monkey-patching as an import side-effect, but we might need to21:46
timburkethe segfault in our unit tests was also independently reported21:46
timburke#link https://bugs.launchpad.net/swift/+bug/204776821:46
timburkeand since there are published eventlet packages out there that can trip the segfault, it seems like we probably want to do what we can to work around it21:47
timburkefortunately, i think there's just one spot where we actually for-realsy monkey-patch in tests, and if we mock it out, no segfault (at least, OMM)21:48
timburke#link https://review.opendev.org/c/openstack/swift/+/90445921:48
acolestimburke: "one spot where we actually for-realsy monkey-patch in tests" ... sorry, I'm probably being dumb, but how do we not do the monkey-patch in other unit tests21:50
acoles?21:50
jianjianis logging the only place in swift which use locks? if we can safely switch to no lock logging, maybe we don't need greening lock anymore21:50
timburkeacoles, i'm not actually entirely sure -- i think other tests involving run_wsgi etc. are exercising the error-checking before monkey-patching? or something. maybe i just got lucky21:52
timburkejianjian, there's definitely another lock in (unittest.)mock -- that's the one that started tripping the segfault. not sure about other places there may be locks lurking21:53
jianjiani see21:53
timburkeon the whole, though, i think it's yet more argument for us finding a way to get off eventlet -- writing cooperative code as though it's blocking doesn't seem long-term sustainable21:54
acolesok, thanks for the update timburke , and for keeping tabs on eventlet!21:55
timburkeor at least get off of monkey-patching? maybe if we were more explicit about things, it'd be better... though at that point, it'd probably be about the same effort to rewrite it all with asyncio21:56
acoleslast I read the community's long term plan is to move away from eventlet right?21:57
jianjianprobably so, at least to get off of monkey-patching21:57
timburkeyep -- and eventlet's long-term plan looks to be to move to some legacy/unmaintained status21:58
acoleswe have a couple of minutes, so...21:58
acoles#topic open discussion21:58
acolesanything else to discuss?21:58
timburkei think i'll spend a bit of time poking at the py312 test failures next21:58
acolesseems like we're done, so as is traditional...22:00
acolesthank you for coming and thank you for working on swift!22:00
acolesand happy new year22:00
acoles#endmeeting22:00
opendevmeetMeeting ended Wed Jan  3 22:00:37 2024 UTC.  Information about MeetBot at http://wiki.debian.org/MeetBot . (v 0.1.4)22:00
opendevmeetMinutes:        https://meetings.opendev.org/meetings/swift/2024/swift.2024-01-03-21.05.html22:00
opendevmeetMinutes (text): https://meetings.opendev.org/meetings/swift/2024/swift.2024-01-03-21.05.txt22:00
opendevmeetLog:            https://meetings.opendev.org/meetings/swift/2024/swift.2024-01-03-21.05.log.html22:00
timburkethanks for runnign the meeting acoles! sorry again for being late22:00
acolestimburke: NP, better late than never (even more appropriate in a world of eventual consistency :D )22:02
indianwhocodesauditing the whole meeting rn, sorry i missed the hour slot, happy new year everyone!22:06
opendevreviewASHWIN A NAIR proposed openstack/swift master: This change unifies the enforcement of the configured maximum part number using a single method to validate partNumber. While AWS has a limit of 10000 parts, Swift's limit is configurable and defaults to 1000.  https://review.opendev.org/c/openstack/swift/+/90423422:31
opendevreviewASHWIN A NAIR proposed openstack/swift master: s3api: unify enforcement of max part number and handle exceptions  https://review.opendev.org/c/openstack/swift/+/90423422:31

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