Change:
I'm using to mount a remote Azure Blob storage container into my local file system with FUSE. Once I open up that mount point (say ) in VSCode, network traffic immediately goes up to around 100 kb/s. In the storage provider's API logs I can see many thousand operation requests per second to files located at any hierarchy level inside my storage container, but also files that do not exists (e.g. ). I was assuming this is related to VSCode attempting to watch these files for changes, but can't use inotify on the remote share, so falls back to polling the files with a crazy frequency. However, applying the following settings didn't have any effect: Same issue occurs with or AWS S3 + and I presume also for sshfs, davfs2_ and the like. When killing the sub-process, I can observe a short decline in network usage until the process almost immediately restarts.
In this case I wonder if we should simply not install the file watcher at all if a setting is configured to disable it. I see no other workaround other than maybe addressing this in our external file watcher where we pass on these exclude rules.
Verification: run with and filter dev tools console to to see only file watcher related output configure to have an entry open a folder verify that in the output for the watcher you see no indication that the folder is being watched compare this to how the output looks like when you not have such a setting
<!-- AUTHORVERIFICATIONREQUEST --This bug has been fixed in the latest release of ! you can help us out by commenting if things are now working as expected. If things still don't seem right, please ensure you're on version of Insiders (today's or later - you can use in the command palette to check), and leave a comment letting us know what isn't working as expected. Happy Coding!

Discussion:
import { toErrorMessage } from 'vs/base/common/errorMessage'; import { Emitter } from 'vs/base/common/event'; import { isEqualOrParent, randomPath } from 'vs/base/common/extpath'; <del> import { ParsedPattern, patternsEquals } from 'vs/base/common/glob'; </del> <ins> import { GLOBSTAR, ParsedPattern, patternsEquals } from 'vs/base/common/glob'; </ins> import { Disposable } from 'vs/base/common/lifecycle'; import { TernarySearchTree } from 'vs/base/common/map'; import { normalizeNFC } from 'vs/base/common/normalization';

// Only consider requests for watching that are not // a child of an existing request path to prevent <del> // duplication. </del> <ins> // duplication. In addition, drop any request where // everything is excluded (via `**` glob). </ins> // // However, allow explicit requests to watch folders // that are symbolic links because the Parcel watcher // does not allow to recursively watch symbolic links. for (const request of requests) { <ins> if (request.excludes.includes(GLOBSTAR)) { continue; // path is ignored entirely (via `**` glob exclude) } </ins> if (requestTrie.findSubstr(request.path)) { try { const realpath = realpathSync(request.path);

class TestParcelWatcher extends ParcelWatcher { <del> testNormalizePaths(paths: string[]): string[] { </del> <ins> testNormalizePaths(paths: string[], excludes: string[] = []): string[] { </ins> // Work with strings as paths to simplify testing const requests: IRecursiveWatchRequest[] = paths.map(path => { <del> return { path, excludes: [], recursive: true }; </del> <ins> return { path, excludes, recursive: true }; </ins> }); return this.normalizeRequests(requests).map(request => request.path);

} }); <ins> test('should ignore when everything excluded', () => { assert.deepStrictEqual(watcher.testNormalizePaths(['/foo/bar', '/bar'], ['**', 'something']), []); }); </ins> test('excludes are converted to absolute paths', () => { // undefined / empty