Граф коммитов

4478 Коммитов

Автор SHA1 Сообщение Дата
Pasindu Gunasekara 🍣 9f3784eade Merged PR 645101: Migrate cache, drop, and symbol authentication to MSAL
- This change will update bxl to use [MSAL.NET](https://www.nuget.org/packages/Microsoft.Identity.Client) for authentication.
- Update to a single implementation of the authentication code for cache, drop and symbol.
- Changes AAD prompt behaviour to prompt in a new browser window when silent authentication fails. This should eliminate the need for a PAT/credential provider on local builds.

Related work items: #1908175
2022-01-26 00:43:41 +00:00
CloudDev Build Account a617cfc797 New LKG 0.1.0-20220125.4 2022-01-26 00:21:26 +00:00
Semih Okur 5e1a2aae09 Merged PR 646175: ModuleAffinityLoadFactor for experimentation
When choosing a worker for a module, we need to fill the 2x capacity of the preferred worker before the next workers. Running a module in another worker can be expensive. That's why, we try to fill the double capacity for the first preferred worker. We did not experiment with the load factor for module affinity, so I want to do some abtesting to find a better load factor. We should find a sweet spot between end-to-end duration and the size of the materialized inputs.
2022-01-25 23:16:43 +00:00
Julian Bayardo 72f77ad575 Merged PR 645881: Adress ContractException in Azure ClusterState 2022-01-25 21:16:29 +00:00
Sergey Tepliakov cf31ba7a94 Merged PR 645191: Use memory-mapped files for secrets communication
The original implementation for out-of-proc casaas was based on environment variables that are visible to every user.

This PR uses memory-mapped files for communicating secrets with an ability to update them on the fly.

Related work items: #1908518
2022-01-25 19:20:36 +00:00
CloudDev Build Account 3e2e4b9e76 New LKG 0.1.0-20220122.0.1 2022-01-25 15:55:15 +00:00
Semih Okur b494225f07 Merged PR 646018: Create net6 packages for all runtimes (win, osx, linux) 2022-01-25 02:08:20 +00:00
Marcelo Lynch 🧉 bdcd17d50a Merged PR 645985: Update node-fetch to version 2.6.7
Update node-fetch to version 2.6.7

Related work items: #1911435
2022-01-24 22:36:47 +00:00
Oleksii Kononenko 91d501ea39 Merged PR 645918: Increase timeout for bxl-daemons handshake
Increase timeout for bxl-daemons handshake
2022-01-24 22:00:30 +00:00
Marcelo Lynch 🧉 9a28287c8b Merged PR 645694: Add pip description to events that are missing them
We make an effort to associate errors with the pips that generated them, but some events are missing a pip description / pip id which is needed for this association

Related work items: #1807760
2022-01-24 21:28:25 +00:00
Semih Okur e3080d4d57 Merged PR 645943: Add net6 nuget package to deployment 2022-01-24 20:13:20 +00:00
CloudDev Build Account a4f19ff829 New LKG 0.1.0-20220122.0 2022-01-24 17:25:56 +00:00
Pasindu Gunasekara 🍣 a0b932f63b Merged PR 645752: Return CtrlCCancellationFailure for cancelled TryMaterializeAsync calls
Related work items: #1908176
2022-01-23 06:06:36 +00:00
CloudDev Build Account be6b886860 New LKG 0.1.0-20220121.2 2022-01-22 06:07:56 +00:00
Semih Okur d58343484a Merged PR 645766: Add available content only when calculating setupcost is enabled in ChooseWorkerCpu
Add available content only when calculating setupcost is enabled in ChooseWorkerCpu
2022-01-22 05:45:57 +00:00
Julian Bayardo 10af96c498 Merged PR 645254: ClusterState in Azure
This PR adds support for changing the underlying storage of ClusterState from Redis to Azure Blob Storage. It does so by abstracting away the logic that updates ClusterState from LLS to a ClusterStateManager. The ClusterStateManager has a IClusterStateStorage which can be either Redis, Azure Storage, or a Transitional layer used just for the transition.

When in Transitional mode, machines are force registered in Azure Storage with the same machine mappings as set by Redis, and all operations are also executed in storage -albeit results are ignored-. This paves the way for moving to the storage-only mode, in which we only read from storage.

Related changes included in this PR:

- Removing of marking machines as active in MachineReputation and Event processing. The reason here is that doing so may cause incorrect decisions to be taken. For example, an completed copy cause machine A to report a good reputation on a machine B which has declared itself as inactive; this would lead machine A to believe B is up even when it isn't, which could cause a build failure if A made a decision to pin based on B's existence.
- Stop metadata service clients from reading the master machine location from ClusterState. Instead, they now read directly from the leader election mechanism. This both helps prevent staleness and simplifies the code.
- If Azure Storage Emulator is running locally, you're able to (manually) run all tests against it and they pass

Related work items: #1906346
2022-01-21 21:51:48 +00:00
Ankur A Sharma 7310891694 Merged PR 645365: Use EnvVar for Cache Encryption Cert Subject
Use Environment Variable for Cache Encryption Cert Subject

Related work items: #1874753
2022-01-21 19:26:45 +00:00
CloudDev Build Account 849b0e11dc New LKG 0.1.0-20220120.2 2022-01-21 06:46:25 +00:00
CloudDev Build Account a808fe9926 New LKG 0.1.0-20220118.3 2022-01-21 06:08:00 +00:00
Iman Narasamdya 94200cfeb0 Merged PR 645464: Retry pipe reading on Detours process injector
This PR is a continuation of !645124

We now see some failure on the process injector (https://stackoverflow.microsoft.com/questions/290064). So, we need to be able to retry the pipe reading there as well.
2022-01-21 03:34:16 +00:00
Semih Okur e7f3bd280a Merged PR 645400: Fix duration for async logging add overhead 2022-01-21 02:39:52 +00:00
Semih Okur e97b343d77 Merged PR 645561: Disable calculating setup cost and enable fireForgetMaterializeOutput by default
Calculating setup cost is expensive and it is not worth it. It was explicitly disabled for a lot of queues, now it is a good time to disable it by default in BuildXL.

We also enable fireForgetMaterializeOutput by default as it was explicitly enabled for all Office builds for a long time.
2022-01-21 02:05:01 +00:00
Iman Narasamdya 01a1ddf1fa Merged PR 645482: Disable multi threading in Robocopy
Our selfhost can get stuck with this error:
```
npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path E:\BuildXLInternalRepos\BuildXLInt1\Out\Objects\y\z\vq1azq50jol9tla83pntbqz0\node-build-src/package.json
npm ERR! errno -4058
npm ERR! enoent ENOENT: no such file or directory, open 'E:\BuildXLInternalRepos\BuildXLInt1\Out\Objects\y\z\vq1azq50jol9tla83pntbqz0\node-build-src\package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR!     E:\BuildXLInternalRepos\BuildXLInt1\Out\Objects\y\z\vq1azq50jol9tla83pntbqz0\npm-install-cache\_logs\2022-01-20T02_12_54_066Z-debug.log
```

It turns out that when `/MT` is used Robocopy miss copying some files, which in this case is `package.json`.
2022-01-20 23:46:29 +00:00
CloudDev Build Account 0d67aa947d New LKG 0.1.0-20220119.3 2022-01-20 18:16:45 +00:00
Semih Okur bbe54baf74 Merged PR 645337: Removing reader-writer lock from async logging queue
We do not really need a lock when adding events to the blocking collection for asynchronous logging. We can just change m_isAsyncLoggingEnabled to volatile, so we can guarantee that the updates to this field will be visible to all threads.

Related work items: #1859016
2022-01-20 03:24:43 +00:00
Serge Mera 4663518d2d Merged PR 645358: Update release notes
Update release notes
2022-01-20 01:11:08 +00:00
Iman Narasamdya 6e98d04ac1 Merged PR 645124: Retry async pipe reading on cancellation
In some builds, the pipe reading got cancelled in the middle of the builds. It is still unknown what caused the cancellation because none of BuildXL code (except the test code) performs cancellation on pipe reading. This PR tries to mitigate that issue by retrying the pipe reading when some unknown cancellation is requested. Since the cancellation is not requested by BuildXL itself, retrying pipe reading can increase reliability.

For now, this is an opt-in feature. QuickBuild may use this feature to handle issues in some of their customer build queues.
2022-01-19 23:30:52 +00:00
Marcelo Lynch 🧉 c0c95eda59 Merged PR 645136: Queue forwardable events in the worker and send them along with the pip results
- While a pip step is being processed in a worker, maintain a "pending events" queue associated to that pip (indexed by its semistable hash). Any raised events that are ready to be sent are added to that queue, which is disabled and drained when we're ready to report that pip's result.
- If an event can't be associated to an "active" message queue, it is sent immediately. This deals with the case where events are late and we already have sent the pip result.
2022-01-19 23:20:33 +00:00
Lance Collins 8ea3128177 Merged PR 645089: Allow restoring checkpoints in the background.
Allow restoring checkpoints in the background for global cache. This is to alleviate some of the time required to download all the files when switching masters.
2022-01-19 15:46:05 +00:00
Oleksii Kononenko 1688c146df Merged PR 645190: [drop] Respect GenerateBuildManifest setting
`Cmd.flag` returns `undefined` if the passed value is `false`, so essentially, customers have no way to disable build manifest (it's on by default now).
2022-01-19 02:29:04 +00:00
Pasindu Gunasekara 🍣 14dc1145c4 Merged PR 644899: Add cancellation token for cache pin
- Adds cancellation tokens for IArtifactContentCache.TryLoadAvailableContentAsync and ICacheReadOnlySession.PinToCasAsync.

Related work items: #1908176
2022-01-18 23:04:14 +00:00
Sergey Tepliakov d6cb55ab74 Merged PR 645139: Use a more actionable error message if the tests are running on 32-bit platform
Use a more actionable error message if the tests are running on 32-bit platform
2022-01-18 22:14:29 +00:00
Sergey Tepliakov 3bf3567c68 Merged PR 644729: Update .net6 sdk to 6.0.1 version
Update .NET 6 SDK to pick up the latest version that has a fix with UnobservedTaskException beein generated from SemaphoreSlim.
2022-01-18 21:59:03 +00:00
Semih Okur 90c52120dd Merged PR 644773: Remove unnecessary event keywords: Performance, CloudBuild, DependencyAnalysis
**_No changes in the logging behavior_**

CloudBuild keyword is used by absolute events.
Performance and DependencyAnalysis keywords are only for categorization purposes. There is no special handling for those keywords unlike Progress, Diagnostics, SelectivelyEnabled, etc.

Related work items: #1859016
2022-01-15 09:32:51 +00:00
CloudDev Build Account 4c08543e0c New LKG 0.1.0-20220114.1 2022-01-15 06:11:40 +00:00
CloudDev Build Account 7333e5c061 New LKG 0.1.0-20220110.4 2022-01-14 08:11:03 +00:00
CloudDev Build Account 33b94f430c New LKG 0.1.0-20220112.2 2022-01-14 07:29:30 +00:00
CloudDev Build Account 45ce47eeb6 New LKG 0.1.0-20220111.5 2022-01-14 06:49:04 +00:00
Semih Okur e57afbca32 Merged PR 644745: Reduce logging for distribution pip requests
No need to log MaterializeOutputs per worker & pip. Let's log once per pip only.

Related work items: #1859016
2022-01-14 06:22:04 +00:00
Semih Okur 5a64b62aec Merged PR 644769: Reviewing high-volume diagnostics events
Those diagnostics events were not supposed to be logged, but we have been logging them. After this change, we will not be printing them anymore:

```
DistributionWorkerPipOutputContent
DistributionOrchestratorWorkerProcessOutputContent
ScheduleCopyingPipOutputToLocalStorage
ScheduleCopyingPipInputToLocalStorage
```

The other events I changed were already not logged because they were guarded by `ETWLogger.Log.IsEnabled`

Related work items: #1859016
2022-01-14 06:20:31 +00:00
CloudDev Build Account e231a9d81a New LKG 0.1.0-20220107.5 2022-01-14 06:10:24 +00:00
Marcelo Lynch 🧉 36617fa6d4 Merged PR 644720: Revert: Hold forwardable events in a queue until we send the result of the pip that generated them 2022-01-14 00:48:33 +00:00
Iman Narasamdya 6725095c11 Merged PR 644381: Integrate BuildXL with AnyBuild SDK
Integrate BuildXL with AnyBuild SDK.

The design is to isolate AnyBuild use so that the `#if FEATURE_ANYBUILD_PROCESS_REMOTING` doesn't need to appear everywhere.

This PR depends on AnyBuild.SDK package that should be published after this PR !644510 is pushed.

Related work items: #1907310
2022-01-13 23:51:44 +00:00
Serge Mera ba8e545002 Merged PR 644747: When node.exe is specified, explicitly add its location to PATH of the graph construction process env
There is an implicit requirement coming from many JS coordinators (yarn/rush) to have node.exe in the PATH of the running process. PATH can be controlled by the user, so this is not necessarily the case. But when node.exe location is explicitly specified, make sure we expose it to PATH of the running graph construction tool.
2022-01-13 23:30:45 +00:00
Serge Mera f493b58092 Merged PR 644565: Allow specifying search paths for yarn and node tools
Allow specifying search paths for yarn and node tools. This is useful for dev cache, so we users can define both base off their current PATH
2022-01-13 20:28:22 +00:00
Pasindu Gunasekara 🍣 f00d25d4fa Merged PR 644474: Allow cancellation of PlaceSingleFileAsync with Ctrl+C
- Pass the cancellation token to cache for the TryMaterializeAsync operation.
- This will help improve user experience for users who cancel their build in the middle of materializing a single file from the L3 cache, so that they can avoid waiting for the file to finish downloading before their build finishes.

Related work items: #1908176
2022-01-13 17:22:17 +00:00
Lance Collins 8d21a4250e Merged PR 644097: Allow ASP.Net Core GRPC in CacheService.
Allow ASP.NetCore GRPC in CacheService.
2022-01-12 22:29:24 +00:00
Michael Pysson d346aebc37 Merged PR 643078: Remove XLDB code
This prototype doesn't have a trajectory to being productized. Remove to simplify codebase
2022-01-12 20:11:22 +00:00
Pratik Lade e3f6f515d8 Merged PR 643297: Use Int resources for CloudTest task Cg of release pipeline
BuildXL Release pipeline currently contains two CloudTest tasks.
Task Cf runs on CloudTest Int, while task Cg runs on CloudTest Prod.
Due to limitations in CloudTest UI, this means the results of the Cg task are not populated in the `1ES Test` tab of Azure DevOps.

To fix this, there were two approaches: either move Cf to Prod or move Cg to Int.
Moving Cf to Prod is more complicated, since there are build pipeline certificates installed and used specifically by CloudTest Int environment, which are not available on Prod.

We are taking the approach of moving Cg task to CloudTest Int. To do this, the SKU and Image used to run the Cg task needed to change, as the currently configured ones are not available on Int environment.
Here's a successful run that uses this configuration on CloudTest Int environment: https://cloudtest.visualstudio.com/CloudTest/_build/results?buildId=57793&view=results

This is part 1 of two changes required for this to work. After this PR completes, the release pipeline task and the CloudTest Validation(Gvfs) pipelines need to be edited to use the correct CloudTest configuration, which involves the following changes.
- Use Int environment instead of Prod
- Use wus2-default stamp
- Use cloudtest tenant instead of BuildXL
2022-01-12 20:07:37 +00:00
Serge Mera 9811b552ae Merged PR 644387: Restrict enumeration awareness of untracked artifacts for minimal + alien files mode to globally untracked paths
This PR fixes a bug recently introduced with https://dev.azure.com/mseng/Domino/_git/BuildXL.Internal/pullrequest/644178 since the caching mechanism for real enumerations does not easily allow pip-specific paths. For that:
* only globally untracked paths are kept (which are always safe to cache)
* Directory translations are taken into consideration (which was another issue with the previous PR)
* Statically declared untracked files and scopes are left out. We need a different approach to account for this without hindering performance, and even though it would be more consistent to include them as well, they are not actually needed for the short terms need of dev cache.
2022-01-12 18:25:50 +00:00