fs.watch: node[52551] (CarbonCore.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-21) #5463
Description
I'm getting an error which appears to be directly from libuv while using fs.watch
. I'm on OSX 10.8.3
and using node 0.10.5
. My ulimit -n
is 10480
.
I'm able to duplicate the error with the following example (it is a bit contrived but it simulates what is happening with our gruntjs/grunt-contrib-watch module). It only happens when you're watching a larger number of files and another process tries to watch the same files.
I've setup an example in a repo for duplicating the error:
git clone git://github.com/shama/fs-watch-error && cd fs-watch-error
npm install
npm test
Here is the code that duplicates the issue:
var fs = require('fs');
var glob = require('glob');
var limit = 9999;
glob('**/*', function(err, files) {
if (files.length > limit) files = files.slice(0, limit);
console.log('watching ' + files.length + ' files...');
files.forEach(function(file) {
fs.watch(file, function() {});
});
});
Then run node index.js & node index.js
on a large number of files and you should get:
2013-05-13 11:39 node[54911] (CarbonCore.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-21)
I'm looking into updating our module to avoid this error but I'm reporting it here because I believe it shouldn't error out to the console in that way. Considering that I don't seem to be able to catch that error and handle it more appropriately.
Thanks!