Skip to content

Commit a371747

Browse files
Avoid code file caching when for new tree style code files (#8874)
1 parent 5590e2b commit a371747

3 files changed

Lines changed: 13 additions & 12 deletions

File tree

src/dotnet/APIView/APIViewWeb/LeanControllers/ReviewsController.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,7 @@ public async Task<ActionResult<CodePanelData>> GetReviewContentAsync(string revi
137137
if (activeAPIRevision.Files[0].ParserStyle == ParserStyle.Tree)
138138
{
139139
var comments = await _commentsManager.GetCommentsAsync(reviewId);
140-
var cachedCodeFile = await _codeFileRepository.GetCodeFileAsync(revisionId: activeAPIRevision.Id, codeFileId: activeAPIRevision.Files[0].FileId);
141-
var activeRevisionReviewCodeFile = cachedCodeFile.CodeFile;
140+
var activeRevisionReviewCodeFile = await _codeFileRepository.GetCodeFileFromStorageAsync(revisionId: activeAPIRevision.Id, codeFileId: activeAPIRevision.Files[0].FileId);
142141

143142
var codePanelRawData = new CodePanelRawData()
144143
{
@@ -149,8 +148,7 @@ public async Task<ActionResult<CodePanelData>> GetReviewContentAsync(string revi
149148
if (!string.IsNullOrEmpty(diffApiRevisionId))
150149
{
151150
var diffAPIRevision = await _apiRevisionsManager.GetAPIRevisionAsync(User, diffApiRevisionId);
152-
var diffCodeFile = await _codeFileRepository.GetCodeFileAsync(revisionId: diffAPIRevision.Id, codeFileId: diffAPIRevision.Files[0].FileId);
153-
codePanelRawData.diffRevisionCodeFile = diffCodeFile.CodeFile;
151+
codePanelRawData.diffRevisionCodeFile = await _codeFileRepository.GetCodeFileFromStorageAsync(revisionId: diffAPIRevision.Id, codeFileId: diffAPIRevision.Files[0].FileId);
154152
}
155153

156154
// Render the code files to generate UI token tree

src/dotnet/APIView/APIViewWeb/Repositories/BlobCodeFileRepository.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,20 +36,15 @@ public Task<RenderedCodeFile> GetCodeFileAsync(APIRevisionListItemModel revision
3636

3737
public async Task<RenderedCodeFile> GetCodeFileAsync(string revisionId, APICodeFileModel apiCodeFile, string language, bool updateCache = true)
3838
{
39-
return await GetCodeFileAsync(revisionId, apiCodeFile.FileId, updateCache, apiCodeFile.ParserStyle == ParserStyle.Tree);
40-
}
41-
42-
public async Task<RenderedCodeFile> GetCodeFileAsync(string revisionId, string codeFileId, bool updateCache = true, bool doTreeStyleParserDeserialization = true)
43-
{
44-
var client = GetBlobClient(revisionId, codeFileId, out var key);
39+
var client = GetBlobClient(revisionId, apiCodeFile.FileId, out var key);
4540
if (_cache.TryGetValue<RenderedCodeFile>(key, out var codeFile))
4641
{
4742
return codeFile;
4843
}
4944

5045
var info = await client.DownloadAsync();
5146

52-
codeFile = new RenderedCodeFile(await CodeFile.DeserializeAsync(info.Value.Content, doTreeStyleParserDeserialization));
47+
codeFile = new RenderedCodeFile(await CodeFile.DeserializeAsync(info.Value.Content, false));
5348

5449
if (updateCache)
5550
{
@@ -58,6 +53,14 @@ public async Task<RenderedCodeFile> GetCodeFileAsync(string revisionId, string c
5853
.SetValue(codeFile);
5954
}
6055
return codeFile;
56+
}
57+
58+
public async Task<CodeFile> GetCodeFileFromStorageAsync(string revisionId, string codeFileId, bool doTreeStyleParserDeserialization = true)
59+
{
60+
var client = GetBlobClient(revisionId, codeFileId, out var key);
61+
var info = await client.DownloadAsync();
62+
var codeFile = await CodeFile.DeserializeAsync(info.Value.Content, doTreeStyleParserDeserialization);
63+
return codeFile;
6164
}
6265

6366
public async Task UpsertCodeFileAsync(string revisionId, string codeFileId, CodeFile codeFile)

src/dotnet/APIView/APIViewWeb/Repositories/Interfaces/IBlobCodeFileRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ public interface IBlobCodeFileRepository
99
{
1010
public Task<RenderedCodeFile> GetCodeFileAsync(APIRevisionListItemModel revision, bool updateCache = true);
1111
public Task<RenderedCodeFile> GetCodeFileAsync(string revisionId, APICodeFileModel apiCodeFile, string language, bool updateCache = true);
12-
public Task<RenderedCodeFile> GetCodeFileAsync(string revisionId, string codeFileId, bool updateCache = true, bool doTreeStyleParserDeserialization = true);
1312
public Task UpsertCodeFileAsync(string revisionId, string codeFileId, CodeFile codeFile);
1413
public Task DeleteCodeFileAsync(string revisionId, string codeFileId);
14+
public Task<CodeFile> GetCodeFileFromStorageAsync(string revisionId, string codeFileId, bool doTreeStyleParserDeserialization = true);
1515
}
1616
}

0 commit comments

Comments
 (0)