[13.x] Add filesystem driver option for SQS overflow storage#60096
[13.x] Add filesystem driver option for SQS overflow storage#60096Orrison wants to merge 6 commits into
Conversation
Signed-off-by: Kevin Ullyott <ullyott.kevin@gmail.com>
Signed-off-by: Kevin Ullyott <ullyott.kevin@gmail.com>
…d on configuration Signed-off-by: Kevin Ullyott <ullyott.kevin@gmail.com>
Signed-off-by: Kevin Ullyott <ullyott.kevin@gmail.com>
Signed-off-by: Kevin Ullyott <ullyott.kevin@gmail.com>
Signed-off-by: Kevin Ullyott <ullyott.kevin@gmail.com>
fba3f79 to
16b2d0c
Compare
|
Apologies, it seems some of the CI jobs are failing with GitHub oauth token issues unrelated to my changes. I rebased pushed up a few times to hopefully get it to pass but one always seems to fail with this token error. If someone with the ability to do so could please re-run the failed jobs for me. I assume this may be related to #60095 |
8ca6b55 to
16b2d0c
Compare
|
Thank you @crynobone! |
|
I wonder if it's actually simpler to just have an S3 / |
Perhaps, but then you are bleeding cache stores and filesystem disks together a bit unnecessarily imo. And having to set up and deal with disk configuration that is already taken care of in filesystems. Though I guess since it uses Would this S3/disk cache driver be something first-party in the framework or are you suggesting that people that need this would make a custom one? |
Follow-up to #59734.
In the original PR I proposed offloading large SQS payloads to a filesystem disk (typically S3). Before merge that was changed over to cache stores. I asked in the PR comments whether you'd be open to making this configurable, and this is that PR. It adds a
driveroption underoverflowso people can pick betweencache(the current default) andfilesystem.A few reasons we want filesystem available:
The default stays
driver => 'cache', so nothing changes for anyone already using the feature as merged. (if that makes it out before and if this is merged)Config
When
driverisfilesystem, the queue writes the payload to the configured disk at{prefix}/{uuid}.jsonand stores that path in the SQS message body as the pointer. Workers read the payload back from the same disk.clear()also removes the overflow directory whendelete_after_processingis on.When
driveriscache, behavior is exactly what shipped in #59734.Tests
All existing cache-driver tests stay as-is. Filesystem mirrors added for:
always => trueclear()callsdeleteDirectorywhen cleanup is onclear()skips it when cleanup is offpop()forwards filesystem config to the job