summaryrefslogtreecommitdiff
path: root/src/buildtool/storage
AgeCommit message (Collapse)Author
2024-07-22Pass HashFunction from StorageConfig to StorageMaksim Denisov
2024-07-22Store HashFunction in StorageConfigMaksim Denisov
2024-07-22Pass HashFunction to ArtifactDigest::CreateMaksim Denisov
2024-07-22Use HashFunction functionality via Instance()Maksim Denisov
...to track changes during refactoring easier.
2024-07-22Move ObjectCAS::CreateDigest to the private spaceMaksim Denisov
2024-07-19Add garbage collection routines for repository rootsKlaus Aehlig
2024-07-19Storage config: change layout to support several storage generationsKlaus Aehlig
2024-07-16TargetCache: Use StorageConfig instance for shardingPaul Cristian Sarbu
Instead of computing the shard based on the RemoteExecutionConfig singleton, use the already computed hash stored in the passed StorageConfig instance, which now needs to be set up separately if bootstrapping in order to avoid unwanted includes. Storing the backend description to CAS and corresponding audit checks now take place in main.
2024-07-16StorageConfig: Store also the execution backend description idPaul Cristian Sarbu
...such that it will be available to the TargetCache for sharing. Also, GC does not require remote execution information, so the logic for this subcommand is moved earlier in main.
2024-07-16Create separate library for DescribeBackendPaul Cristian Sarbu
2024-07-12Store newly spliced executables as copies.Maksim Denisov
During multithreaded splicing, the main process can be forked (inheriting open file descriptors). In this case, the executable file saved using hardlinking becomes inaccessible. To prevent this, executables must be stored as copies made in a child process.
2024-07-05Convert StorageConfig to a general classMaksim Denisov
2024-07-05Convert Storage to a general classMaksim Denisov
2024-07-05Call uplinking via UplinkerMaksim Denisov
... instead of static calls to GarbageCollector
2024-07-05Implement uplinking logic in a separate class.Maksim Denisov
2024-07-05Use StorageConfig with generation for initialization of Storage's generationsMaksim Denisov
...instead of std::filesystem::path. StorageConfig is extended to return paths of Storage's parts.
2024-07-05Pass Storage and StorageConfig to StorageUtils by referenceMaksim Denisov
2024-07-05Pass StorageConfig to GarbageCollectionMaksim Denisov
2024-07-05Pass StorageConfig to GarbageCollector::SharedLockMaksim Denisov
2024-07-05Use StorageConfig functionality via Instance()Maksim Denisov
...to track changes during refactoring easier.
2024-07-05Move functionality from StorageConfig to related classes.Maksim Denisov
2024-07-05Remove ConfigData from StorageConfigMaksim Denisov
...since it is an extra class that overcomplicates the config class.
2024-07-05Use a separate constructor for sharded TargetCacheMaksim Denisov
2024-07-01Reorder compatibility commands in CompactificationMaksim Denisov
2024-07-01Ensure unique paths are used in compactificationMaksim Denisov
2024-06-28Use (un)expected for CAS accessOliver Reiche
2024-06-11Move creation of TargetCacheKey description to TargetCacheMaksim Denisov
...to use corresponding Storage for storing auxiliary information.
2024-05-27Fix headers in local_cas and bazel_network.Maksim Denisov
2024-05-27Use common interface for stream dumpingMaksim Denisov
...in LocalApi and BazelApi.
2024-05-27Use common interface for reading tree entries and leafsMaksim Denisov
...in LocalApi and BazelApi.
2024-05-02Use a named constant length for FileStorage directory namesMaksim Denisov
2024-04-30Compactification: Split files concurrently.Maksim Denisov
2024-04-30Compactification: Remove spliced files concurrently.Maksim Denisov
2024-04-30Compactification: Remove invalid files concurrently.Maksim Denisov
2024-04-30Compactification: Implement a generic concurrent logic.Maksim Denisov
2024-04-22Compactification: Remove invalid entries from the storage.Maksim Denisov
During compactification, invalid entries must be deleted.
2024-04-17Compactification: Split large entries.Maksim Denisov
During garbage collection split and remove from the storage every entry that is larger than a threshold.
2024-04-17Compactification: Remove spliced entries.Maksim Denisov
During garbage collection remove from the storage every entry that has the large entry.
2024-04-17Compactification: Obtain generation cache directories for compatibility modes.Maksim Denisov
2024-04-17Compactification: Obtain storage roots from LocalCAS.Maksim Denisov
2024-04-15LargeBlobs: Skip splicing of dependent objects during uplinking of AC, TC ↵Maksim Denisov
and trees.
2024-04-15LargeBlobs: Make LocalCAS::BlobPathNoSync public to fix synchronization of ↵Maksim Denisov
executable files during splitting.
2024-04-12file chunker: increase chunk sizesKlaus Aehlig
As we use chunking also for reducing storage, we have to consider the overhead of block devices which is in the order of kB per file. So our target chunk size should be at least 2 orders of magnitude above this. This suggests to minimally aim for a chunk size of 128kB, a target size that also has the advantage the that maximal chunk size associated with this size is 1MB which is still well below the maximal transmission size of grpc allowing us to avoid the streaming API. As we're scaling everything up by a factor of 16, we also have to increase the number of bits in the involved masks by 4. We use this to also extend the window size by using the 2 most significant octets. Following the advice of the paper proposing FastCDC to spread out the ones roughly equally suggests 0x4444 as a suitable value for the two most significant octets. We also change the suggested extension of the remote-execution API accordingly. As the precise parameters for FastCDC when announced over the remote-execution APIs are still under discussion upstream, we simplify the name to not mention the target size.
2024-04-12file chunker: remove average chunk size from interfaceKlaus Aehlig
... as the typical chunk size is mainly determined by the masks used internally. So, as long as we hard code them, we should be honest to ourselves and accept that the chunking parameters are hard-coded as well.
2024-04-08Use properly included standard library types by defaultPaul Cristian Sarbu
2024-04-02LargeBlobs: Splice large objects from external sources.Maksim Denisov
For splicing of large objects from external sources additional checks are performed: * The digest of the spliced result must be equal to the expected digest; * The parts of a spliced tree must be in the storage. Tested: * Regular splicing of large objects; * If the result is unexpected, splicing fails; * If some parts of a tree are missing, splicing fails.
2024-04-02LargeBlobs: Uplink large objects.Maksim Denisov
* Uplink parts of the large entry before entry itself; * Uplink large entries in LargeObjectCAS::GetEntryPath to not split things two times; * Promote spliced tree during uplinking of a large tree entry to properly promote parts of the tree; * Uplink large entries in LocalUplink{Blob, Tree} to support proper uplinking in Action Cache and Target Cache; Tested: * Uplink large blobs and trees; * Uplink a large object that depends on other large objects.
2024-04-02LargeBlobs: Splice large objects implicitly.Maksim Denisov
Implicitly reconstruct objects during regular uplinking of Blobs/Trees.
2024-04-02LargeBlobs: Split large objects.Maksim Denisov
* Add LargeObjectCAS fields for files and trees to LocalCAS; * Add logic for splitting objects located in the main storage. Tested: Splitting of large, small and empty objects.
2024-04-02LargeObjectCAS: Implement auxiliary class for storing error information.Maksim Denisov