Introduce CopyOnReadInputStream with CachedBlobContainer #59872
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request introduces a new
CachedBlobContainer
along with aCopyOnReadInputStream
inner class.The
CachedBlobContainer
is aimed to become a new cache layer on top ofSearchableSnapshotDirectory
's blob containers. In the future, itsreadBlob()
method should be able to poll a cache in order to retrieve cached blobs to read. In the case a blob is not in cacheCachedBlobContainer
should read the blob from the remote blob store repository and then adds the blob to the cache.This is where
CopyOnReadInputStream
plays a role: while reading theInputStream
from the remote repository this class copies the first N bytes to an internal byte array (recycled through BigArrays). The copied bytes are then provided back to acloseInternal()
method when the originalInputStream
is closed. In the future, this is where the copied bytes should be added to the blob store cache (as newly indexed documents).