Use DriveInfo constructor to get drive from path #4125
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
Discord user
HB Stratos
reports that sometimes, a 20+ second delay occurs at the start of mod installation:Cause
Based on the log file provided, the delay happens between here:
CKAN/GUI/Main/MainInstall.cs
Line 204 in 1b5948f
and here:
CKAN/Core/CKANPathUtils.cs
Lines 135 to 139 in 1b5948f
CKAN doesn't do any significant work itself in that interval, but I suspect that there is a hibernating external HDD attached to this user's system, and
.GetDrive()
's loop over all the drives causes that drive to be woken up, which takes several seconds. When it's finally ready, the loop continues. That loop was implemented in #3631 because there was no property or function to get the drive associated with a path. However, reading up on the documentation a bit more,DriveInfo
's constructor can apparently accept an arbitrary fully qualified path, and returns the associated drive, just as we wanted:In testing, this even seems to work on Linux!
Changes
new DriveInfo(dir.FullName)
CKANPathUtils.CheckFreeSpace
now no longer does anything when itsbytesToStore
parameter is 0, which will skip some unnecessary IO when installing older modules that don't haveinstall_size
definedThis should avoid waking up slumbering HDDs during mod installaiton.