Skip to content

Commit bc5ecc6

Browse files
committed
Shorten logging when skipping directories
1 parent b2b493d commit bc5ecc6

File tree

3 files changed

+21
-14
lines changed

3 files changed

+21
-14
lines changed

src/Core/Chromium/ChromiumDiscovery.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
using System;
56
using System.Collections.Generic;
67
using System.Linq;
78
using VsChromium.Core.Configuration;
89
using VsChromium.Core.Files;
910
using VsChromium.Core.Files.PatternMatching;
11+
using VsChromium.Core.Logging;
1012
using VsChromium.Core.Win32.Files;
1113

1214
namespace VsChromium.Core.Chromium {
@@ -37,9 +39,15 @@ private bool IsChromiumSourceDirectory(FullPath path, IFilePatternsPathMatcherPr
3739
}
3840

3941
// We need to ensure that all pattern lines are covered by at least one file/directory of |path|.
40-
var entries = _fileSystem.GetDirectoryEntries(path);
41-
return chromiumEnlistmentFilePatterns.PathMatcherEntries
42-
.All(item => MatchFileOrDirectory(item, entries));
42+
try {
43+
var entries = _fileSystem.GetDirectoryEntries(path);
44+
return chromiumEnlistmentFilePatterns.PathMatcherEntries
45+
.All(item => MatchFileOrDirectory(item, entries));
46+
}
47+
catch (Exception e) {
48+
Logger.LogWarn(e, "Error detecting chromium root directory, skipping directory \"{0}\"", path);
49+
return false;
50+
}
4351
}
4452

4553
private static bool MatchFileOrDirectory(IPathMatcher item, IList<DirectoryEntry> entries) {

src/Core/Win32/Files/NativeFile.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,8 @@ public static unsafe List<DirectoryEntry> GetDirectoryEntries(string path) {
8484
IntPtr.Zero);
8585
if (fileHandle.IsInvalid) {
8686
var lastWin32Error = Marshal.GetLastWin32Error();
87-
if (lastWin32Error != (int)Win32Errors.ERROR_FILE_NOT_FOUND &&
88-
lastWin32Error != (int)Win32Errors.ERROR_PATH_NOT_FOUND &&
89-
lastWin32Error != (int)Win32Errors.ERROR_ACCESS_DENIED) {
90-
throw new LastWin32ErrorException(lastWin32Error,
91-
string.Format("Error enumerating files at \"{0}\".", path));
92-
}
93-
94-
// Skip this directory
95-
return directoryEntries;
87+
throw new LastWin32ErrorException(lastWin32Error,
88+
string.Format("Error enumerating files at \"{0}\".", path));
9689
}
9790

9891
using (fileHandle) {

src/Server/FileSystem/Builder/ProjectRootSnapshotBuilder.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System;
66
using System.Collections.Concurrent;
77
using System.Collections.Generic;
8+
using System.ComponentModel;
89
using System.Linq;
910
using System.Threading;
1011
using System.Threading.Tasks;
@@ -289,11 +290,16 @@ private List<Task> ProcessDirectory(DirectoryData directory, ConcurrentBag<Direc
289290
}
290291

291292
private IList<DirectoryEntry> GetDirectoryEntries(DirectoryData directory) {
293+
var path = _project.RootPath.Combine(directory.DirectoryName.RelativePath);
292294
try {
293-
return _fileSystem.GetDirectoryEntries(_project.RootPath.Combine(directory.DirectoryName.RelativePath));
295+
return _fileSystem.GetDirectoryEntries(path);
296+
}
297+
catch (Win32Exception e) {
298+
Logger.LogWarn("Skipping directory \"{0}\": {1} ({2})", path, e.Message, e.NativeErrorCode);
299+
return ArrayUtilities.EmptyList<DirectoryEntry>.Instance;
294300
}
295301
catch (Exception e) {
296-
Logger.LogWarn(e, "Skipping directory due to error");
302+
Logger.LogWarn(e, "Skipping directory \"{0}\"", path);
297303
return ArrayUtilities.EmptyList<DirectoryEntry>.Instance;
298304
}
299305
}

0 commit comments

Comments
 (0)