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

Commit 4ac0f04

Browse files
Handling the UpdatedTime in CacheUpdateEvent better
UpdatedTime was not being serialized in the proper format and this was causing needles updates to views from cache
1 parent a66bd28 commit 4ac0f04

File tree

3 files changed

+41
-39
lines changed

3 files changed

+41
-39
lines changed

src/GitHub.Api/Git/ManagedCacheExtensions.cs

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/GitHub.Api/Git/Repository.cs

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -111,31 +111,31 @@ public ITask ReleaseLock(string file, bool force)
111111
public void CheckLogChangedEvent(CacheUpdateEvent cacheUpdateEvent)
112112
{
113113
var managedCache = cacheContainer.GitLogCache;
114-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent);
114+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
115115

116116
Logger.Trace("Check GitLogCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
117117
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
118118

119119
if (raiseEvent)
120120
{
121121
var dateTimeOffset = managedCache.LastUpdatedAt;
122-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
122+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset };
123123
HandleGitLogCacheUpdatedEvent(updateEvent);
124124
}
125125
}
126126

127127
public void CheckStatusChangedEvent(CacheUpdateEvent cacheUpdateEvent)
128128
{
129129
var managedCache = cacheContainer.GitStatusCache;
130-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent);
130+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
131131

132132
Logger.Trace("Check GitStatusCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
133133
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
134134

135135
if (raiseEvent)
136136
{
137137
var dateTimeOffset = managedCache.LastUpdatedAt;
138-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
138+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset };
139139
HandleGitStatusCacheUpdatedEvent(updateEvent);
140140
}
141141
}
@@ -158,32 +158,31 @@ public void CheckCurrentBranchAndRemoteChangedEvent(CacheUpdateEvent cacheUpdate
158158
private void CheckRepositoryInfoCacheEvent(CacheUpdateEvent cacheUpdateEvent)
159159
{
160160
var managedCache = cacheContainer.RepositoryInfoCache;
161-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent);
161+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
162162

163163
Logger.Trace("Check RepositoryInfoCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
164164
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
165165

166166
if (raiseEvent)
167167
{
168168
var dateTimeOffset = managedCache.LastUpdatedAt;
169-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
169+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset};
170170
HandleRepositoryInfoCacheUpdatedEvent(updateEvent);
171171
}
172172
}
173173

174174
public void CheckLocksChangedEvent(CacheUpdateEvent cacheUpdateEvent)
175175
{
176-
CacheUpdateEvent cacheUpdateEvent1 = cacheUpdateEvent;
177176
var managedCache = cacheContainer.GitLocksCache;
178-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent1);
177+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
179178

180179
Logger.Trace("Check GitLocksCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
181-
cacheUpdateEvent1.UpdatedTimeString ?? "[NULL]", raiseEvent);
180+
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
182181

183182
if (raiseEvent)
184183
{
185184
var dateTimeOffset = managedCache.LastUpdatedAt;
186-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
185+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset };
187186
HandleGitLocksCacheUpdatedEvent(updateEvent);
188187
}
189188
}
@@ -238,15 +237,15 @@ public bool Equals(IRepository other)
238237
private void CheckBranchCacheEvent(CacheUpdateEvent cacheUpdateEvent)
239238
{
240239
var managedCache = cacheContainer.BranchCache;
241-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent);
240+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
242241

243242
Logger.Trace("Check BranchCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
244243
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
245244

246245
if (raiseEvent)
247246
{
248247
var dateTimeOffset = managedCache.LastUpdatedAt;
249-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
248+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset };
250249
HandleBranchCacheUpdatedEvent(updateEvent);
251250
}
252251
}
@@ -283,7 +282,7 @@ private void CacheContainer_OnCacheInvalidated(CacheType cacheType)
283282

284283
private void CacheContainer_OnCacheUpdated(CacheType cacheType, DateTimeOffset offset)
285284
{
286-
var cacheUpdateEvent = new CacheUpdateEvent { UpdatedTimeString = offset.ToString() };
285+
var cacheUpdateEvent = new CacheUpdateEvent { UpdatedTime = offset };
287286
switch (cacheType)
288287
{
289288
case CacheType.BranchCache:
@@ -587,15 +586,15 @@ public User(ICacheContainer cacheContainer)
587586
public void CheckUserChangedEvent(CacheUpdateEvent cacheUpdateEvent)
588587
{
589588
var managedCache = cacheContainer.GitUserCache;
590-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent);
589+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
591590

592591
Logger.Trace("Check GitUserCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
593592
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
594593

595594
if (raiseEvent)
596595
{
597596
var dateTimeOffset = managedCache.LastUpdatedAt;
598-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
597+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset };
599598
HandleUserCacheUpdatedEvent(updateEvent);
600599
}
601600
}
@@ -642,7 +641,7 @@ private void GitUserCacheOnCacheUpdated(DateTimeOffset timeOffset)
642641
{
643642
HandleUserCacheUpdatedEvent(new CacheUpdateEvent
644643
{
645-
UpdatedTimeString = timeOffset.ToString()
644+
UpdatedTime = timeOffset
646645
});
647646
}
648647

@@ -682,6 +681,31 @@ private void UpdateUserAndEmail()
682681
[Serializable]
683682
public struct CacheUpdateEvent
684683
{
685-
public string UpdatedTimeString;
684+
[NonSerialized] private DateTimeOffset? updatedTimeValue;
685+
private string updatedTimeString;
686+
687+
public DateTimeOffset UpdatedTime
688+
{
689+
get
690+
{
691+
if (!updatedTimeValue.HasValue)
692+
{
693+
UpdatedTime = DateTimeOffset.MinValue;
694+
}
695+
696+
return updatedTimeValue.Value;
697+
}
698+
set
699+
{
700+
updatedTimeValue = value;
701+
UpdatedTimeString = value.ToString(Constants.Iso8601Format);
702+
}
703+
}
704+
705+
public string UpdatedTimeString
706+
{
707+
get { return updatedTimeString; }
708+
private set { updatedTimeString = value; }
709+
}
686710
}
687711
}

src/GitHub.Api/GitHub.Api.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@
103103
<Compile Include="Application\Organization.cs" />
104104
<Compile Include="Cache\CacheInterfaces.cs" />
105105
<Compile Include="Extensions\ListExtensions.cs" />
106-
<Compile Include="Git\ManagedCacheExtensions.cs" />
107106
<Compile Include="Git\Tasks\GitLfsVersionTask.cs" />
108107
<Compile Include="Git\Tasks\GitVersionTask.cs" />
109108
<Compile Include="Git\ValidateGitInstallResult.cs" />

0 commit comments

Comments
 (0)