Skip to content

Commit

Permalink
Reapply "Simplify updating the primary workspace without passing in a…
Browse files Browse the repository at this point in the history
… version" (dotnet#72723)

This reverts commit 01a6b9c.
  • Loading branch information
CyrusNajmabadi committed Mar 29, 2024
1 parent 0f35ec3 commit 4f5fa98
Show file tree
Hide file tree
Showing 7 changed files with 81 additions and 126 deletions.
9 changes: 2 additions & 7 deletions src/EditorFeatures/Core/Remote/SolutionChecksumUpdater.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,6 @@ public SolutionChecksumUpdater(
listener,
shutdownToken);

// Use an equality comparer here as we will commonly get lots of change notifications that will all be
// associated with the same cancellation token controlling that batch of work. No need to enqueue the same
// token a huge number of times when we only need the single value of it when doing the work.
_synchronizeWorkspaceQueue = new AsyncBatchingWorkQueue(
DelayTimeSpan.NearImmediate,
SynchronizePrimaryWorkspaceAsync,
Expand Down Expand Up @@ -142,17 +139,15 @@ private void OnWorkspaceChanged(object? sender, WorkspaceChangeEventArgs e)

private async ValueTask SynchronizePrimaryWorkspaceAsync(CancellationToken cancellationToken)
{
var solution = _workspace.CurrentSolution;
var client = await RemoteHostClient.TryGetClientAsync(_workspace, cancellationToken).ConfigureAwait(false);
if (client == null)
return;

using (Logger.LogBlock(FunctionId.SolutionChecksumUpdater_SynchronizePrimaryWorkspace, cancellationToken))
{
var workspaceVersion = solution.WorkspaceVersion;
await client.TryInvokeAsync<IRemoteAssetSynchronizationService>(
solution,
(service, solution, cancellationToken) => service.SynchronizePrimaryWorkspaceAsync(solution, workspaceVersion, cancellationToken),
_workspace.CurrentSolution,
(service, solution, cancellationToken) => service.SynchronizePrimaryWorkspaceAsync(solution, cancellationToken),
cancellationToken).ConfigureAwait(false);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ public async Task TestDesignerAttributes()
// Ensure remote workspace is in sync with normal workspace.
var assetProvider = await GetAssetProviderAsync(workspace, remoteWorkspace, solution);
var solutionChecksum = await solution.CompilationState.GetChecksumAsync(CancellationToken.None);
await remoteWorkspace.UpdatePrimaryBranchSolutionAsync(assetProvider, solutionChecksum, solution.WorkspaceVersion, CancellationToken.None);
await remoteWorkspace.UpdatePrimaryBranchSolutionAsync(assetProvider, solutionChecksum, CancellationToken.None);

var callback = new DesignerAttributeComputerCallback();

Expand Down Expand Up @@ -188,7 +188,7 @@ public async Task TestDesignerAttributesUnsupportedLanguage()
// Ensure remote workspace is in sync with normal workspace.
var assetProvider = await GetAssetProviderAsync(workspace, remoteWorkspace, solution);
var solutionChecksum = await solution.CompilationState.GetChecksumAsync(CancellationToken.None);
await remoteWorkspace.UpdatePrimaryBranchSolutionAsync(assetProvider, solutionChecksum, solution.WorkspaceVersion, CancellationToken.None);
await remoteWorkspace.UpdatePrimaryBranchSolutionAsync(assetProvider, solutionChecksum, CancellationToken.None);

var callback = new DesignerAttributeComputerCallback();

Expand Down Expand Up @@ -359,9 +359,8 @@ public async Task TestRemoteWorkspaceCircularReferences()
using var remoteWorkspace = new RemoteWorkspace(FeaturesTestCompositions.RemoteHost.GetHostServices());

// this shouldn't throw exception
var (solution, updated) = await remoteWorkspace.GetTestAccessor().TryUpdateWorkspaceCurrentSolutionAsync(
remoteWorkspace.GetTestAccessor().CreateSolutionFromInfo(solutionInfo), workspaceVersion: 1);
Assert.True(updated);
var solution = await remoteWorkspace.GetTestAccessor().UpdateWorkspaceCurrentSolutionAsync(
remoteWorkspace.GetTestAccessor().CreateSolutionFromInfo(solutionInfo));
Assert.NotNull(solution);
}

Expand Down Expand Up @@ -828,10 +827,9 @@ private static (Project project, ImmutableArray<Document> documents) GetProjectA

private static async Task UpdatePrimaryWorkspace(RemoteHostClient client, Solution solution)
{
var workspaceVersion = solution.WorkspaceVersion;
await client.TryInvokeAsync<IRemoteAssetSynchronizationService>(
solution,
async (service, solutionInfo, cancellationToken) => await service.SynchronizePrimaryWorkspaceAsync(solutionInfo, workspaceVersion, cancellationToken),
async (service, solutionInfo, cancellationToken) => await service.SynchronizePrimaryWorkspaceAsync(solutionInfo, cancellationToken),
CancellationToken.None);
}

Expand Down
Loading

0 comments on commit 4f5fa98

Please sign in to comment.