Merged PR 801607: Let users specify the total build timeout using a CLI arg

Let users specify the total build timeout using `/buildTimeoutMins`. Before this PR the only way was via an engine env var (the CB runner uses this).

Deprecate /BuildWaitTimeout CLI. This flag (unrelated to the functionality being added here) is not being used and it has a confusing name given the new flag being added.
This commit is contained in:
Serge Mera 2024-08-23 22:02:34 +00:00
Родитель 561f89d43c
Коммит 6ee1bca473
15 изменённых файлов: 207 добавлений и 174 удалений

Просмотреть файл

@ -16,7 +16,7 @@ This page lists flags that can be used to configure BuildXL.
| BreakOnUnexpectedFileAccess | Break into the debugger when {ShortProductName} detects that a tool accesses a file that was not declared in the specification dependencies. This option is useful when developing a new tool or SDKs using these tools. Defaults to off. |
| BuildLockPolling | Number of seconds to wait for an executing build to finish before polling again for completion. Defaults to 15 sec. |
| BuildManifestVerifyFileContentOnHashComputation | When enabled, ensures that file's content matches the hash provided by the engine before proceeding to compute a build manifest hash for that file. |
| BuildWaitTimeout | Number minutes to wait for an executing build to finish before failing the current one. Defaults to 0 minute. |
| BuildTimeoutMins | The time elapsed (in minutes) since BuildXL is launched when an external entity will terminate the build. BuildXL will fail the build and shutdown gracefully an epsilon before the specified timeout to avoid an ungraceful exit. The epsilon is variable and is computed as a small percentage of the length of the specified timeout. |
| CacheConfigFilePath | Path to cache config file. |
| CacheDirectory | Specifies the root directory for the incremental artifact cache (short form: /cd) |
| CacheGraph | Caches the build graph between runs, avoiding the parse and evaluation phases when no graph inputs have changed. Defaults to on. |

Просмотреть файл

@ -174,8 +174,8 @@ namespace BuildXL
"buildManifestVerifyFileContentOnHashComputation",
opt => engineConfiguration.VerifyFileContentOnBuildManifestHashComputation = opt),
OptionHandlerFactory.CreateOption(
"buildWaitTimeout",
opt => engineConfiguration.BuildLockWaitTimeoutMins = CommandLineUtilities.ParseInt32Option(opt, 0, int.MaxValue)),
"buildTimeoutMins",
opt => engineConfiguration.BuildTimeoutMins = CommandLineUtilities.ParseInt32Option(opt, 0, int.MaxValue)),
OptionHandlerFactory.CreateOption(
"cacheConfigFilePath",
opt => cacheConfiguration.CacheConfigFile = CommandLineUtilities.ParsePathOption(opt, pathTable)),

Просмотреть файл

@ -159,9 +159,9 @@ namespace BuildXL
// Cancellation request handling.
private readonly CancellationTokenSource m_cancellationSource = new CancellationTokenSource();
private int m_cancellationAlreadyAttempted = 0;
private const int MinEarlyCbTimeoutMins = 5; // Start Termination 5 mins before CB timeout gets triggered
private const int MaxEarlyCbTimeoutMins = 30; // The Maximum time allowed for Early timeout
private const int EarlyCbTimeoutPercentage = 2; // Early Termination set to 2% of remaining time before CB timeout gets triggered
private const int MinEarlyTimeoutMins = 5; // Start Termination 5 mins before a timeout gets triggered
private const int MaxEarlyTimeoutMins = 30; // The Maximum time allowed for Early timeout
private const int EarlyTimeoutPercentage = 2; // Early Termination set to 2% of remaining time before timeout gets triggered
private LoggingContext m_appLoggingContext;
private BuildViewModel m_buildViewModel;
@ -366,8 +366,8 @@ namespace BuildXL
(int)SchedulerLogEventId.PipFingerprintData,
(int)SchedulerLogEventId.InitiateWorkerRelease,
(int)SchedulerLogEventId.WorkerReleasedEarly,
(int)AppLogEventId.CbTimeoutReached,
(int)AppLogEventId.CbTimeoutInfo,
(int)AppLogEventId.TimeoutReached,
(int)AppLogEventId.TimeoutInfo,
(int)EngineLogEventId.DistributionWorkerChangedState,
(int)EngineLogEventId.DistributionConnectedToWorker,
(int)EngineLogEventId.DistributionWorkerFinish,
@ -2432,8 +2432,14 @@ namespace BuildXL
return engineState;
}
// Ensure BuildXL terminates before CloudBuild Timeout
SetCbTimeoutCleanExit();
// Ensure BuildXL terminates before the build timeout, if provided
if (EngineEnvironmentSettings.CbUtcTimeoutTicks.Value != null || configuration.Engine.BuildTimeoutMins != null)
{
var timeoutUtcTicks = EngineEnvironmentSettings.CbUtcTimeoutTicks.Value ??
m_startTimeUtc.Ticks + TimeSpan.FromMinutes(configuration.Engine.BuildTimeoutMins.Value).Ticks;
SetTimeoutCleanExit(timeoutUtcTicks);
}
if (configuration.Export.SnapshotFile.IsValid && configuration.Export.SnapshotMode != SnapshotMode.None)
{
@ -2890,39 +2896,36 @@ namespace BuildXL
m_console.WriteOutputLine(MessageLevel.ErrorNoColor, string.Format(CultureInfo.InvariantCulture, format, args));
}
private void SetCbTimeoutCleanExit()
private void SetTimeoutCleanExit(long utcTimeoutTicks)
{
if (EngineEnvironmentSettings.CbUtcTimeoutTicks.Value != null)
TimeSpan timeRemaining = new TimeSpan(utcTimeoutTicks).Subtract(new TimeSpan(DateTime.UtcNow.Ticks));
int calculatedEarlyTimeout = (int)Math.Ceiling(timeRemaining.TotalMinutes * EarlyTimeoutPercentage / 100.0);
int earlyTimeoutMins = Math.Clamp(calculatedEarlyTimeout, MinEarlyTimeoutMins, MaxEarlyTimeoutMins);
long timeoutTicks = utcTimeoutTicks - DateTime.UtcNow.AddMinutes(earlyTimeoutMins).Ticks;
try
{
TimeSpan timeRemaining = new TimeSpan(EngineEnvironmentSettings.CbUtcTimeoutTicks.Value.Value).Subtract(new TimeSpan(DateTime.UtcNow.Ticks));
int calculatedEarlyTimeout = (int)Math.Ceiling(timeRemaining.TotalMinutes * EarlyCbTimeoutPercentage / 100.0);
int earlyTimeoutMins = Math.Clamp(calculatedEarlyTimeout, MinEarlyCbTimeoutMins, MaxEarlyCbTimeoutMins);
long cbTimeoutTicks = EngineEnvironmentSettings.CbUtcTimeoutTicks.Value.Value - DateTime.UtcNow.AddMinutes(earlyTimeoutMins).Ticks;
try
{
int msUntilTimeout = Convert.ToInt32(cbTimeoutTicks / TimeSpan.TicksPerMillisecond);
Logger.Log.CbTimeoutInfo(m_appLoggingContext, earlyTimeoutMins, msUntilTimeout / (1000 * 60));
int msUntilTimeout = Convert.ToInt32(timeoutTicks / TimeSpan.TicksPerMillisecond);
Logger.Log.TimeoutInfo(m_appLoggingContext, earlyTimeoutMins, msUntilTimeout / (1000 * 60));
CbTimeoutCleanExitAsync(earlyTimeoutMins, msUntilTimeout).Forget();
}
catch (OverflowException)
{
// Log warning and ignore invalid timeout info
Logger.Log.CbTimeoutInvalid(
m_appLoggingContext,
DateTime.UtcNow.Ticks.ToString(),
EngineEnvironmentSettings.CbUtcTimeoutTicks.Value.Value.ToString());
return;
}
TimeoutCleanExitAsync(utcTimeoutTicks, earlyTimeoutMins, msUntilTimeout).Forget();
}
catch (OverflowException)
{
// Log warning and ignore invalid timeout info
Logger.Log.TimeoutInvalid(
m_appLoggingContext,
DateTime.UtcNow.Ticks.ToString(),
utcTimeoutTicks.ToString());
return;
}
}
private async Task CbTimeoutCleanExitAsync(int earlyCbTimeoutMins, int msUntilTimeout)
private async Task TimeoutCleanExitAsync(long utcTimeoutTicks, int earlyTimeoutMins, int msUntilTimeout)
{
if (EngineEnvironmentSettings.CbUtcTimeoutTicks.Value.Value <= DateTime.UtcNow.Ticks)
if (utcTimeoutTicks <= DateTime.UtcNow.Ticks)
{
// Timeout time specified by CB has already passed
Logger.Log.CbTimeoutTooLow(m_appLoggingContext, earlyCbTimeoutMins);
Logger.Log.TimeoutTooLow(m_appLoggingContext, earlyTimeoutMins);
await m_cancellationSource.CancelTokenAsyncIfSupported();
return;
}
@ -2931,9 +2934,9 @@ namespace BuildXL
// It is important to always log an error before triggering the cancellation. Various failed state checks
// will validate that an error has already been logged and crash if that is not upheld.
Logger.Log.CbTimeoutReached(
Logger.Log.TimeoutReached(
m_appLoggingContext,
earlyCbTimeoutMins,
earlyTimeoutMins,
Convert.ToInt32(TimeSpan.FromMilliseconds(msUntilTimeout).TotalMinutes));
await m_cancellationSource.CancelTokenAsyncIfSupported();
}

Просмотреть файл

@ -697,8 +697,8 @@ namespace BuildXL
HelpLevel.Verbose);
hw.WriteOption(
"/buildWaitTimeout:<minutes>",
Strings.HelpText_DisplayHelp_BuildWaitTimeout,
"/buildTimeoutMins:<minutes>",
Strings.HelpText_DisplayHelp_BuildTimeoutMins,
HelpLevel.Verbose);
hw.WriteOption(

Просмотреть файл

@ -120,12 +120,6 @@
<data name="HelpText_DisplayHelp_BuildBanner" xml:space="preserve">
<value>BUILD</value>
</data>
<data name="HelpText_DisplayHelp_Config" xml:space="preserve">
<value>Configuration file that determines {ShortProductName}'s behavior (short form: /c)</value>
</data>
<data name="HelpText_DisplayHelp_Qualifier" xml:space="preserve">
<value>Qualifiers controlling what flavor to build (short form: /q)</value>
</data>
<data name="HelpText_DisplayHelp_Paths" xml:space="preserve">
<value>Paths to output files or spec files which determine what gets built. This is a shorthand for a full filter expression.</value>
</data>
@ -222,9 +216,6 @@
<data name="Args_ParseWarningList_ExpectingValidWarningNumbers" xml:space="preserve">
<value>Expecting valid warning numbers for the /{0} argument but was given '{1}'.</value>
</data>
<data name="HelpText_DisplayHelp_ObjectDirectory" xml:space="preserve">
<value>Specifies the root directory for primary build outputs (short form: /o)</value>
</data>
<data name="HelpText_DisplayHelp_Property" xml:space="preserve">
<value>Specifies a property that overrides an allowed environment variable (short form: /p)</value>
</data>
@ -249,9 +240,6 @@
<data name="HelpText_DisplayHelp_CacheDirectory" xml:space="preserve">
<value>Specifies the root directory for the incremental artifact cache (short form: /cd)</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_AllowDuplicateTemporaryDirectory" xml:space="preserve">
<value>When enabled, pips with duplicate temporary directories are allowed. Defaults to false.</value>
</data>
<data name="HelpText_DisplayHelp_Incremental" xml:space="preserve">
<value>When enabled, artifacts are built incrementally based on which source files have changed. Defaults to on.</value>
</data>
@ -264,57 +252,15 @@
<data name="App_Main_Snapshot" xml:space="preserve">
<value> Snapshot: {0}</value>
</data>
<data name="HelpText_DisplayHelp_LogObservedFileAccesses" xml:space="preserve">
<value>Records the files observed to be accessed by individual pips to the log. Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_LogFileAccessTables" xml:space="preserve">
<value>Records the file enforcement access tables for individual pips to the log. Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_UnexpectedFileAccessesAreErrors" xml:space="preserve">
<value>When enabled, if {ShortProductName} detects that a tool accesses a file that was not declared in the specification dependencies, it is treated as an error instead of a warning. Turning this option off results in an unsafe configuration (for diagnostic purposes only). Defaults to on.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreZwRenameFileInformation" xml:space="preserve">
<value>When enabled, {ShortProductName} will not detour the ZwRenameFileInformation API. This might lead to incorrect builds because some file accesses will not be enforced.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreZwOtherFileInformation" xml:space="preserve">
<value>When enabled, {ShortProductName} will not detour the ZwLinkFileInformation, ZwFileNameFileInformation, ZwDispositionFileInformation, ZwModeFileInformation APIs. This might lead to incorrect builds because some file accesses will not be enforced. Defaults to off - the functions are detoured.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreNonCreateFileReparsePoints" xml:space="preserve">
<value>When enabled, {ShortProductName} will not follow symlinks for access validation and reporting for API's outisde of CreateFile, NtCreate, and OpenFile. This might lead to incorrect builds because some file accesses will not be enforced. Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreSetFileInformationByHandle" xml:space="preserve">
<value>When enabled, {ShortProductName} will not detour the SetFileInformationByHandle API. This might lead to incorrect builds because some file accesses will not be enforced.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreReparsePoints" xml:space="preserve">
<value>When enabled, {ShortProductName} will not track reparse points. This might lead to incorrect builds because some file accesses will not be enforced. Any reparse points (symlinks and mount points) will not be followed.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreFullReparsePointResolving" xml:space="preserve">
<value>When enabled, {ShortProductName} will not fully resolve paths containing any sort of reparse point. This might lead to incorrect builds because some file accesses will not be enforced or tracked at all.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnorePreloadedDlls" xml:space="preserve">
<value>When enabled, {ShortProductName} will not report Dlls loaded before Detours was started. This might lead to incorrect builds because some file accesses will not be enforced.</value>
</data>
<data name="Args_SandboxKind_WrongPlatform" xml:space="preserve">
<value>Sandbox kind '{0}' cannot be used on '{1}' operating system</value>
</data>
<data name="HelpText_DisplayHelp_SandboxKind" xml:space="preserve">
<value>Specifies the sandbox kind. Allowed values are 'None' (no sandboxing), 'Default' (default sandboxing), 'WinDetours', 'MacOsKext'. Default is 'Default'.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_DisableDetours" xml:space="preserve">
<value>When enabled, {ShortProductName} will not detour any processes. This might lead to incorrect builds because any file accesses will not be enforced.</value>
</data>
<data name="HelpText_DisplayHelp_IgnoreNonExistentProbes" xml:space="preserve">
<value>When enabled, {ShortProductName} will not report non existent probes, that are not in sealed directories. This might lead to incorrect builds because some file accesses will not be enforced and validated. Certain calls to GetFileAttribute method for non existing files will not be reported to {ShortProductName}.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_ExistingDirectoryProbesAsEnumerations" xml:space="preserve">
<value>When enabled, {ShortProductName} will report existing directory probes as enumerations. This might lead to cases where pips will be executed even when there is no need for it.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreNtCreateFile" xml:space="preserve">
<value>When enabled, {ShortProductName} will not intercept NtCreateFile calls. This might lead to incorrect builds because some file accesses will not be enforced.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreZwCreateOpenQueryFamily" xml:space="preserve">
<value>When enabled, {ShortProductName} will not intercept ZwCreateFile, ZwOpenFile, and ZwQueryDirectoryFile calls. This might lead to incorrect builds because some file accesses will not be enforced. This flag is off by default.</value>
</data>
<data name="App_Main_Cache" xml:space="preserve">
<value>Cache</value>
</data>
@ -345,12 +291,6 @@
<data name="HelpText_DisplayHelp_StopOnFirstError" xml:space="preserve">
<value>Stops the build engine the first time an error is generated by either {ShortProductName} or one of the tool it runs. Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_PipDefaultTimeout" xml:space="preserve">
<value>How long to wait before terminating individual processes, in milliseconds. Setting this value will only have an effect if no other timeout is specified for a process.</value>
</data>
<data name="HelpText_DisplayHelp_PipDefaultWarningTimeout" xml:space="preserve">
<value>After how much time to issue a warning that an individual process runs too long, in milliseconds. Setting this value will only have an effect if no other timeout is specified for a process.</value>
</data>
<data name="HelpText_DisplayHelp_DiagBanner" xml:space="preserve">
<value>DIAGNOSTICS</value>
</data>
@ -381,9 +321,6 @@
<data name="HelpText_DisplayHelp_BuildLockPolling" xml:space="preserve">
<value>Number of seconds to wait for an executing build to finish before polling again for completion. Defaults to 15 sec.</value>
</data>
<data name="HelpText_DisplayHelp_BuildWaitTimeout" xml:space="preserve">
<value>Number minutes to wait for an executing build to finish before failing the current one. Defaults to 0 minute.</value>
</data>
<data name="HelpText_DisplayHelp_EnableLazyOutputs" xml:space="preserve">
<value>Enables lazy materialization (deployment) of pips' outputs from local cache. Defaults to on.</value>
</data>
@ -601,9 +538,6 @@
<value>Invalid graph identifier '{0}' specified. Graph identifier must be a 40 digit hex string (no delimiters).
Example: ad2d42d2ec5d2ca0c0b7ad65402d07c7ef40b91e</value>
</data>
<data name="HelpText_DisplayHelp_Debug_LoadGraph" xml:space="preserve">
<value>Loads a cached build graph stored under the given fingerprint (40 digit hex string, no delimiters), path to cached graph directory, or canonical name.</value>
</data>
<data name="HelpText_DisplayHelp_EngineCacheDirectory" xml:space="preserve">
<value>Allows overriding where engine state will be cached. If unset, it will be stored in a subdirectory of the artifact cache.</value>
</data>
@ -649,15 +583,6 @@ Example: ad2d42d2ec5d2ca0c0b7ad65402d07c7ef40b91e</value>
<data name="HelpText_DisplayHelp_ScriptBanner" xml:space="preserve">
<value>{ShortScriptName}</value>
</data>
<data name="HelpText_DisplayHelp_DebugScript" xml:space="preserve">
<value>Whether to launch {ShortScriptName} debugger on start. Intended to be used by IDEs only (if you pass this option when running form command line, {ShortScriptName} evaluator will just wait forever). Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_DebuggerBreakOnExit" xml:space="preserve">
<value>Whether to break at the end of the evaluation phase. Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_DebuggerPort" xml:space="preserve">
<value>TCP/IP port for the {ShortScriptName} debugger to listen on. Defaults to 41177.</value>
</data>
<data name="HelpText_DisplayHelp_ScriptTypeCheck" xml:space="preserve">
<value>Type checks specifications. Defaults to on.</value>
</data>
@ -700,12 +625,6 @@ Example: ad2d42d2ec5d2ca0c0b7ad65402d07c7ef40b91e</value>
<data name="App_Vs_InstallPlugin" xml:space="preserve">
<value>{0} does not have the latest {ShortProductName} plugin installed. Before opening VS, please install the latest version ({1}) per the {ShortProductName} wiki</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_ForceSkipDeps" xml:space="preserve">
<value>Specifies that dependencies of processes requested in the filter should be skipped as long as all the inputs are present.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_PreserveOutputs" xml:space="preserve">
<value>When enabled, {ShortProductName} will preserve the existing state of Process pip output files instead of deleting them before starting the process. This may lead to incorrect builds depending on how the process behaves when prior outputs are present. Specify "/unsafe_preserveOutputs:Reset" to reset the salt added to cached processes run with preserved outputs.</value>
</data>
<data name="HelpText_DisplayHelp_NormalizeReadTimestamps" xml:space="preserve">
<value>When enabled, all file reads seen by processes will have normalized timestamps across builds. When disabled, the actual timestamps will be allowed to flow through to processes, so long as they are newer than the static timestamp used to enforce rewrite ordering (2002). Defaults to on.</value>
</data>
@ -724,12 +643,6 @@ Example: ad2d42d2ec5d2ca0c0b7ad65402d07c7ef40b91e</value>
<data name="HelpText_DisplayHelp_TreatDirectoryAsAbsentFileOnHashingInputContent" xml:space="preserve">
<value>Treats directory as absent file on hashing the content of input</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_DisableCycleDetection" xml:space="preserve">
<value>Disables cycle detection during evaluation. Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_MonitorFileAccesses" xml:space="preserve">
<value>Whether {ShortProductName} is to monitor file accesses of individual tools at all. Disabling monitoring results in an unsafe configuration (for diagnostic purposes only). Defaults to on.</value>
</data>
<data name="HelpText_DisplayHelp_VS" xml:space="preserve">
<value>Generates a VS solution file and MSBuild files for C# and C++ projects. Defaults to off.</value>
</data>
@ -745,9 +658,6 @@ Example: ad2d42d2ec5d2ca0c0b7ad65402d07c7ef40b91e</value>
<data name="HelpText_DisplayHelp_MaxRamUtilizationPercentage" xml:space="preserve">
<value>Specifies the maximum machine wide RAM utilization allowed before the scheduler will stop scheduling more work to allow resources to be freed. Defaults to 85%.</value>
</data>
<data name="HelpText_DisplayHelp_MinAvailableRamMb" xml:space="preserve">
<value>This flag is deprecated.</value>
</data>
<data name="App_ServerKilled" xml:space="preserve">
<value>Killing associated server mode process. No build will be performed.</value>
</data>
@ -784,9 +694,6 @@ Example: ad2d42d2ec5d2ca0c0b7ad65402d07c7ef40b91e</value>
<data name="HelpText_DisplayHelp_FancyConsoleMaxStatusPips" xml:space="preserve">
<value>Maximum number of concurrently executing pips to render in Fancy Console view. Defaults to 5.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_AllowCopySymlink" xml:space="preserve">
<value>When enabled, allow copying symlink. Defaults to true.</value>
</data>
<data name="Args_Malformed_RelatedActivityGuid" xml:space="preserve">
<value>The specified related activity guid is not a well-formed GUID</value>
</data>
@ -805,9 +712,6 @@ Example: ad2d42d2ec5d2ca0c0b7ad65402d07c7ef40b91e</value>
<data name="HelpText_DisplayHelp_ProfileScript" xml:space="preserve">
<value>Runs a profiler for {ShortScriptName} evaluation, generating a TSV file with profiling information.</value>
</data>
<data name="HelpText_DisplayHelp_EnableWorkerSourceFileMaterialization" xml:space="preserve">
<value>Enables materialization of source files on distributed workers. NOTE: Source files are required to be present in the worker's remote or local cache.</value>
</data>
<data name="HelpText_DisplayHelp_ValidateDistribution" xml:space="preserve">
<value>Performs validations to ensure the build can be distributed. Defaults to on for distributed builds, disabled in single machine builds.</value>
</data>
@ -817,9 +721,6 @@ Example: ad2d42d2ec5d2ca0c0b7ad65402d07c7ef40b91e</value>
<data name="HelpText_DisplayHelp_MaxTypeCheckingConcurrency" xml:space="preserve">
<value>Specifies the maximum concurrency level type checking phase. Defaults to /maxFrontEndConcurrency - 25% more than the total number of processors in the current machine.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreGetFinalPathNameByHandle" xml:space="preserve">
<value>When enabled, {ShortProductName} will not intercept GetFinalPathNameByHandle calls. This may lead to failures when using subst because non-subst paths will be used. Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_LogProcessDetouringStatus" xml:space="preserve">
<value>When enabled, store the Detouring Status messages in the Execution log. Defaults to off.</value>
</data>
@ -874,9 +775,6 @@ Example: ad2d42d2ec5d2ca0c0b7ad65402d07c7ef40b91e</value>
<data name="HelpText_DisplayHelp_UseFileContentTablePathMappings" xml:space="preserve">
<value>Use file content table path mappings to avoid opening handles for hashing files already in the table. Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_DisableGraphPostValidation" xml:space="preserve">
<value>Disables post validation of graph construction. Defaults to on.</value>
</data>
<data name="DX_Help_Link_Prefix" xml:space="preserve">
<value>For help with {ShortProductName} warnings or errors, see: </value>
</data>
@ -943,9 +841,6 @@ Example: ad2d42d2ec5d2ca0c0b7ad65402d07c7ef40b91e</value>
<data name="HelpText_DisplayHelp_LaunchDebugger" xml:space="preserve">
<value>Launches the debugger during boot (in the server process if applicable).</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreDynamicWritesOnAbsentProbes" xml:space="preserve">
<value>When enabled, {ShortProductName} will not flag as violations absent path probes that coexist with writes under output directories for those same paths.</value>
</data>
<data name="HelpText_DisplayHelp_StoreFingerprintsWithMode" xml:space="preserve">
<value>Stores fingerprint computation information for each pip seen in the build in a peristent key-value store that can be accessed from the logs. "Default" mode will check for pre-existing entries before overwriting entries. "ExecutionFingerprintsOnly" mode will only store fingerprints computed when a pip executes. On strong fingerprint cache misses, setting this will SKIP storing fingerprints computed at cache lookup time, which are useful for analyzing strong fingerprint misses. "IgnoreExistingEntries" mode will overwrite entries without doing any (random) reads, this is only recommended on spin drives experiencing slowdowns. </value>
</data>
@ -967,9 +862,6 @@ Example: ad2d42d2ec5d2ca0c0b7ad65402d07c7ef40b91e</value>
<data name="Args_AdminRequiredProcessExecutionMode_NotSupportedOnNonWindows" xml:space="preserve">
<value>Admin-required process execution mode '{0}' is not supported on non-Windows OS</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_OptimizedAstConversion" xml:space="preserve">
<value>When enabled, optimized AST conversion by disabling some analyses and skipping some AST constructs. By disabling analyses linter policies are not enforced. The types in the resulting AST are stripped away as they are not needed for evaluation. Defauts to off.</value>
</data>
<data name="HelpText_DisplayHelp_Interactive" xml:space="preserve">
<value>When enabled indicates that {ShortProductName} is allowed to interact with the user either via console or popups. A common use case is to allow front ends like nuget to display authentication prompts in case the user is not authenticated.</value>
</data>
@ -991,18 +883,12 @@ Example: ad2d42d2ec5d2ca0c0b7ad65402d07c7ef40b91e</value>
<data name="HelpText_DisplayHelp_ValidateCgManifest" xml:space="preserve">
<value>Validates the cgmanifest.json file at the specified path. This file should contain up-to-date names and versions of all Nuget packages used within BuildXL for Component Governance. Any mismatch will cause the Build to fail. Updated file can be created using the /generateCgManifestForNugets:&lt;path&gt;</value>
</data>
<data name="HelpText_DisplayHelp_MinimumDiskSpaceForPipsGb" xml:space="preserve">
<value>Specify the required minimum available disk space in Gigabytes. Default value set to 0GB (disabled). Pips will fail if the specified amount of disk space in unavailable.</value>
</data>
<data name="HelpText_DisplayHelp_CacheMissDiffFormat" xml:space="preserve">
<value>Diff format for cache miss analysis. Allowed values are CustomJsonDiff and JsonPatchDiff. Defaults to CustomJsonDiff</value>
</data>
<data name="HelpText_DisplayHelp_CacheOnly" xml:space="preserve">
<value>Only processes cache hits. Any pips that are cache misses will skip execution. Skipped pips will not cause the build session to fail.</value>
</data>
<data name="HelpText_DisplayHelp_NumRetryFailedPipsOnAnotherWorker" xml:space="preserve">
<value>Specify the number of times a pip failing due to worker failures, should be retried on another worker. Default value set to 0 (disabled).</value>
</data>
<data name="HelpText_DisplayHelp_PathSetAugmentationMonitoring" xml:space="preserve">
<value>Check that the paths used in creating an augmented pathset/weak fingerprint are used during the execution of a pip. If a path is not used it's logged together with its hash. The argument controls the max number of paths logged per executed pip. If the value is set to 0, the monitoring is disabled.</value>
</data>
@ -1090,9 +976,6 @@ Example: ad2d42d2ec5d2ca0c0b7ad65402d07c7ef40b91e</value>
<data name="HelpText_DisplayHelp_StopOnFirstInternalError" xml:space="preserve">
<value>Stops the build engine the first time an internal error is generated by {ShortProductName}. Defaults to off for single machine builds.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_AssumeCleanOutputs" xml:space="preserve">
<value>When enabled, BuildXL assumes there are no stale outputs from previous builds.</value>
</data>
<data name="HelpText_DisplayHelp_EnableLinuxPTraceSandbox" xml:space="preserve">
<value>Enables the ptrace sandbox on Linux when a statically linked binary is detected. Note that this will have a negative impact on performance, but is necessary to ensure correctness on some Linux builds.</value>
</data>
@ -1186,4 +1069,121 @@ Example: ad2d42d2ec5d2ca0c0b7ad65402d07c7ef40b91e</value>
<data name="Args_EnginePhases_UnsupportedPhase" xml:space="preserve">
<value>phase:Evaluate is not supported, please use /phase:Schedule</value>
</data>
<data name="HelpText_DisplayHelp_Config" xml:space="preserve">
<value>Configuration file that determines {ShortProductName}'s behavior (short form: /c)</value>
</data>
<data name="HelpText_DisplayHelp_Qualifier" xml:space="preserve">
<value>Qualifiers controlling what flavor to build (short form: /q)</value>
</data>
<data name="HelpText_DisplayHelp_ObjectDirectory" xml:space="preserve">
<value>Specifies the root directory for primary build outputs (short form: /o)</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_AllowDuplicateTemporaryDirectory" xml:space="preserve">
<value>When enabled, pips with duplicate temporary directories are allowed. Defaults to false.</value>
</data>
<data name="HelpText_DisplayHelp_LogObservedFileAccesses" xml:space="preserve">
<value>Records the files observed to be accessed by individual pips to the log. Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_LogFileAccessTables" xml:space="preserve">
<value>Records the file enforcement access tables for individual pips to the log. Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_UnexpectedFileAccessesAreErrors" xml:space="preserve">
<value>When enabled, if {ShortProductName} detects that a tool accesses a file that was not declared in the specification dependencies, it is treated as an error instead of a warning. Turning this option off results in an unsafe configuration (for diagnostic purposes only). Defaults to on.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreZwRenameFileInformation" xml:space="preserve">
<value>When enabled, {ShortProductName} will not detour the ZwRenameFileInformation API. This might lead to incorrect builds because some file accesses will not be enforced.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreZwOtherFileInformation" xml:space="preserve">
<value>When enabled, {ShortProductName} will not detour the ZwLinkFileInformation, ZwFileNameFileInformation, ZwDispositionFileInformation, ZwModeFileInformation APIs. This might lead to incorrect builds because some file accesses will not be enforced. Defaults to off - the functions are detoured.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreNonCreateFileReparsePoints" xml:space="preserve">
<value>When enabled, {ShortProductName} will not follow symlinks for access validation and reporting for API's outisde of CreateFile, NtCreate, and OpenFile. This might lead to incorrect builds because some file accesses will not be enforced. Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreSetFileInformationByHandle" xml:space="preserve">
<value>When enabled, {ShortProductName} will not detour the SetFileInformationByHandle API. This might lead to incorrect builds because some file accesses will not be enforced.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreReparsePoints" xml:space="preserve">
<value>When enabled, {ShortProductName} will not track reparse points. This might lead to incorrect builds because some file accesses will not be enforced. Any reparse points (symlinks and mount points) will not be followed.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreFullReparsePointResolving" xml:space="preserve">
<value>When enabled, {ShortProductName} will not fully resolve paths containing any sort of reparse point. This might lead to incorrect builds because some file accesses will not be enforced or tracked at all.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnorePreloadedDlls" xml:space="preserve">
<value>When enabled, {ShortProductName} will not report Dlls loaded before Detours was started. This might lead to incorrect builds because some file accesses will not be enforced.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_DisableDetours" xml:space="preserve">
<value>When enabled, {ShortProductName} will not detour any processes. This might lead to incorrect builds because any file accesses will not be enforced.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_ExistingDirectoryProbesAsEnumerations" xml:space="preserve">
<value>When enabled, {ShortProductName} will report existing directory probes as enumerations. This might lead to cases where pips will be executed even when there is no need for it.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreNtCreateFile" xml:space="preserve">
<value>When enabled, {ShortProductName} will not intercept NtCreateFile calls. This might lead to incorrect builds because some file accesses will not be enforced.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreZwCreateOpenQueryFamily" xml:space="preserve">
<value>When enabled, {ShortProductName} will not intercept ZwCreateFile, ZwOpenFile, and ZwQueryDirectoryFile calls. This might lead to incorrect builds because some file accesses will not be enforced. This flag is off by default.</value>
</data>
<data name="HelpText_DisplayHelp_PipDefaultTimeout" xml:space="preserve">
<value>How long to wait before terminating individual processes, in milliseconds. Setting this value will only have an effect if no other timeout is specified for a process.</value>
</data>
<data name="HelpText_DisplayHelp_PipDefaultWarningTimeout" xml:space="preserve">
<value>After how much time to issue a warning that an individual process runs too long, in milliseconds. Setting this value will only have an effect if no other timeout is specified for a process.</value>
</data>
<data name="HelpText_DisplayHelp_Debug_LoadGraph" xml:space="preserve">
<value>Loads a cached build graph stored under the given fingerprint (40 digit hex string, no delimiters), path to cached graph directory, or canonical name.</value>
</data>
<data name="HelpText_DisplayHelp_DebugScript" xml:space="preserve">
<value>Whether to launch {ShortScriptName} debugger on start. Intended to be used by IDEs only (if you pass this option when running form command line, {ShortScriptName} evaluator will just wait forever). Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_DebuggerBreakOnExit" xml:space="preserve">
<value>Whether to break at the end of the evaluation phase. Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_DebuggerPort" xml:space="preserve">
<value>TCP/IP port for the {ShortScriptName} debugger to listen on. Defaults to 41177.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_ForceSkipDeps" xml:space="preserve">
<value>Specifies that dependencies of processes requested in the filter should be skipped as long as all the inputs are present.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_PreserveOutputs" xml:space="preserve">
<value>When enabled, {ShortProductName} will preserve the existing state of Process pip output files instead of deleting them before starting the process. This may lead to incorrect builds depending on how the process behaves when prior outputs are present. Specify "/unsafe_preserveOutputs:Reset" to reset the salt added to cached processes run with preserved outputs.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_DisableCycleDetection" xml:space="preserve">
<value>Disables cycle detection during evaluation. Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_MonitorFileAccesses" xml:space="preserve">
<value>Whether {ShortProductName} is to monitor file accesses of individual tools at all. Disabling monitoring results in an unsafe configuration (for diagnostic purposes only). Defaults to on.</value>
</data>
<data name="HelpText_DisplayHelp_MinAvailableRamMb" xml:space="preserve">
<value>This flag is deprecated.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_AllowCopySymlink" xml:space="preserve">
<value>When enabled, allow copying symlink. Defaults to true.</value>
</data>
<data name="HelpText_DisplayHelp_EnableWorkerSourceFileMaterialization" xml:space="preserve">
<value>Enables materialization of source files on distributed workers. NOTE: Source files are required to be present in the worker's remote or local cache.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreGetFinalPathNameByHandle" xml:space="preserve">
<value>When enabled, {ShortProductName} will not intercept GetFinalPathNameByHandle calls. This may lead to failures when using subst because non-subst paths will be used. Defaults to off.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_DisableGraphPostValidation" xml:space="preserve">
<value>Disables post validation of graph construction. Defaults to on.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_IgnoreDynamicWritesOnAbsentProbes" xml:space="preserve">
<value>When enabled, {ShortProductName} will not flag as violations absent path probes that coexist with writes under output directories for those same paths.</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_OptimizedAstConversion" xml:space="preserve">
<value>When enabled, optimized AST conversion by disabling some analyses and skipping some AST constructs. By disabling analyses linter policies are not enforced. The types in the resulting AST are stripped away as they are not needed for evaluation. Defauts to off.</value>
</data>
<data name="HelpText_DisplayHelp_MinimumDiskSpaceForPipsGb" xml:space="preserve">
<value>Specify the required minimum available disk space in Gigabytes. Default value set to 0GB (disabled). Pips will fail if the specified amount of disk space in unavailable.</value>
</data>
<data name="HelpText_DisplayHelp_NumRetryFailedPipsOnAnotherWorker" xml:space="preserve">
<value>Specify the number of times a pip failing due to worker failures, should be retried on another worker. Default value set to 0 (disabled).</value>
</data>
<data name="HelpText_DisplayHelp_Unsafe_AssumeCleanOutputs" xml:space="preserve">
<value>When enabled, BuildXL assumes there are no stale outputs from previous builds.</value>
</data>
<data name="HelpText_DisplayHelp_BuildTimeoutMins" xml:space="preserve">
<value>The time elapsed (in minutes) since BuildXL is launched when an external entity will terminate the build. BuildXL will fail the build and shutdown gracefully an epsilon before the specified timeout to avoid an ungraceful exit. The epsilon is variable and is computed as a small percentage of the length of the specified timeout.</value>
</data>
</root>

Просмотреть файл

@ -518,40 +518,40 @@ namespace BuildXL.App.Tracing
public abstract void PerformanceCollectorCollectionFailed(LoggingContext context, string exception);
[GeneratedEvent(
(int)LogEventId.CbTimeoutReached,
(int)LogEventId.TimeoutReached,
EventGenerators = EventGenerators.LocalOnly,
EventLevel = Level.Error,
EventTask = (ushort)Tasks.Scheduler,
Keywords = (int)(Keywords.UserMessage | Keywords.InfrastructureIssue),
Message = "Build Termination started {timeoutMins} mins before CB timeout for clean exit. BuildXL had a total of {availableMins} mins to complete the build.")]
public abstract void CbTimeoutReached(LoggingContext context, int timeoutMins, int availableMins);
Message = "Build termination started {timeoutMins} mins before timeout for clean exit. BuildXL had a total of {availableMins} mins to complete the build.")]
public abstract void TimeoutReached(LoggingContext context, int timeoutMins, int availableMins);
[GeneratedEvent(
(int)LogEventId.CbTimeoutTooLow,
(int)LogEventId.TimeoutTooLow,
EventGenerators = EventGenerators.LocalOnly,
EventLevel = Level.Error,
EventTask = (ushort)Tasks.Scheduler,
Keywords = (int)(Keywords.UserMessage | Keywords.InfrastructureIssue),
Message = "Build Terminated immediately since CB timeout is less than {mins} mins, please increase the CB timeout in your queue config")]
public abstract void CbTimeoutTooLow(LoggingContext context, int mins);
Message = "Build terminated immediately since specified timeout is less than {mins} mins.")]
public abstract void TimeoutTooLow(LoggingContext context, int mins);
[GeneratedEvent(
(int)LogEventId.CbTimeoutInvalid,
(int)LogEventId.TimeoutInvalid,
EventGenerators = EventGenerators.LocalOnly,
EventLevel = Level.Warning,
EventTask = (ushort)Tasks.Scheduler,
Keywords = (int)(Keywords.UserMessage | Keywords.InfrastructureIssue),
Message = "BuildXL received invalid CB Timeout information. Current Time UTC ticks: {utcTicksNow}. Timeout UTC ticks received from CB: {utcTicksCbTimeout}.")]
public abstract void CbTimeoutInvalid(LoggingContext context, string utcTicksNow, string utcTicksCbTimeout);
Message = "BuildXL received invalid timeout information. Current Time UTC ticks: {utcTicksNow}. Timeout UTC ticks received: {utcTicksTimeout}.")]
public abstract void TimeoutInvalid(LoggingContext context, string utcTicksNow, string utcTicksTimeout);
[GeneratedEvent(
(int)LogEventId.CbTimeoutInfo,
(int)LogEventId.TimeoutInfo,
EventGenerators = EventGenerators.LocalOnly,
EventLevel = Level.Verbose,
EventTask = (ushort)Tasks.Scheduler,
Keywords = (int)(Keywords.UserMessage),
Message = "{ShortProductName} will terminate if build exceeds {allowedRemainingMinutes} minutes ({minutesBeforeQueueTimeout} minutes before timeout specified in CloudBuild Queue configuration).")]
public abstract void CbTimeoutInfo(LoggingContext context, int minutesBeforeQueueTimeout, int allowedRemainingMinutes);
Message = "{ShortProductName} will terminate if build exceeds {allowedRemainingMinutes} minutes ({minutesBeforeQueueTimeout} minutes before timeout specified).")]
public abstract void TimeoutInfo(LoggingContext context, int minutesBeforeQueueTimeout, int allowedRemainingMinutes);
[GeneratedEvent(
(ushort)LogEventId.FailedToGetGitRemoteRepoInfo,

Просмотреть файл

@ -67,10 +67,10 @@ namespace BuildXL.App.Tracing
// ProblematicWorkerExitError = 14013,
PerformanceCollectorInitializationFailed = 15000,
CbTimeoutReached = SharedLogEventId.CbTimeoutReached,
CbTimeoutTooLow = SharedLogEventId.CbTimeoutTooLow,
CbTimeoutInvalid = 15003,
CbTimeoutInfo = 15004,
TimeoutReached = SharedLogEventId.TimeoutReached,
TimeoutTooLow = SharedLogEventId.TimeoutTooLow,
TimeoutInvalid = 15003,
TimeoutInfo = 15004,
PerformanceCollectorCollectionFailed = 15005,
// Capture Git remote info
FailedToGetGitRemoteRepoInfo = 15007,

Просмотреть файл

@ -1251,6 +1251,13 @@ namespace BuildXL.Engine
Logger.Log.RequiredToolsNotInstalled(loggingContext, error);
}
// The build timeout set from CB via env var cannot coexist with the equivalent command line flag
if (mutableConfig.Engine.BuildTimeoutMins != null && EngineEnvironmentSettings.CbUtcTimeoutTicks.Value != null)
{
Logger.Log.ConfigIncompatibleOptionBuildTimeoutMinsAndCbTimeout(loggingContext);
success = false;
}
return success;
}

Просмотреть файл

@ -2923,6 +2923,15 @@ If you can't update and need this feature after July 2018 please reach out to th
Message = "Preserve output mode is enabled with /unsafe_IgnorePreserveOutputsPrivatization and /storeOutputsToCache: Build can fail because pips are not able to make their existing outputs private before execution.")]
public abstract void ConfigIncompatibleOptionIgnorePreserveOutputsPrivatization(LoggingContext context);
[GeneratedEvent(
(ushort)LogEventId.ConfigIncompatibleOptionBuildTimeoutMinsAndCbTimeout,
EventGenerators = EventGenerators.LocalOnly,
EventLevel = Level.Error,
Keywords = (int)Keywords.UserMessage,
EventTask = (int)Tasks.Engine,
Message = "A build timeout was specified simultaneously with /buildTimeoutMins CLI and by setting BuildXL_CbTimeoutUtcTicks environment variable. Both options cannot be set at the same time.")]
public abstract void ConfigIncompatibleOptionBuildTimeoutMinsAndCbTimeout(LoggingContext context);
[GeneratedEvent(
(ushort)LogEventId.PipTimedOutRemotely,
EventGenerators = EventGenerators.LocalOnly,

Просмотреть файл

@ -116,6 +116,7 @@ namespace BuildXL.Engine.Tracing
ConfigUnsafeSkipFlaggingSharedOpaqueOutputs = 943,
ConfigUnsafeIgnorePreserveOutputsPrivatization = 944,
ConfigIncompatibleOptionIgnorePreserveOutputsPrivatization = 945,
ConfigIncompatibleOptionBuildTimeoutMinsAndCbTimeout = 7142,
PipTimedOutRemotely = 946,
ConfigAssumeCleanOutputs = 947,

Просмотреть файл

@ -490,6 +490,7 @@ namespace BuildXL.Utilities.Configuration
/// <summary>
/// Specifies the UTC time when CB will terminate the build due to timeout
/// </summary>
/// <remarks>This setting is currently used by the CB runner. Please see /buildTimeoutMins CLI for any non-CB scenario. /></remarks>
public static readonly Setting<long?> CbUtcTimeoutTicks = CreateSetting("BuildXL_CbTimeoutUtcTicks", value => value == null ? (long?)null : long.Parse(value));
/// <summary>

Просмотреть файл

@ -146,6 +146,14 @@ namespace BuildXL.Utilities.Configuration
/// </summary>
int BuildLockWaitTimeoutMins { get; }
/// <summary>
/// Specifies the time (in minutes) an external entity will terminate the build since BuildXL was launched
/// </summary>
/// <remarks>
/// This gives the engine the chance to properly shutdown before a hard termination arrives
/// </remarks>
int? BuildTimeoutMins { get; }
/// <summary>
/// Whether this build is explicitly requesting convergence with remote caches. This will disable features that
/// may interrupt this.

Просмотреть файл

@ -87,6 +87,7 @@ namespace BuildXL.Utilities.Configuration.Mutable
PipSpecificPropertyAndValues = template.PipSpecificPropertyAndValues.Select(
p => new PipSpecificPropertyAndValue(p.PropertyName, p.PipSemiStableHash, p.PropertyValue)).ToList();
VerifyJunctionsDoNotConflictWithDirectoryTranslations = template.VerifyJunctionsDoNotConflictWithDirectoryTranslations;
BuildTimeoutMins = template.BuildTimeoutMins;
}
/// <inheritdoc />
@ -197,5 +198,8 @@ namespace BuildXL.Utilities.Configuration.Mutable
/// <inheritdoc />
public bool VerifyJunctionsDoNotConflictWithDirectoryTranslations { get; set; }
/// <inheritdoc/>
public int? BuildTimeoutMins { get; set; }
}
}

Просмотреть файл

@ -42,8 +42,8 @@ namespace BuildXL.Utilities.Instrumentation.Common
StoppedDistributionWorkerForwardedError = 7046,
DistributionWorkerForwardedEvent = 7066,
GrpcEventHandlerExceptionOccurred = 7067,
CbTimeoutReached = 15001,
CbTimeoutTooLow = 15002,
TimeoutReached = 15001,
TimeoutTooLow = 15002,
// Moved from BuildXL.Scheduler.Tracing.LogEventId
PipIpcFailed = 5,

Просмотреть файл

@ -295,7 +295,7 @@ namespace BuildXL.Utilities.Tracing
if (wasInfrastructureOrInternal &&
// These timeout errors are infrastrucure errors but also trigger a shutdown. So do not re-trigger another
// internal error early shutdown. Doing so would create confusion in logging
eventData.EventId != (int)SharedLogEventId.CbTimeoutReached && eventData.EventId != (int)SharedLogEventId.CbTimeoutTooLow)
eventData.EventId != (int)SharedLogEventId.TimeoutReached && eventData.EventId != (int)SharedLogEventId.TimeoutTooLow)
{
TriggerInternalErrorAction();
}