summaryrefslogtreecommitdiff
path: root/src/buildtool/serve_api
AgeCommit message (Collapse)Author
2024-03-08just-mr: Fix shell out executionOliver Reiche
... by avoiding reusing temp dirs for execute. While we are at it, also refactor LocalFetchViaTmpRepo() to create its own empty temp dirs, that cannot be reused by the caller.
2024-03-07serve target: Improved log messagesPaul Cristian Sarbu
2024-03-07serve target: Use CopyFrom to populate Digest message fieldsPaul Cristian Sarbu
2024-03-07exceptions handling: small improvementsPaul Cristian Sarbu
It is better to avoid empty catches when we have a reasonable way to log an (even unlikely) exception, even more so if memory allocations are involved.
2024-03-05distdir serving: do not confuse hashesKlaus Aehlig
When just serve has to create a distdir from files known to it, there are two kind of hashes involved. - The requests, as well as the resulting tree always refer to git identifiers. - Additionally, files can be stored in the local CAS of the serve instance. This CAS might use a different hash, e.g., plain sha256. Therefore, we cannot simply forward the hash from the request to a lookup in our local CAS; fortunately, when we add a file to the local CAS, we are told the value of the applicable hash, represented as bazel digest, hence we can simply remember essentially this value (converting it to unprefixed form when running in native mode, as in the following we need the hash as it is part of an artifact digest).
2024-03-05serve client: add custom function to ask for a foreign-file rootKlaus Aehlig
2024-03-04serve protocol: support executable distfilesKlaus Aehlig
As serve and just-mr share their caching of description-tree association, we also have to change this cache. Thanks to json encoding before hashing, we know that the old and new hash keys do not overlap, so the change is save. As distdirs also keep the respective files in the git root, no new downlaoding will happen either, hence no warning in the CHANGELOG is needed.
2024-02-29just-mr and serve: Extend use of noexcept specifierPaul Cristian Sarbu
The just serve client-side and API methods, as well as just-mr utilities should use the noexcept specifier.
2024-02-29serve source tree: Do not sync trees with the remote if in compatible modePaul Cristian Sarbu
2024-02-29serve source tree: Fix bugs and inconsistencies in remote syncPaul Cristian Sarbu
Firstly, in ServeDistdirTree the tree of a distdir should be synced from the corresponding witnessing Git repository (as is the case with all root trees), but was wrongly trying to sync from the local CAS. Secondly, a status of SYNC_ERROR, according to the protocol, must always ensure the tree field is set, but some setter calls were missing. Thirdly, ServeContent and ServeTree failed to report on successfully syncing to remote if the blob or tree, respetively, were uploaded from the local CAS. Lastly, ServeDistdirTree contained some legacy code sections and comments that were superfluous. This commit fixes these issues.
2024-02-27just serve: Add request to report compatibility status of endpointPaul Cristian Sarbu
This request is needed by just-mr in order to verify that it can use a provided serve endpoint when setting up the repository roots.
2024-02-16async maps: Create utility library to handle cycle detectionPaul Cristian Sarbu
2024-02-16serve target: Upload also the artifacts to remote CAS after orchestrated buildPaul Cristian Sarbu
2024-01-31just serve: Cleanup logging to remove tool namePaul Cristian Sarbu
Also cleans up the logging when parsing the serve service configuration file.
2024-01-31just-mr: Failure in serve api root tree requests should be fatalPaul Cristian Sarbu
The requests to retrieve the tree of a commit, archive, or distdir also set up those trees in a way that the serve endpoint can later build against them, besides allowing just-mr to set up roots locally. Therefore, if the witnessing entity (Git commit, content blob, or distdir, respectively) is known to the serve endpoint, then failing to set up the root tree there should result in a failure also of the just-mr setup on the client side.
2024-01-31serve source tree: Increase server-side granularity in response statusesPaul Cristian Sarbu
For archives and Git repositories we should ensure that not finding the witnessing entity (archive content blob or Git commit, respectively) results in a distinct status in the response to a request that sets up roots on the serve endpoint. This will allow just-mr to better handle its interaction with the serve endpoint.
2024-01-31dispatch file parsing: Improve std::variant usagePaul Cristian Sarbu
2024-01-26serve source tree: Client-side and API implementations of to_git ↵Paul Cristian Sarbu
pragma-related RPCs
2024-01-26serve source tree: Server-side implementation of to_git pragma-related RPCsPaul Cristian Sarbu
2024-01-26just_serve.proto: Extend SourceTree with to_git pragma-related requestsPaul Cristian Sarbu
2024-01-26serve source tree: Distdir tree should end up in Git cachePaul Cristian Sarbu
The purpose of the requests for the tree of an archive, commit, or distdir also includes making those trees available for future builds on the serve endpoint, which currently means being in a known Git repository. This commit ensures the distdir tree reqeust also includes the import of the resulting tree from CAS into the Git cache (if the tree is not already in a Git repsoitory).
2024-01-09Refactor GraphTraverser to take in platform properties and dispatch listPaul Cristian Sarbu
In order for the serve endpoint to correctly dispatch a build to the correct remote-execution endpoint, the platform properties and dispatch list for a build need to be passed explicitly to the executor (via the graph traverser instance) instead of always being taken from the RemoteExecutionConfig struct. This commit implements these changes, including updating existing tests accordingly.
2024-01-08serve distdir tree: Client-side and API implementationsPaul Cristian Sarbu
2024-01-08serve distdir tree: Server-side implementationPaul Cristian Sarbu
2024-01-08just_serve.proto: Add 'tree of a distdir' requestPaul Cristian Sarbu
2024-01-08serve content or tree: Check for Git object also in local CASPaul Cristian Sarbu
2024-01-08serve source tree: Improve log messages when sync with remote failsPaul Cristian Sarbu
2024-01-08serve archive tree: Add missing check for content in local CASPaul Cristian Sarbu
When serving the tree of an archive, we should check also in the local CAS for the content blob.
2024-01-08serve configuration client: Fix logger namePaul Cristian Sarbu
2023-12-21serve target handling: store blobs also locallyKlaus Aehlig
... before trying to upload from local storage to the remote CAS. Co-authored-by: Alberto Sartori <alberto.sartori@huawei.com>
2023-12-21ServeTarget: downgrade log level to performanceKlaus Aehlig
The error log level should be reserved for events that inevitably lead to a failed build. A failure to receive a target from the serve endpoint, however, is not such a case; for performance reasons, and also to have the same artifacts as everyone else in the case of non-reproducible dependencies, just inquires the serve end point for every export target whenever a serve end point is given. In this case, the build just continues even if the serve end point is, e.g., lacking a certain root.
2023-12-14just serve target description: Client-side and API implementationPaul Cristian Sarbu
2023-12-14just serve target description: Server-side implementationPaul Cristian Sarbu
2023-12-14just_serve.proto: Add rpc to serve description of an export targetPaul Cristian Sarbu
2023-12-14just serve target: Add clarifying comment in shard computationPaul Cristian Sarbu
2023-12-12just serve: Implement a progress reporting infrastructurePaul Cristian Sarbu
This commit simply defines the logic needed for progress reporting.
2023-12-12serve target: Update client-side to add execution configuration fields to ↵Paul Cristian Sarbu
request
2023-12-12serve target: Update server-side to compute correct target cache shardPaul Cristian Sarbu
2023-12-12just_serve.proto: Update serve target requestPaul Cristian Sarbu
The request should only be restricted to the minimal information needed by the remote to answer it. In particular, the execution endpoint address should not be transmitted.
2023-12-12just serve: Fix handling of missing remote execution endpointPaul Cristian Sarbu
Only the client needs to make sure that the remote execution endpoint is set in the case 'just serve' acts also as 'just execute', i.e., when a remote execution endpoint is not specified, while for setting up the serve server a missing execution endpoint should remain unset.
2023-12-12serve configuration: Fix remote execution check to allow unset valuePaul Cristian Sarbu
In the scenario when 'just serve' acts as 'just execute', the remote execution endpoint returned by the serve service should be allowed to be empty. In this case, from the server's perspective, there is nothing to be checked, however a client might still want to ensure that its own configured serve and execution endpoints match.
2023-12-12serve target: Move server-side helper methods in own libraryPaul Cristian Sarbu
2023-12-12serve target: Use consistent scope resolution in grpc callsPaul Cristian Sarbu
2023-12-07just serve: Implement client-side ServeTree and extend serve APIPaul Cristian Sarbu
2023-12-07just serve: Implement server-side ServeTree RPCPaul Cristian Sarbu
2023-12-07source_tree.cpp: Fix wrong path in log messagePaul Cristian Sarbu
2023-12-07just_serve.proto: Add rpc to serve known tree and sync it to remote CASPaul Cristian Sarbu
2023-12-06just serve: make tc write strategy configurableKlaus Aehlig
2023-12-05just serve: Orchestrate remote build for uncached export targetsPaul Cristian Sarbu
2023-12-05serve target client: Ensure repository key blob is also in remote CASPaul Cristian Sarbu