Skip to content

Fix: File watchers not being disposed in -watch mode#2535

Merged
ahejlsberg merged 1 commit into
masterfrom
disposeFileWatcher
Mar 28, 2015
Merged

Fix: File watchers not being disposed in -watch mode#2535
ahejlsberg merged 1 commit into
masterfrom
disposeFileWatcher

Conversation

@ahejlsberg
Copy link
Copy Markdown
Member

This PR fixes the command-line driver to properly dispose file watchers for modified files in -watch mode. We currently don't, which causes node.js to output a diagnostic after 10 watchers have been attached to the same file:

C:\temp>tsc -w t.ts
message TS6042: Compilation complete. Watching for file changes.
message TS6032: File change detected. Starting incremental compilation...
message TS6042: Compilation complete. Watching for file changes.
message TS6032: File change detected. Starting incremental compilation...
message TS6042: Compilation complete. Watching for file changes.
message TS6032: File change detected. Starting incremental compilation...
message TS6042: Compilation complete. Watching for file changes.
message TS6032: File change detected. Starting incremental compilation...
message TS6042: Compilation complete. Watching for file changes.
message TS6032: File change detected. Starting incremental compilation...
message TS6042: Compilation complete. Watching for file changes.
message TS6032: File change detected. Starting incremental compilation...
message TS6042: Compilation complete. Watching for file changes.
message TS6032: File change detected. Starting incremental compilation...
message TS6042: Compilation complete. Watching for file changes.
message TS6032: File change detected. Starting incremental compilation...
message TS6042: Compilation complete. Watching for file changes.
message TS6032: File change detected. Starting incremental compilation...
message TS6042: Compilation complete. Watching for file changes.
message TS6032: File change detected. Starting incremental compilation...
(node) warning: possible EventEmitter memory leak detected. 11 listeners added.
Use emitter.setMaxListeners() to increase limit.
Trace
    at StatWatcher.addListener (events.js:160:15)
    at Object.fs.watchFile (fs.js:1175:8)
    at Object.watchFile (C:\ts\built\local\tsc.js:1425:25)
    at Object.getSourceFile (C:\ts\built\local\tsc.js:24739:49)
    at findSourceFile (C:\ts\built\local\tsc.js:24037:62)
    at processSourceFile (C:\ts\built\local\tsc.js:24012:27)
    at processRootFile (C:\ts\built\local\tsc.js:23987:13)
    at C:\ts\built\local\tsc.js:23882:56
    at Object.forEach (C:\ts\built\local\tsc.js:608:30)
    at Object.createProgram (C:\ts\built\local\tsc.js:23882:12)
message TS6042: Compilation complete. Watching for file changes.

We don't have test coverage for -watch, but I have manually verified the fix.

@DanielRosenwasser
Copy link
Copy Markdown
Member

👍

ahejlsberg added a commit that referenced this pull request Mar 28, 2015
Fix: File watchers not being disposed in -watch mode
@ahejlsberg ahejlsberg merged commit 485b5a1 into master Mar 28, 2015
@ahejlsberg ahejlsberg deleted the disposeFileWatcher branch March 28, 2015 14:19
@microsoft microsoft locked and limited conversation to collaborators Jun 18, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants