Skip to content

Commit 1a2520a

Browse files
committed
Updating application and host id to use host name
1 parent 1954070 commit 1a2520a

File tree

6 files changed

+43
-19
lines changed

6 files changed

+43
-19
lines changed

src/WebJobs.Script.WebHost/App_Start/WebHostResolver.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,8 @@ private static ScriptHostConfiguration GetScriptHostConfiguration(string scriptP
160160
FileLoggingMode = FileLoggingMode.DebugOnly
161161
};
162162

163-
// If running on Azure Web App, derive the host ID from the site name
164-
string hostId = _settingsManager.GetSetting(EnvironmentSettingNames.AzureWebsiteName);
163+
// If running on Azure Web App, derive the host ID from the default subdomain
164+
string hostId = _settingsManager.AzureWebsiteDefaultSubdomain;
165165
if (!String.IsNullOrEmpty(hostId))
166166
{
167167
// Truncate to the max host name length if needed

src/WebJobs.Script.WebHost/Diagnostics/MetricsEventManager.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
namespace Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics
1616
{
1717
public class MetricsEventManager : IDisposable
18-
{
18+
{
1919
private static FunctionActivityTracker instance = null;
2020
private readonly IEventGenerator _eventGenerator;
2121
private readonly int _functionActivityFlushIntervalSeconds;
@@ -31,7 +31,7 @@ public class MetricsEventManager : IDisposable
3131
public MetricsEventManager(ScriptSettingsManager settingsManager, IEventGenerator generator, int functionActivityFlushIntervalSeconds, int metricsFlushIntervalMS = DefaultFlushIntervalMS)
3232
{
3333
// we read these in the ctor (not static ctor) since it can change on the fly
34-
appName = GetNormalizedString(settingsManager.GetSetting(EnvironmentSettingNames.AzureWebsiteName)) ?? string.Empty;
34+
appName = GetNormalizedString(settingsManager.AzureWebsiteDefaultSubdomain);
3535
subscriptionId = Utility.GetSubscriptionId() ?? string.Empty;
3636

3737
_eventGenerator = generator;
@@ -74,7 +74,7 @@ public void EndEvent(object eventHandle)
7474
evt.Duration = DateTime.UtcNow - evt.Timestamp;
7575
long latencyMS = (long)evt.Duration.TotalMilliseconds;
7676

77-
QueuedEvents.AddOrUpdate(evt.EventName,
77+
QueuedEvents.AddOrUpdate(evt.EventName,
7878
(name) =>
7979
{
8080
// create the default event that will be added
@@ -87,7 +87,7 @@ public void EndEvent(object eventHandle)
8787
Average = latencyMS,
8888
Count = 1
8989
};
90-
},
90+
},
9191
(name, evtToUpdate) =>
9292
{
9393
// Aggregate into the existing event
@@ -110,7 +110,7 @@ public void LogEvent(string eventName)
110110
throw new ArgumentNullException(nameof(eventName));
111111
}
112112

113-
QueuedEvents.AddOrUpdate(eventName,
113+
QueuedEvents.AddOrUpdate(eventName,
114114
(name) =>
115115
{
116116
// create the default event that will be added
@@ -120,7 +120,7 @@ public void LogEvent(string eventName)
120120
EventName = eventName.ToLowerInvariant(),
121121
Count = 1
122122
};
123-
},
123+
},
124124
(name, evtToUpdate) =>
125125
{
126126
// update the existing event
@@ -180,7 +180,7 @@ internal void HostStarted(ScriptHost scriptHost)
180180
? SerializeBindings(function.Metadata.InputBindings)
181181
: GetNormalizedString(null),
182182
function.Metadata != null
183-
? SerializeBindings(function.Metadata.OutputBindings)
183+
? SerializeBindings(function.Metadata.OutputBindings)
184184
: GetNormalizedString(null),
185185
function.Metadata.ScriptType.ToString(),
186186
function.Metadata != null ? function.Metadata.IsDisabled : false);
@@ -278,7 +278,7 @@ internal FunctionActivityTracker(IEventGenerator generator, int functionActivity
278278
while (!_etwTaskCancellationSource.Token.IsCancellationRequested)
279279
{
280280
RaiseMetricsPerFunctionEvent();
281-
281+
282282
if (currentSecond >= _functionActivityFlushInterval)
283283
{
284284
RaiseFunctionMetricEvents();
@@ -300,7 +300,7 @@ internal FunctionActivityTracker(IEventGenerator generator, int functionActivity
300300
},
301301
_etwTaskCancellationSource.Token);
302302
}
303-
303+
304304
internal bool IsActive
305305
{
306306
get
@@ -309,12 +309,12 @@ internal bool IsActive
309309
}
310310
}
311311

312-
internal IEventGenerator MetricsEventGenerator { get; private set; }
312+
internal IEventGenerator MetricsEventGenerator { get; private set; }
313313

314314
protected virtual void Dispose(bool disposing)
315315
{
316316
if (disposing)
317-
{
317+
{
318318
_etwTaskCancellationSource.Dispose();
319319
}
320320
}
@@ -458,7 +458,7 @@ private List<FunctionMetrics> GetMetricsQueueSnapshot()
458458
}
459459

460460
private class RunningFunctionInfo
461-
{
461+
{
462462
public RunningFunctionInfo(string name, Guid invocationId, DateTime startTime, bool success, ExecutionStage executionStage = ExecutionStage.InProgress)
463463
{
464464
Name = name;

src/WebJobs.Script.WebHost/Diagnostics/SystemTraceWriter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ public class SystemTraceWriter : TraceWriter
1414
private ScriptSettingsManager _settingsManager;
1515
private string _appName;
1616
private string _subscriptionId;
17-
17+
1818
public SystemTraceWriter(TraceLevel level) : this(new EventGenerator(), ScriptSettingsManager.Instance, level)
1919
{
2020
}
2121

2222
public SystemTraceWriter(IEventGenerator eventGenerator, ScriptSettingsManager settingsManager, TraceLevel level) : base(level)
2323
{
2424
_settingsManager = settingsManager;
25-
_appName = _settingsManager.GetSetting(EnvironmentSettingNames.AzureWebsiteName);
25+
_appName = _settingsManager.AzureWebsiteDefaultSubdomain;
2626
_subscriptionId = Utility.GetSubscriptionId();
2727
_eventGenerator = eventGenerator;
2828
}

src/WebJobs.Script/Config/ScriptSettingsManager.cs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22
// Licensed under the MIT License. See License.txt in the project root for license information.
33

44
using System;
5+
using System.Collections.Concurrent;
56

67
namespace Microsoft.Azure.WebJobs.Script.Config
78
{
89
public class ScriptSettingsManager
910
{
1011
private static ScriptSettingsManager _instance = new ScriptSettingsManager();
12+
private readonly ConcurrentDictionary<string, string> _settingsCache = new ConcurrentDictionary<string, string>();
1113

1214
protected ScriptSettingsManager()
1315
{
@@ -23,8 +25,29 @@ public static ScriptSettingsManager Instance
2325

2426
public bool IsRemoteDebuggingEnabled => !string.IsNullOrEmpty(GetSetting(EnvironmentSettingNames.RemoteDebuggingPort));
2527

28+
public string AzureWebsiteDefaultSubdomain
29+
{
30+
get
31+
{
32+
return _settingsCache.GetOrAdd(nameof(AzureWebsiteDefaultSubdomain), k =>
33+
{
34+
string siteHostName = GetSetting(EnvironmentSettingNames.AzureWebsiteHostName);
35+
36+
int? periodIndex = siteHostName?.IndexOf('.');
37+
38+
if (periodIndex != null && periodIndex > 0)
39+
{
40+
return siteHostName.Substring(0, periodIndex.Value);
41+
}
42+
43+
return null;
44+
});
45+
}
46+
}
47+
2648
public virtual void Reset()
27-
{
49+
{
50+
_settingsCache.Clear();
2851
}
2952

3053
public virtual string GetSetting(string settingKey)

src/WebJobs.Script/EnvironmentSettingNames.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ namespace Microsoft.Azure.WebJobs.Script
88
public static class EnvironmentSettingNames
99
{
1010
public const string AzureWebsiteName = "WEBSITE_SITE_NAME";
11+
public const string AzureWebsiteHostName = "WEBSITE_HOSTNAME";
1112
public const string AzureWebsiteOwnerName = "WEBSITE_OWNER_NAME";
1213
public const string AzureWebsiteInstanceId = "WEBSITE_INSTANCE_ID";
1314
public const string AzureWebsiteSku = "WEBSITE_SKU";

test/WebJobs.Script.Tests/SystemTraceWriterTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public SystemTraceWriterTests()
2727
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteOwnerName, $"{_subscriptionId}+westuswebspace");
2828

2929
_websiteName = "functionstest";
30-
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteName, _websiteName);
30+
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteHostName, $"{_websiteName}.azurewebsites.net");
3131

3232
_mockEventGenerator = new Mock<IEventGenerator>(MockBehavior.Strict);
3333
_traceWriter = new SystemTraceWriter(_mockEventGenerator.Object, _settingsManager, TraceLevel.Verbose);
@@ -76,7 +76,7 @@ public void Trace_Error_EmitsExpectedEvent()
7676
public void Dispose()
7777
{
7878
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteOwnerName, null);
79-
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteName, null);
79+
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteHostName, null);
8080
}
8181
}
8282
}

0 commit comments

Comments
 (0)