Skip to content

Commit 27a004f

Browse files
authored
link validate-inbound-local's resolver was using a stale copy (#602)
* link validate-inbound-local's resolver was using a stale copy * remove debug code
1 parent 03132f4 commit 27a004f

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

src/Elastic.Markdown/CrossLinks/CrossLinkResolver.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
33
// See the LICENSE file in the project root for more information
44

5+
using System.Collections.Frozen;
56
using System.Diagnostics.CodeAnalysis;
67
using System.Text.Json;
78
using System.Text.Json.Serialization;
@@ -39,19 +40,27 @@ public interface ICrossLinkResolver
3940

4041
public class CrossLinkResolver(CrossLinkFetcher fetcher) : ICrossLinkResolver
4142
{
42-
private FetchedCrossLinks _linkReferences = FetchedCrossLinks.Empty;
43+
private FetchedCrossLinks _crossLinks = FetchedCrossLinks.Empty;
4344

4445
public async Task<FetchedCrossLinks> FetchLinks()
4546
{
46-
_linkReferences = await fetcher.Fetch();
47-
return _linkReferences;
47+
_crossLinks = await fetcher.Fetch();
48+
return _crossLinks;
4849
}
4950

5051
public bool TryResolve(Action<string> errorEmitter, Uri crossLinkUri, [NotNullWhen(true)] out Uri? resolvedUri) =>
51-
TryResolve(errorEmitter, _linkReferences, crossLinkUri, out resolvedUri);
52+
TryResolve(errorEmitter, _crossLinks, crossLinkUri, out resolvedUri);
5253

5354
private static Uri BaseUri { get; } = new("https://docs-v3-preview.elastic.dev");
5455

56+
public FetchedCrossLinks UpdateLinkReference(string repository, LinkReference linkReference)
57+
{
58+
var dictionary = _crossLinks.LinkReferences.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
59+
dictionary[repository] = linkReference;
60+
_crossLinks = _crossLinks with { LinkReferences = dictionary.ToFrozenDictionary() };
61+
return _crossLinks;
62+
}
63+
5564
public static bool TryResolve(
5665
Action<string> errorEmitter,
5766
FetchedCrossLinks fetchedCrossLinks,

src/docs-assembler/Links/LinkIndexLinkChecker.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,31 +48,28 @@ Cancel ctx
4848
if (!Path.IsPathRooted(localLinksJson))
4949
localLinksJson = Path.Combine(Paths.Root.FullName, localLinksJson);
5050

51-
var dictionary = crossLinks.LinkReferences.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
5251
try
5352
{
5453
var json = await File.ReadAllTextAsync(localLinksJson, ctx);
5554
var localLinkReference = LinkReference.Deserialize(json);
56-
57-
dictionary[repository] = localLinkReference;
55+
crossLinks = resolver.UpdateLinkReference(repository, localLinkReference);
5856
}
5957
catch (Exception e)
6058
{
6159
_logger.LogError(e, "Failed to read {LocalLinksJson}", localLinksJson);
6260
throw;
6361
}
64-
crossLinks = crossLinks with { LinkReferences = dictionary.ToFrozenDictionary() };
6562

6663
_logger.LogInformation("Validating all cross links to {Repository}:// from all repositories published to link-index.json", repository);
6764

68-
return await ValidateCrossLinks(githubActionsService, crossLinks, resolver, [repository], ctx);
65+
return await ValidateCrossLinks(githubActionsService, crossLinks, resolver, repository, ctx);
6966
}
7067

7168
private async Task<int> ValidateCrossLinks(
7269
ICoreService githubActionsService,
7370
FetchedCrossLinks crossLinks,
7471
CrossLinkResolver resolver,
75-
string[]? repositoryFilter,
72+
string? currentRepository,
7673
Cancel ctx)
7774
{
7875
var collector = new ConsoleDiagnosticsCollector(logger, githubActionsService);
@@ -85,7 +82,7 @@ private async Task<int> ValidateCrossLinks(
8582
// if we are filtering we only want errors from inbound links to a certain
8683
// repository
8784
var uri = new Uri(crossLink);
88-
if (repositoryFilter != null && uri.Scheme != repository)
85+
if (currentRepository != null && uri.Scheme != currentRepository)
8986
continue;
9087

9188
_ = resolver.TryResolve(s =>

0 commit comments

Comments
 (0)