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

Commit 05bc1bf

Browse files
committed
Make sure we always call UsageTracker off the main thread
1 parent 7c66dde commit 05bc1bf

File tree

12 files changed

+95
-69
lines changed

12 files changed

+95
-69
lines changed

src/GitHub.Api/Application/ApplicationManagerBase.cs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ protected void Initialize()
4747
ApplicationConfiguration.WebTimeout = UserSettings.Get(Constants.WebTimeoutKey, ApplicationConfiguration.WebTimeout);
4848
Platform.Initialize(ProcessManager, TaskManager);
4949
progress.OnProgress += progressReporter.UpdateProgress;
50-
UsageTracker = new UsageTracker(UserSettings, Environment, InstanceId.ToString());
50+
UsageTracker = new UsageTracker(TaskManager, UserSettings, Environment, InstanceId.ToString());
5151

5252
#if ENABLE_METRICS
5353
var metricsService = new MetricsService(ProcessManager,
@@ -64,12 +64,16 @@ public void Run()
6464
isBusy = true;
6565
progress.UpdateProgress(0, 100, "Initializing...");
6666

67+
if (firstRun)
68+
{
69+
UsageTracker.IncrementNumberOfStartups();
70+
}
71+
6772
var thread = new Thread(() =>
6873
{
6974
GitInstallationState state = new GitInstallationState();
7075
try
7176
{
72-
SetupMetrics();
7377
if (Environment.IsMac)
7478
{
7579
var getEnvPath = new SimpleProcessTask(TaskManager.Token, "bash".ToNPath(), "-c \"/usr/libexec/path_helper\"")
@@ -256,7 +260,6 @@ public void InitializeRepository()
256260
GitClient.Commit("Initial commit", null).RunWithReturn(true);
257261
progress.UpdateProgress(70, 100, "Initializing...");
258262
Environment.InitializeRepository();
259-
UsageTracker.IncrementProjectsInitialized();
260263
}
261264
catch (Exception ex)
262265
{
@@ -270,6 +273,7 @@ public void InitializeRepository()
270273
progress.UpdateProgress(90, 100, "Initializing...");
271274
RestartRepository();
272275
TaskManager.RunInUI(InitializeUI);
276+
UsageTracker.IncrementProjectsInitialized();
273277
progress.UpdateProgress(100, 100, "Initialized");
274278
}
275279
isBusy = false;
@@ -342,14 +346,6 @@ public void RestartRepository()
342346
Logger.Trace($"Got a repository? {(Environment.Repository != null ? Environment.Repository.LocalPath : "null")}");
343347
}
344348

345-
protected void SetupMetrics()
346-
{
347-
if (firstRun)
348-
{
349-
UsageTracker.IncrementNumberOfStartups();
350-
}
351-
}
352-
353349
protected abstract void InitializeUI();
354350
protected abstract void InitializationComplete();
355351

src/GitHub.Api/Metrics/UsageTracker.cs

Lines changed: 65 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
namespace GitHub.Unity
88
{
9-
class UsageTracker : IUsageTracker
9+
class UsageTrackerSync : IUsageTracker
1010
{
1111
private static ILogging Logger { get; } = LogHelper.GetLogger<UsageTracker>();
1212

@@ -22,16 +22,7 @@ class UsageTracker : IUsageTracker
2222

2323
public IMetricsService MetricsService { get; set; }
2424

25-
public UsageTracker(ISettings userSettings,
26-
IEnvironment environment, string instanceId)
27-
: this(userSettings,
28-
new UsageLoader(environment.UserCachePath.Combine(Constants.UsageFile)),
29-
environment.UnityVersion, instanceId)
30-
{
31-
}
32-
33-
public UsageTracker(ISettings userSettings,
34-
IUsageLoader usageLoader,
25+
public UsageTrackerSync(ISettings userSettings, IUsageLoader usageLoader,
3526
string unityVersion, string instanceId)
3627
{
3728
this.userSettings = userSettings;
@@ -123,7 +114,7 @@ private void SendUsage()
123114
}
124115
}
125116

126-
public void IncrementNumberOfStartups()
117+
public virtual void IncrementNumberOfStartups()
127118
{
128119
lock (_lock)
129120
{
@@ -134,7 +125,7 @@ public void IncrementNumberOfStartups()
134125
}
135126
}
136127

137-
public void IncrementProjectsInitialized()
128+
public virtual void IncrementProjectsInitialized()
138129
{
139130
lock (_lock)
140131
{
@@ -145,7 +136,7 @@ public void IncrementProjectsInitialized()
145136
}
146137
}
147138

148-
public void IncrementChangesViewButtonCommit()
139+
public virtual void IncrementChangesViewButtonCommit()
149140
{
150141
lock (_lock)
151142
{
@@ -156,7 +147,7 @@ public void IncrementChangesViewButtonCommit()
156147
}
157148
}
158149

159-
public void IncrementHistoryViewToolbarFetch()
150+
public virtual void IncrementHistoryViewToolbarFetch()
160151
{
161152
lock (_lock)
162153
{
@@ -167,7 +158,7 @@ public void IncrementHistoryViewToolbarFetch()
167158
}
168159
}
169160

170-
public void IncrementHistoryViewToolbarPush()
161+
public virtual void IncrementHistoryViewToolbarPush()
171162
{
172163
lock (_lock)
173164
{
@@ -178,7 +169,7 @@ public void IncrementHistoryViewToolbarPush()
178169
}
179170
}
180171

181-
public void IncrementHistoryViewToolbarPull()
172+
public virtual void IncrementHistoryViewToolbarPull()
182173
{
183174
lock (_lock)
184175
{
@@ -189,7 +180,7 @@ public void IncrementHistoryViewToolbarPull()
189180
}
190181
}
191182

192-
public void IncrementBranchesViewButtonCreateBranch()
183+
public virtual void IncrementBranchesViewButtonCreateBranch()
193184
{
194185
lock (_lock)
195186
{
@@ -200,7 +191,7 @@ public void IncrementBranchesViewButtonCreateBranch()
200191
}
201192
}
202193

203-
public void IncrementBranchesViewButtonDeleteBranch()
194+
public virtual void IncrementBranchesViewButtonDeleteBranch()
204195
{
205196
lock (_lock)
206197
{
@@ -211,7 +202,7 @@ public void IncrementBranchesViewButtonDeleteBranch()
211202
}
212203
}
213204

214-
public void IncrementBranchesViewButtonCheckoutLocalBranch()
205+
public virtual void IncrementBranchesViewButtonCheckoutLocalBranch()
215206
{
216207
lock (_lock)
217208
{
@@ -222,7 +213,7 @@ public void IncrementBranchesViewButtonCheckoutLocalBranch()
222213
}
223214
}
224215

225-
public void IncrementBranchesViewButtonCheckoutRemoteBranch()
216+
public virtual void IncrementBranchesViewButtonCheckoutRemoteBranch()
226217
{
227218
lock (_lock)
228219
{
@@ -233,7 +224,7 @@ public void IncrementBranchesViewButtonCheckoutRemoteBranch()
233224
}
234225
}
235226

236-
public void IncrementSettingsViewButtonLfsUnlock()
227+
public virtual void IncrementSettingsViewButtonLfsUnlock()
237228
{
238229
lock (_lock)
239230
{
@@ -244,7 +235,7 @@ public void IncrementSettingsViewButtonLfsUnlock()
244235
}
245236
}
246237

247-
public void IncrementAuthenticationViewButtonAuthentication()
238+
public virtual void IncrementAuthenticationViewButtonAuthentication()
248239
{
249240
lock (_lock)
250241
{
@@ -255,7 +246,7 @@ public void IncrementAuthenticationViewButtonAuthentication()
255246
}
256247
}
257248

258-
public void IncrementUnityProjectViewContextLfsLock()
249+
public virtual void IncrementUnityProjectViewContextLfsLock()
259250
{
260251
lock (_lock)
261252
{
@@ -266,7 +257,7 @@ public void IncrementUnityProjectViewContextLfsLock()
266257
}
267258
}
268259

269-
public void IncrementUnityProjectViewContextLfsUnlock()
260+
public virtual void IncrementUnityProjectViewContextLfsUnlock()
270261
{
271262
lock (_lock)
272263
{
@@ -277,7 +268,7 @@ public void IncrementUnityProjectViewContextLfsUnlock()
277268
}
278269
}
279270

280-
public void IncrementPublishViewButtonPublish()
271+
public virtual void IncrementPublishViewButtonPublish()
281272
{
282273
lock (_lock)
283274
{
@@ -288,7 +279,7 @@ public void IncrementPublishViewButtonPublish()
288279
}
289280
}
290281

291-
public void IncrementApplicationMenuMenuItemCommandLine()
282+
public virtual void IncrementApplicationMenuMenuItemCommandLine()
292283
{
293284
lock (_lock)
294285
{
@@ -299,18 +290,24 @@ public void IncrementApplicationMenuMenuItemCommandLine()
299290
}
300291
}
301292

302-
public void UpdateRepoSize(int kilobytes)
293+
public virtual void UpdateRepoSize(int kilobytes)
303294
{
304-
var usage = usageLoader.Load(userId);
305-
usage.GetCurrentMeasures(appVersion, unityVersion, instanceId).GitRepoSize = kilobytes;
306-
usageLoader.Save(usage);
295+
lock (_lock)
296+
{
297+
var usage = usageLoader.Load(userId);
298+
usage.GetCurrentMeasures(appVersion, unityVersion, instanceId).GitRepoSize = kilobytes;
299+
usageLoader.Save(usage);
300+
}
307301
}
308302

309-
public void UpdateLfsDiskUsage(int kilobytes)
303+
public virtual void UpdateLfsDiskUsage(int kilobytes)
310304
{
311-
var usage = usageLoader.Load(userId);
312-
usage.GetCurrentMeasures(appVersion, unityVersion, instanceId).LfsDiskUsage = kilobytes;
313-
usageLoader.Save(usage);
305+
lock (_lock)
306+
{
307+
var usage = usageLoader.Load(userId);
308+
usage.GetCurrentMeasures(appVersion, unityVersion, instanceId).LfsDiskUsage = kilobytes;
309+
usageLoader.Save(usage);
310+
}
314311
}
315312

316313
public bool Enabled
@@ -337,6 +334,39 @@ public bool Enabled
337334
}
338335
}
339336

337+
class UsageTracker : UsageTrackerSync
338+
{
339+
public UsageTracker(ITaskManager taskManager, ISettings userSettings,
340+
IEnvironment environment, string instanceId)
341+
: base(userSettings,
342+
new UsageLoader(environment.UserCachePath.Combine(Constants.UsageFile)),
343+
environment.UnityVersion, instanceId)
344+
{
345+
TaskManager = taskManager;
346+
}
347+
348+
public override void IncrementApplicationMenuMenuItemCommandLine() => TaskManager.Run(base.IncrementApplicationMenuMenuItemCommandLine);
349+
public override void IncrementAuthenticationViewButtonAuthentication() => TaskManager.Run(base.IncrementAuthenticationViewButtonAuthentication);
350+
public override void IncrementBranchesViewButtonCheckoutLocalBranch() => TaskManager.Run(base.IncrementBranchesViewButtonCheckoutLocalBranch);
351+
public override void IncrementBranchesViewButtonCheckoutRemoteBranch() => TaskManager.Run(base.IncrementBranchesViewButtonCheckoutRemoteBranch);
352+
public override void IncrementBranchesViewButtonCreateBranch() => TaskManager.Run(base.IncrementBranchesViewButtonCreateBranch);
353+
public override void IncrementBranchesViewButtonDeleteBranch() => TaskManager.Run(base.IncrementBranchesViewButtonDeleteBranch);
354+
public override void IncrementChangesViewButtonCommit() => TaskManager.Run(base.IncrementChangesViewButtonCommit);
355+
public override void IncrementHistoryViewToolbarFetch() => TaskManager.Run(base.IncrementHistoryViewToolbarFetch);
356+
public override void IncrementHistoryViewToolbarPull() => TaskManager.Run(base.IncrementHistoryViewToolbarPull);
357+
public override void IncrementHistoryViewToolbarPush() => TaskManager.Run(base.IncrementHistoryViewToolbarPush);
358+
public override void IncrementNumberOfStartups() => TaskManager.Run(base.IncrementNumberOfStartups);
359+
public override void IncrementProjectsInitialized() => TaskManager.Run(base.IncrementProjectsInitialized);
360+
public override void IncrementPublishViewButtonPublish() => TaskManager.Run(base.IncrementPublishViewButtonPublish);
361+
public override void IncrementSettingsViewButtonLfsUnlock() => TaskManager.Run(base.IncrementSettingsViewButtonLfsUnlock);
362+
public override void IncrementUnityProjectViewContextLfsLock() => TaskManager.Run(base.IncrementUnityProjectViewContextLfsLock);
363+
public override void IncrementUnityProjectViewContextLfsUnlock() => TaskManager.Run(base.IncrementUnityProjectViewContextLfsUnlock);
364+
public override void UpdateLfsDiskUsage(int kilobytes) => TaskManager.Run(() => base.UpdateLfsDiskUsage(kilobytes));
365+
public override void UpdateRepoSize(int kilobytes) => TaskManager.Run(() => base.UpdateRepoSize(kilobytes));
366+
367+
protected ITaskManager TaskManager { get; }
368+
}
369+
340370
interface IUsageLoader
341371
{
342372
UsageStore Load(string userId);

src/GitHub.Api/Tasks/ITaskManager.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ public interface ITaskManager : IDisposable
1313

1414
T Schedule<T>(T task) where T : ITask;
1515
Task Wait();
16-
ITask Run(Action action, string message);
16+
ITask Run(Action action, string message = null);
1717
ITask RunInUI(Action action);
1818
event Action<IProgress> OnProgress;
1919
}
20-
}
20+
}

src/GitHub.Api/Tasks/TaskManager.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public static TaskScheduler GetScheduler(TaskAffinity affinity)
5858
}
5959
}
6060

61-
public ITask Run(Action action, string message)
61+
public ITask Run(Action action, string message = null)
6262
{
6363
return new ActionTask(Token, action) { Message = message }.Start();
6464
}
@@ -167,4 +167,4 @@ public void Dispose()
167167
Dispose(true);
168168
}
169169
}
170-
}
170+
}

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/AuthenticationView.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ private void DoResult(bool success, string msg)
209209
isBusy = false;
210210
if (success)
211211
{
212-
TaskManager.Run(UsageTracker.IncrementAuthenticationViewButtonAuthentication, null);
212+
UsageTracker.IncrementAuthenticationViewButtonAuthentication();
213213

214214
Clear();
215215
Finish(true);

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ private void OnButtonBarGUI()
319319
{
320320
if (success)
321321
{
322-
TaskManager.Run(UsageTracker.IncrementBranchesViewButtonCreateBranch, null);
322+
UsageTracker.IncrementBranchesViewButtonCreateBranch();
323323
Redraw();
324324
}
325325
else
@@ -489,7 +489,7 @@ private void CheckoutRemoteBranch(string branch)
489489
{
490490
if (success)
491491
{
492-
TaskManager.Run(UsageTracker.IncrementBranchesViewButtonCheckoutRemoteBranch, null);
492+
UsageTracker.IncrementBranchesViewButtonCheckoutRemoteBranch();
493493
Redraw();
494494
}
495495
else
@@ -512,7 +512,7 @@ private void SwitchBranch(string branch)
512512
{
513513
if (success)
514514
{
515-
TaskManager.Run(UsageTracker.IncrementBranchesViewButtonCheckoutLocalBranch, null);
515+
UsageTracker.IncrementBranchesViewButtonCheckoutLocalBranch();
516516
Redraw();
517517
}
518518
else
@@ -530,7 +530,7 @@ private void DeleteLocalBranch(string branch)
530530
if (EditorUtility.DisplayDialog(DeleteBranchTitle, dialogMessage, DeleteBranchButton, CancelButtonLabel))
531531
{
532532
Repository.DeleteBranch(branch, true)
533-
.Then(UsageTracker.IncrementBranchesViewButtonDeleteBranch)
533+
.Finally(s => { if (s) UsageTracker.IncrementBranchesViewButtonDeleteBranch(); } )
534534
.Start();
535535
}
536536
}

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/ChangesView.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ private void Commit()
405405
{
406406
if (success)
407407
{
408-
TaskManager.Run(UsageTracker.IncrementChangesViewButtonCommit, null);
408+
UsageTracker.IncrementChangesViewButtonCommit();
409409

410410
commitMessage = "";
411411
commitBody = "";

0 commit comments

Comments
 (0)