summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2024-03-08just-mr: Fix "preferred hostnames"Oliver Reiche
... instead of replacing the host name of each mirror, it should only reorder the list of given mirrors.
2024-03-08mirrors: Implement SortByHostname routineOliver Reiche
2024-03-08CurlURLHandle: Add GetHostname routineOliver Reiche
2024-03-08just-mr: Normalize paths of Git file URLsOliver Reiche
... and ensure that paths starting with .// remain relative.
2024-03-08just-mr: Report fetch URLs on debug levelOliver Reiche
2024-03-08SystemCommand: Transfer outfile responsibility to callerOliver Reiche
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-07just-mr: Fix unguarded optional accessOliver Reiche
2024-03-07TmpDir: Getter should return const refOliver Reiche
... and prohibit moves and move assignments.
2024-03-07distdir setup: do not ask remote-excution endpoint for treeKlaus Aehlig
Asking the remote-exeuction endpoint for the tree means, that, upon success, we fetch every archive from the remote execution endpoint, even those that we could get from a provided distdir. As our preference is to only use the network if necessary, simply use the standard way of creating a distdir: create it locally and for each file, try to get it from local resources first, then from the remote-execution endpoint, and finally from other network resources.
2024-03-07Down-level log message for errors that can be handledKlaus Aehlig
We deliberately have many functions that do not abort the process on failure and instead simply return a corresponding value. It is then up to the caller to decide how to handle this failure; in particular, such a failure can be expected, e.g., if we try to fetch a file from remote execution first, before fetching it from the upstream location. To have a consistent user experience, nothing that can occur in a successfull build should be reported at error level; moreover, messages that routinely occur during successfull builds should not be reported at progress or above, except for the (stage) result messages and the progress reporter.
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-07just-mr fetch: Correctly report if no fetch requiredPaul Cristian Sarbu
2024-03-07absent_target_map: Improve log messagesPaul Cristian Sarbu
2024-03-07just-mr: Correctly pass client-side auth args to 'just'...Paul Cristian Sarbu
...also for 'analyse' and 'describe'.
2024-03-07just: 'analyse' and 'describe' require client-side authenticationPaul Cristian Sarbu
As these subcommands can access the serve endpoint, it is not enough anymore to just know the remote-execution endpoint, but one must also try to connect to it. Thus, the client-side authentication arguments need to be supported and read. The just.1 man page is also updated accordingly.
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-05foreign_file_git_map: add missing returnKlaus Aehlig
... after handling absent roots. Otherwise, we violate the condition of calling the setter precisely once.
2024-03-05Support fetching of foreign filesKlaus Aehlig
2024-03-05Support checkout of foreign-file reposKlaus Aehlig
2024-03-05Add a root_map for foreign-file reposKlaus Aehlig
2024-03-05serve client: add custom function to ask for a foreign-file rootKlaus Aehlig
2024-03-05fs_utils: specify path for foreign-file root cacheKlaus Aehlig
As the internal distdir data structure now supports the executable bit, it is also expressive enough to support foreign-file repositories. Hence we can use this cache, getting potentially more cache hits.
2024-03-05Add data structure for foreign-file rootsKlaus 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-29expressions: add kFalseKlaus Aehlig
2024-02-29archive_fetch_map: only have the actual archive content in the interfaceKlaus Aehlig
... as this is the only part this map depends on, and not the information on what to do with the archive, like style of unpacking, etc. In this way, this map will also be reusable for fetching foreign files.
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-29verify_hash utils: Clarify return value meaningPaul Cristian Sarbu
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-28Deduplicate parsing of archive descriptionsKlaus Aehlig
2024-02-27just-mr: Correct handling of remotes with respect to compatibility modePaul Cristian Sarbu
In order to set up roots, just-mr is able to interrogate, if given, serve and/or remote-execution endpoints. However, just-mr operates only with Git hashes, i.e., with a native mode CAS. This commit ensures the correct interactions occur between just-mr and the provided endpoints not only in native mode, but also in comaptible mode, where a serve endpoint might be present even if one cannot make use of its associated remote-exection endpoint. The user always gets informed if any incompatibilities are detected.
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-27just-mr: Fix correct CAS storage location is usedPaul Cristian Sarbu
just-mr should always operate with the CAS location corresponding to the native protocol, i.e., using Git hashes. This way all the checks and transactions between local CAS and the Git cache are correct. The commit fixes the issue by ensuring we don't set globally the compatibility mode or hashing function if being passed the --compatible flag, as this flag should only be used to check comaptibility with any given remote endpoint and not affect the local CAS location used by just-mr.
2024-02-27commit_git_map: Proper handling of file associationPaul Cristian Sarbu
This commit fixes the invariant that a file association between a Git commit and the root tree should only be set if that tree is found in our own Git cache. This ensures consistency between present and absent roots and in the interaction with the serve endpoint.
2024-02-27just-mr setup archive: Local roots require the archive blob to be local tooPaul Cristian Sarbu
For archive repositories we need to ensure that a non-absent root is backed by an archive content blob in the local CAS, in order to also keep the proper root tree file associations. This change also simplifies the content_cas_map logic by removing the previous separation of implementation logic between fetching and setting up the workspace root.
2024-02-26Employ blob splitting and splicing for endpoint dispatchingSascha Roloff
2024-02-26Implement blob splitting in local APISascha Roloff
2024-02-26Implement blob splicing protocol at just client sideSascha Roloff
2024-02-26Implement blob splicing protocol at just server sideSascha Roloff
2024-02-26Implement blob chunking algorithm negotiationSascha Roloff
2024-02-26Unify error logging in just execute BatchUpdateBlobsSascha 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-26Rename constant for just-internal hash lengthSascha Roloff
2024-02-26Remove upper and lower bounds for FastCDC random-number generationSascha Roloff
2024-02-26Initialize file chunker in mainSascha Roloff
2024-02-22Executor: in case of a failing action also report originKlaus Aehlig
... if provided. This might help users to find the correct place in their code base causing the action to fail.