Is your feature request related to a problem or challenge? Please describe what you are trying to do.
We wrap object stores in SlateDB. We plan to use Extensions to send information from the upper (wrapper) layers down into the lower stores. For example, we have a caching object store and we tell the object store if we're retrying because of a failed decode (i.e. the data is corrupt) so the caching object store can drop its copy and re-fetch.
It would be nice to have object stores be able to set extensions in their results as well. For example, the caching object store might signal whether the read was a cache hit or cache miss (or partial hit/partial miss). There doesn't seem to be a way to do this right now.
Describe the solution you'd like
I'd like to be able to set Extensions in GetResult, PutResult, ListResult, and PaginatedListResult.
It would be nice to be able to do this for deletes and head as well, but I see a DeleteResult/HeadResult aren't returned right now.
Describe alternatives you've considered
We are currently considering providing a wrapper supplier API in slatedb/slatedb#1761:
- User provides raw object store
- We wrap the object store in a retrying object store wrapper and instrumented object store wrapper
- We call "wrap" on our wrapped object store to allow the user to wrap it in their cached implementation.
This is a pretty poor user experience.
Is your feature request related to a problem or challenge? Please describe what you are trying to do.
We wrap object stores in SlateDB. We plan to use Extensions to send information from the upper (wrapper) layers down into the lower stores. For example, we have a caching object store and we tell the object store if we're retrying because of a failed decode (i.e. the data is corrupt) so the caching object store can drop its copy and re-fetch.
It would be nice to have object stores be able to set extensions in their results as well. For example, the caching object store might signal whether the read was a cache hit or cache miss (or partial hit/partial miss). There doesn't seem to be a way to do this right now.
Describe the solution you'd like
I'd like to be able to set
Extensionsin GetResult, PutResult, ListResult, and PaginatedListResult.It would be nice to be able to do this for deletes and head as well, but I see a
DeleteResult/HeadResultaren't returned right now.Describe alternatives you've considered
We are currently considering providing a wrapper supplier API in slatedb/slatedb#1761:
This is a pretty poor user experience.