buildgrid.server.cas.storage.with_cache module
WithCacheStorage
A storage provider that first checks a cache, then tries a slower fallback provider.
To ensure clients can reliably store blobs in CAS, only get_blob calls are cached – has_blob and missing_blobs will always query the fallback.
- class buildgrid.server.cas.storage.with_cache.WithCacheStorage(cache, fallback, defer_fallback_writes=False, fallback_writer_threads=20)
Bases:
StorageABC
- setup_grpc() None
- has_blob(digest)
Return True if the blob with the given instance/digest exists.
- get_blob(digest)
Return a file-like object containing the blob. Most implementations will read the entire file into memory and return a BytesIO object. Eventually this should be corrected to handle files which cannot fit into memory.
The file-like object must be readable and seekable.
If the blob isn’t present in storage, return None.
- delete_blob(digest)
Delete the blob from storage if it’s present.
- bulk_delete(digests: List[Digest]) List[str]
Delete a list of blobs from storage.
- begin_write(digest)
Return a file-like object to which a blob’s contents could be written.
- commit_write(digest, write_session)
Commit the write operation. write_session must be an object returned by begin_write.
The storage object is not responsible for verifying that the data written to the write_session actually matches the digest. The caller must do that.
- missing_blobs(digests)
Return a container containing the blobs not present in CAS.
- bulk_update_blobs(blobs)
Given a container of (digest, value) tuples, add all the blobs to CAS. Return a list of Status objects corresponding to the result of uploading each of the blobs.
Unlike in commit_write, the storage object will verify that each of the digests matches the provided data.
- bulk_read_blobs(digests)
Given an iterable container of digests, return a {hash: file-like object} dictionary corresponding to the blobs represented by the input digests.
Each file-like object must be readable and seekable.
- is_cleanup_enabled()
- set_instance_name(instance_name)
- get_capabilities()