Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit dda8f0e

Browse files
Adding an instanceId to applciationCache to identify relevant log messages
1 parent e76a678 commit dda8f0e

File tree

6 files changed

+59
-51
lines changed

6 files changed

+59
-51
lines changed

src/GitHub.Api/Application/ApplicationManagerBase.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -187,22 +187,22 @@ public void RestartRepository()
187187
}
188188
}
189189

190-
protected void SetupMetrics(string unityVersion, bool firstRun)
190+
protected void SetupMetrics(string unityVersion, bool firstRun, Guid instanceId)
191191
{
192192
//Logger.Trace("Setup metrics");
193193

194194
var usagePath = Environment.UserCachePath.Combine(Constants.UsageFile);
195195

196-
string id = null;
196+
string userId = null;
197197
if (UserSettings.Exists(Constants.GuidKey))
198198
{
199-
id = UserSettings.Get(Constants.GuidKey);
199+
userId = UserSettings.Get(Constants.GuidKey);
200200
}
201201

202-
if (String.IsNullOrEmpty(id))
202+
if (String.IsNullOrEmpty(userId))
203203
{
204-
id = Guid.NewGuid().ToString();
205-
UserSettings.Set(Constants.GuidKey, id);
204+
userId = Guid.NewGuid().ToString();
205+
UserSettings.Set(Constants.GuidKey, userId);
206206
}
207207

208208
#if ENABLE_METRICS
@@ -212,11 +212,10 @@ protected void SetupMetrics(string unityVersion, bool firstRun)
212212
Environment.NodeJsExecutablePath,
213213
Environment.OctorunScriptPath);
214214

215-
UsageTracker = new UsageTracker(metricsService, UserSettings, usagePath, id, unityVersion);
215+
UsageTracker = new UsageTracker(metricsService, UserSettings, usagePath, userId, unityVersion, instanceId.ToString());
216216

217217
if (firstRun)
218218
{
219-
UsageTracker.CreateEntry();
220219
TaskManager.Run(UsageTracker.IncrementNumberOfStartups);
221220
}
222221
#endif

src/GitHub.Api/Metrics/IUsageTracker.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ public interface IUsageTracker
1414
void IncrementNumberOfLocalBranchDeletions();
1515
void IncrementNumberOfLocalBranchCheckouts();
1616
void IncrementNumberOfRemoteBranchCheckouts();
17-
void CreateEntry();
1817
}
1918

2019
class NullUsageTracker : IUsageTracker
@@ -31,8 +30,6 @@ public void IncrementNumberOfLocalBranchCreations() { }
3130
public void IncrementNumberOfLocalBranchDeletions() { }
3231
public void IncrementNumberOfLocalBranchCheckouts() { }
3332
public void IncrementNumberOfRemoteBranchCheckouts() { }
34-
public void CreateEntry() { }
35-
3633
public void SetMetricsService(IMetricsService instance) { }
3734
}
3835
}

src/GitHub.Api/Metrics/UsageModel.cs

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Globalization;
43
using System.Linq;
54

65
namespace GitHub.Unity
76
{
87
public class Usage
98
{
9+
public string InstanceId { get; set; }
1010
public Dimensions Dimensions { get; set; } = new Dimensions();
1111
public Measures Measures { get; set; } = new Measures();
1212
}
@@ -43,7 +43,7 @@ class UsageModel
4343

4444
private Usage currentUsage;
4545

46-
public Usage GetCurrentUsage(string appVersion, string unityVersion)
46+
public Usage GetCurrentUsage(string appVersion, string unityVersion, string instanceId)
4747
{
4848
Guard.ArgumentNotNullOrWhiteSpace(appVersion, "appVersion");
4949
Guard.ArgumentNotNullOrWhiteSpace(unityVersion, "unityVersion");
@@ -52,9 +52,7 @@ public Usage GetCurrentUsage(string appVersion, string unityVersion)
5252
if (currentUsage == null)
5353
{
5454
currentUsage = Reports
55-
.Last(usage => usage.Dimensions.Date == date
56-
&& usage.Dimensions.AppVersion == appVersion
57-
&& usage.Dimensions.UnityVersion == unityVersion);
55+
.FirstOrDefault(usage => usage.InstanceId == instanceId);
5856
}
5957

6058
if (currentUsage?.Dimensions.Date == date)
@@ -65,7 +63,17 @@ public Usage GetCurrentUsage(string appVersion, string unityVersion)
6563
}
6664
else
6765
{
68-
throw new InvalidOperationException("Current usage not found");
66+
currentUsage = new Usage
67+
{
68+
InstanceId = instanceId,
69+
Dimensions = {
70+
Date = date,
71+
Guid = Guid,
72+
AppVersion = appVersion,
73+
UnityVersion = unityVersion
74+
}
75+
};
76+
Reports.Add(currentUsage);
6977
}
7078

7179
return currentUsage;
@@ -80,23 +88,6 @@ public void RemoveReports(DateTime beforeDate)
8088
{
8189
Reports.RemoveAll(usage => usage.Dimensions.Date.Date != beforeDate.Date);
8290
}
83-
84-
public void CreateEntry(string appVersion, string unityVersion)
85-
{
86-
var date = DateTime.UtcNow.Date;
87-
currentUsage = new Usage {
88-
Dimensions = {
89-
Date = date,
90-
Guid = Guid,
91-
AppVersion = appVersion,
92-
UnityVersion = unityVersion,
93-
Lang = CultureInfo.InstalledUICulture.IetfLanguageTag,
94-
CurrentLang = CultureInfo.CurrentCulture.IetfLanguageTag
95-
}
96-
};
97-
98-
Reports.Add(currentUsage);
99-
}
10091
}
10192

10293
class UsageStore

src/GitHub.Api/Metrics/UsageTracker.cs

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,21 @@ class UsageTracker : IUsageTracker
1717
private readonly NPath storePath;
1818
private readonly ISettings userSettings;
1919
private readonly IMetricsService metricsService;
20-
private readonly string guid;
20+
private readonly string userId;
2121
private readonly string unityVersion;
22+
private readonly string instanceId;
2223
private Timer timer;
2324

24-
public UsageTracker(IMetricsService metricsService, ISettings userSettings, NPath storePath, string guid, string unityVersion)
25+
public UsageTracker(IMetricsService metricsService, ISettings userSettings, NPath storePath, string userId, string unityVersion, string instanceId)
2526
{
2627
this.userSettings = userSettings;
2728
this.metricsService = metricsService;
28-
this.guid = guid;
29+
this.userId = userId;
2930
this.storePath = storePath;
3031
this.unityVersion = unityVersion;
32+
this.instanceId = instanceId;
3133

32-
Logger.Trace("guid:{0}", guid);
34+
Logger.Trace("userId:{0} instanceId:{1}", userId, instanceId);
3335
if (Enabled)
3436
RunTimer(3*60);
3537
}
@@ -66,7 +68,7 @@ private UsageStore LoadUsage()
6668
result = new UsageStore();
6769

6870
if (String.IsNullOrEmpty(result.Model.Guid))
69-
result.Model.Guid = guid;
71+
result.Model.Guid = userId;
7072

7173
return result;
7274
}
@@ -154,17 +156,7 @@ private async Task SendUsage()
154156

155157
private Usage GetCurrentUsage(UsageStore usageStore)
156158
{
157-
return usageStore.Model.GetCurrentUsage(ApplicationConfiguration.AssemblyName.Version.ToString(), unityVersion);
158-
}
159-
160-
public void CreateEntry()
161-
{
162-
Logger.Trace("CreateEntry: \"{0}\"", storePath);
163-
164-
var usageStore = LoadUsage();
165-
usageStore.Model.CreateEntry(ApplicationConfiguration.AssemblyName.Version.ToString(), unityVersion);
166-
167-
SaveUsage(usageStore);
159+
return usageStore.Model.GetCurrentUsage(ApplicationConfiguration.AssemblyName.Version.ToString(), unityVersion, instanceId);
168160
}
169161

170162
public void IncrementNumberOfStartups()

src/UnityExtension/Assets/Editor/GitHub.Unity/ApplicationCache.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ sealed class ApplicationCache : ScriptObjectSingleton<ApplicationCache>
1414
{
1515
[SerializeField] private bool firstRun = true;
1616
[SerializeField] public string firstRunAtString;
17+
[SerializeField] public string instanceIdString;
18+
[NonSerialized] private Guid? instanceId;
1719
[NonSerialized] private bool? firstRunValue;
1820
[NonSerialized] public DateTimeOffset? firstRunAtValue;
1921

@@ -60,6 +62,33 @@ private void EnsureFirstRun()
6062
Save(true);
6163
}
6264
}
65+
66+
public Guid InstanceId
67+
{
68+
get
69+
{
70+
EnsureInstanceId();
71+
return instanceId.Value;
72+
}
73+
}
74+
75+
private void EnsureInstanceId()
76+
{
77+
if (instanceId.HasValue)
78+
{
79+
return;
80+
}
81+
82+
if (string.IsNullOrEmpty(instanceIdString))
83+
{
84+
instanceId = Guid.NewGuid();
85+
instanceIdString = instanceId.ToString();
86+
}
87+
else
88+
{
89+
instanceId = new Guid(instanceIdString);
90+
}
91+
}
6392
}
6493

6594
sealed class EnvironmentCache : ScriptObjectSingleton<EnvironmentCache>

src/UnityExtension/Assets/Editor/GitHub.Unity/ApplicationManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public ApplicationManager(IMainThreadSynchronizationContext synchronizationConte
2323

2424
protected override void SetupMetrics()
2525
{
26-
SetupMetrics(Environment.UnityVersion, ApplicationCache.Instance.FirstRun);
26+
SetupMetrics(Environment.UnityVersion, ApplicationCache.Instance.FirstRun, ApplicationCache.Instance.InstanceId);
2727
}
2828

2929
protected override void InitializeUI()

0 commit comments

Comments
 (0)