Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tool no-op with floating versions issues #5443

Closed
nkolev92 opened this issue Jun 19, 2017 · 1 comment
Closed

Tool no-op with floating versions issues #5443

nkolev92 opened this issue Jun 19, 2017 · 1 comment
Assignees
Labels
Area:RestoreNoOp The PackageReference no-op Area:RestoreTool V1/V2 tool restore Functionality:Restore
Milestone

Comments

@nkolev92
Copy link
Member

nkolev92 commented Jun 19, 2017

This is just a tracking task. This is the expected behavior and currently there's no ideas for actually solving this issue. Finding a proper solution would require a complete redesign of tool restore.

The design for tools has a lot of holes itself, as we bind it to a project, but it's actually global etc.
Due to that there's a great amount of cases where tool restore will not work.

The simple scenario here if we have 2 different version declarations that resolve to the same version.

  <ItemGroup>
    <DotNetCliToolReference Include="dotnet-api-search" Version="0.9.5" />
  </ItemGroup>

and

  <ItemGroup>
    <DotNetCliToolReference Include="dotnet-api-search" Version="1.0.0" />
  </ItemGroup>

Both these tools restores would resolve to 1.0.0 and both would end up writing to the same cache file.
In this case we're left at the mercy of the scheduler. Pigeonhole says only 1 restore can no-op, but since these tasks run asynchronously, it may happen that the cache file by the one that CAN no-op has been overriden by another one before we read the cache file.
Due to multiple threads trying to access the lock/cache files, there's many inconsistencies in the tool no-op.
All the known issues with tool no-op are related to the fact that multiple restores compete for the same assets/cache files.

//cc
@emgarten

@nkolev92 nkolev92 self-assigned this Jun 19, 2017
@nkolev92 nkolev92 added this to the Future-0 milestone Jun 19, 2017
@nkolev92 nkolev92 removed their assignment Jun 19, 2017
@nkolev92 nkolev92 added the Area:RestoreNoOp The PackageReference no-op label Jun 21, 2017
@nkolev92 nkolev92 added the Area:RestoreTool V1/V2 tool restore label Aug 8, 2017
@nkolev92
Copy link
Member Author

This is just a bad design, and we will not invest much time here.

Closing as won't fix.

@nkolev92 nkolev92 modified the milestones: Future-0, 4.6 Nov 28, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area:RestoreNoOp The PackageReference no-op Area:RestoreTool V1/V2 tool restore Functionality:Restore
Projects
None yet
Development

No branches or pull requests

1 participant