summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/local
AgeCommit message (Collapse)Author
2024-07-05Pass StorageConfig and Storage to LocalApiMaksim Denisov
2024-07-05Use StorageConfig functionality via Instance()Maksim Denisov
...to track changes during refactoring easier.
2024-07-04Mark more constructors 'explicit'Paul Cristian Sarbu
Since c++17 the 'explicit' keyword has use also for constructors with more than one argument and it is recommended to use it by default whereever implicit conversions are not expected bahaviour.
2024-06-28Use (un)expected for CAS utilsOliver Reiche
2024-06-27Use a raw pointer for passing optional RepositoryConfigMaksim Denisov
...instead of std::optional<gsl::not_null<RepositoryConfig const*>>.
2024-06-27Use a raw pointer for passing optional IExecutionApiMaksim Denisov
...instead of std::optional<gsl::not_null<IExecutionApi const*>>
2024-06-25Introduce a type allias for an optional ptr to IExecutionApiMaksim Denisov
...and replace verbose constructions.
2024-06-25Pass IExecutionApi to IExecutionApi by referenceMaksim Denisov
...instead of not_null const ptr.
2024-06-25Mark IExecutionApi's methods constantMaksim Denisov
2024-06-07Remove unused codeMaksim Denisov
2024-06-07Remove unused code.Maksim Denisov
IExecutionApi::UploadFile was introduced to handle adding of a temporary file to the storage. The call was redirected to LocalCAS internal methods that do the similar thing, so this virtual method can be removed.
2024-06-04blob containers: Store and upload taking into account content sizePaul Cristian Sarbu
Update logic populating containers to use the new method which is aware of the maximum transfer limit.
2024-05-28Use shared_ptr for data in ContentBlobMaksim Denisov
...to reduce the "price" of copying.
2024-05-28Use ArtifactBlobContainer in IExecutionApiMaksim Denisov
...instead of BazelBlobContainer to not bring bazel_re::Digest to IExecutionApi.
2024-05-28Move blob_tree to the common stage since it is used only there.Maksim Denisov
2024-05-28Rename BlobContainer to BazelBlobContainerMaksim Denisov
2024-05-28Use TransformedRange in BlobContainerMaksim Denisov
...instead of various iterators.
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-23Execution APIs: Extract common implementation into separate libraryPaul Cristian Sarbu
This reduces the code duplication between the local and bazel APIs and improves code maintainability.
2024-05-17RepositoryConfig: Instance should not be changed once populatedPaul Cristian Sarbu
Once a RepositoryConfig instance gets populated, it must never be changed again. Therefore, all functions accepting these instances should only take them as pointers to const.
2024-04-02LargeBlobs: Use LocalCAS methods to implement split-splice logic of CASUtils.Maksim Denisov
2024-03-26Add missing system includesPaul Cristian Sarbu
Main culprits: - std::size_t, std::nullptr_t, and NULL require <cstddef> - std::move and std::forward require <utility> - unordered maps and sets require respective includes - std::for_each and std::all_of require <algorithm>
2024-03-15Clean up more includes and targetsPaul Cristian Sarbu
Some of the more specific issues addressed: - missing log_level target/include - header-only libs wrongly marking deps as private - missing/misplaced gsl includes
2024-03-08SystemCommand: Transfer outfile responsibility to callerOliver Reiche
2024-02-26Implement blob splitting in local APISascha Roloff
2024-02-26Implement blob splicing protocol at just server sideSascha Roloff
2024-02-26Refactor split and splice implementations.Sascha Roloff
Currently, the implementations of the split and splice operation are both hidden behind the Bazel API implementation. This was sufficient to implement splitting at the server and splicing at the client. In order to support the other direction of splitting at the client and splicing at the server while reusing their implementations, the code needs to be refactored. First, the functionality of split and splice are explicitly exposed at the general execution API interface and implemented in the sub APIs. Second, the implementations of split and splice are factored into a separate utils class.
2024-02-13local_api: also for retrieve to memory, consult git api as fallbackKlaus Aehlig
2024-01-24just: Wrap IExecutionApi raw pointer argumentsPaul Cristian Sarbu
...in accordance to our coding style.
2023-12-12Filesystem: Fix copy overwrite of symlink with fileOliver Reiche
... and improve log messages in case of failure.
2023-11-30Resolve inconsistencies in third-party headers include formatPaul Cristian Sarbu
2023-11-30local API: Implement upload fileKlaus Aehlig
... overriding the default implementation. In this way, files can be added directly to the local CAS without having to completely reside in memory.
2023-11-27Refactoring RepositoryConfigPaul Cristian Sarbu
With the introduction of 'just serve', export targets can now be built also independently from one another based on their corresponding minimal repository configuration, as stored in the target cache key. In this context, this commit changes the RepositoryConfig usage from one global (static) instance to pointers passed as necessary throughout the code.
2023-11-22LocalAction: Fix staging of empty treesOliver Reiche
2023-11-22Implement blob splitting protocol on just client sideSascha Roloff
2023-08-24Execution: only take complete actions from cacheKlaus Aehlig
... which are only actions that, besides giving exit code 0 also created all the outputs they promised to.
2023-08-08just execute: Fix uncollected upwards symlinksPaul Cristian Sarbu
Upwards symlinks should still be collected from actions, even if only the non-upwards symlinks are supported artifact types. The client side is thus the one responsible with enforcing the non-upwardness condition.
2023-07-27Execution API: support fetching a single artifact to memoryKlaus Aehlig
2023-07-21bugfix: stage symlinks as symlinks when creating an action directoryAlberto Sartori
Before this patch, when creating an action directory, symlinks were staged as regular files.
2023-07-03local API: Fix bug in uploading missing artifactsPaul Cristian Sarbu
A recent change made it so that the artifact type was wrongly being taken into account when deciding whether the CAS entry of the artifact would be read or not. This meant that non-file artifacts would be skipped from their content being read, resulting in missing CAS artifacts being reported. This fixes the issue by reverting the offending change.
2023-06-28Update remote execution api to preliminary version v2.3Sascha Roloff
In preparation for the introduction of our blob splitting protocol as extension to the remote execution api, we need to update the used remote execution api to a more recent version than v2.0.0. Since no new tags are available right now, we update to the preliminary protocol version v2.3 according to the following discussion: https://github.com/bazelbuild/remote-apis/issues/253
2023-06-26Allow non-upwards symlinks with local APIPaul Cristian Sarbu
2023-06-26Execution response: Add output symlink pathsPaul Cristian Sarbu
2023-06-26bazel_msg_factory: Allow non-upwards symlinks in uploaded treesPaul Cristian Sarbu
2023-06-06style: Use designated initializersPaul Cristian Sarbu
This feature has been introduced with C++20.
2023-05-23Storage config: also specify the location of the execution rootKlaus Aehlig
As local execution is tightly coupled to storage, also specify the layout in the storage configuration. In this way, we have a central place specifying the layout of just's cache directory and avoid accidentally getting into conflicting situations. While there, also move the execution root under the generation regime, to ensure that left-over execution directories (e.g., after a forceful termination of the program) eventually get cleaned up by garbage collection.
2023-04-26imports: Switch to Microsoft GSL implementationOliver Reiche
... with two minor code base changes compared to previous use of gsl-lite: - dag.hpp: ActionNode::Ptr and ArtifactNode::Ptr are not wrapped in gsl::not_null<> anymore, due to lack of support for wrapping std::unique_ptr<>. More specifically, the move constructor is missing, rendering it impossible to use std::vector<>::emplace_back(). - utils/cpp/gsl.hpp: New header file added to implement the macros ExpectsAudit() and EnsureAudit(), asserts running only in debug builds, which were available in gsl-lite but are missing in MS GSL.
2023-04-04local API: fall back to git api, if availableKlaus Aehlig
2023-04-04CAS: demote log messages of to debugKlaus Aehlig
As those functions indicate success, it is up to the caller to decide if the error was fatal or not. Reporting an error nevertheless might result in error messages on successful operaitons, which is confusing for the user.