Skip to content

Commit 957fbd3

Browse files
Perform Node 6-16 -> 20 runner upgrade experiment (#4915)
* Perform Node 6-16 -> 20 runner upgrade experiment -- Allow publish agent worker's telemetry through commandExtension API. * Perform Node 6-16 -> 20 runner upgrade experiment -- code review
1 parent 357714d commit 957fbd3

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

src/Agent.Worker/ExecutionContext.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -925,16 +925,18 @@ public void EmitHostNode20FallbackTelemetry(bool node20ResultsInGlibCErrorHost)
925925
// This overload is to handle specific types some other way.
926926
private void PublishTelemetry<T>(
927927
Dictionary<string, T> telemetryData,
928-
string feature = "TaskHandler"
928+
string feature = "TaskHandler",
929+
bool IsAgentTelemetry = false
929930
)
930931
{
931932
// JsonConvert.SerializeObject always converts to base object.
932-
PublishTelemetry((object)telemetryData, feature);
933+
PublishTelemetry((object)telemetryData, feature, IsAgentTelemetry);
933934
}
934935

935936
private void PublishTelemetry(
936937
object telemetryData,
937-
string feature = "TaskHandler"
938+
string feature = "TaskHandler",
939+
bool IsAgentTelemetry = false
938940
)
939941
{
940942
var cmd = new Command("telemetry", "publish")
@@ -944,14 +946,14 @@ private void PublishTelemetry(
944946
cmd.Properties.Add("area", "PipelinesTasks");
945947
cmd.Properties.Add("feature", feature);
946948

947-
var publishTelemetryCmd = new TelemetryCommandExtension();
949+
var publishTelemetryCmd = new TelemetryCommandExtension(IsAgentTelemetry);
948950
publishTelemetryCmd.Initialize(HostContext);
949951
publishTelemetryCmd.ProcessCommand(this, cmd);
950952
}
951953

952954
public void PublishTaskRunnerTelemetry(Dictionary<string,string> taskRunnerData)
953955
{
954-
PublishTelemetry(taskRunnerData);
956+
PublishTelemetry(taskRunnerData, IsAgentTelemetry: true);
955957
}
956958

957959
public void Dispose()

src/Agent.Worker/Telemetry/TelemetryCommandExtension.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ public TelemetryCommandExtension()
2121
SupportedHostTypes = HostTypes.All;
2222
InstallWorkerCommand(new PublishTelemetryCommand());
2323
}
24+
public TelemetryCommandExtension(bool IsAgentTelemetry = false)
25+
{
26+
CommandArea = "telemetry";
27+
SupportedHostTypes = HostTypes.All;
28+
InstallWorkerCommand(new PublishTelemetryCommand(IsAgentTelemetry: IsAgentTelemetry));
29+
}
2430
}
2531

2632
[CommandRestriction(AllowedInRestrictedMode = true)]
@@ -29,13 +35,20 @@ public sealed class PublishTelemetryCommand : IWorkerCommand
2935
public string Name => "publish";
3036
public List<string> Aliases => null;
3137

38+
public readonly bool IsAgentTelemetry = false;
39+
40+
public PublishTelemetryCommand(bool IsAgentTelemetry = false)
41+
{
42+
this.IsAgentTelemetry = IsAgentTelemetry;
43+
}
44+
3245
public void Execute(IExecutionContext context, Command command)
3346
{
3447
ArgUtil.NotNull(context, nameof(context));
3548
ArgUtil.NotNull(command, nameof(command));
3649

3750
context.Variables.TryGetValue(Constants.Variables.Task.PublishTelemetry, out string publishTelemetryVar);
38-
if (bool.TryParse(publishTelemetryVar, out bool publishTelemetry) && !publishTelemetry)
51+
if (bool.TryParse(publishTelemetryVar, out bool publishTelemetry) && !publishTelemetry && !IsAgentTelemetry)
3952
{
4053
return;
4154
}

0 commit comments

Comments
 (0)