Skip to content

Add SwappableObjectStore for runtime client reconfiguration#4464

Open
andrewn6 wants to merge 2 commits intorestatedev:mainfrom
andrewn6:main
Open

Add SwappableObjectStore for runtime client reconfiguration#4464
andrewn6 wants to merge 2 commits intorestatedev:mainfrom
andrewn6:main

Conversation

@andrewn6
Copy link

@andrewn6 andrewn6 commented Mar 9, 2026

Summary

  • Adding SwappableObjectStore, an ObjectStore wrapper, supports atomically swapping the inner store at runtime
  • Enabled future work to pick up S3 Credentials/endpoint & changes from config file without a process restart

Design

  • SwappableObjectStore wraps Arc<dyn ObjectStore> inside an ArcSwap and delegates all 10 ObjectStore trait methods. Each method calls load_full() to get an owned Arc that is safe to hold across .await points and in returned streams.

This tackles issue: #3615

ran fo

A few notes:

  • This is just a foundational piece on how we could potential approach this, once agreed on we'd need to wire into consumers and adding a config watcher (not sure if there's a sub-issue of this), probably could be a seperate PR..
  • No unit test, happy to add one using InMemory stores if wanted!

@github-actions
Copy link

github-actions bot commented Mar 9, 2026


Thank you for your submission, we really appreciate it. Like many open-source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution. You can sign the CLA by just posting a Pull Request Comment same as the below format.


I have read the CLA Document and I hereby sign the CLA


You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot.

@andrewn6
Copy link
Author

andrewn6 commented Mar 9, 2026

I have read the CLA Document and I hereby sign the CLA

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant