summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron O'Mullan <aaron.omullan@friendco.de>2014-12-10 16:32:49 +0100
committerAaron O'Mullan <aaron.omullan@friendco.de>2014-12-10 16:32:49 +0100
commit960ef4d9459c2ec7158bdef8d73ae610b605b865 (patch)
treee0522d0cc5a6a9589bae0af211a8481eeed21776
parent92523fb4b54ddfcdf9586f8a2140fdc8b1d0793b (diff)
downloadgitbook-960ef4d9459c2ec7158bdef8d73ae610b605b865.zip
gitbook-960ef4d9459c2ec7158bdef8d73ae610b605b865.tar.gz
gitbook-960ef4d9459c2ec7158bdef8d73ae610b605b865.tar.bz2
Fix descriptor and me leak with bad write queues
Node.js for some reason queues up writes from fs.writeFile causing memory and descriptor leaks, preventing building large books. This is now fixed Fixes #336, fixes #454
-rw-r--r--lib/generate/fs.js15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/generate/fs.js b/lib/generate/fs.js
index 4c232e7..50219eb 100644
--- a/lib/generate/fs.js
+++ b/lib/generate/fs.js
@@ -64,7 +64,20 @@ var getFiles = function(path) {
module.exports = {
list: getFiles,
readFile: Q.denodeify(fs.readFile),
- writeFile: Q.denodeify(fs.writeFile),
+ //writeFile: Q.denodeify(fs.writeFile),
+ writeFile: function(filename, data, options) {
+ var d = Q.defer();
+
+ try {
+ fs.writeFileSync(filename, data, options)
+ } catch(err) {
+ d.reject(err);
+ }
+ d.resolve();
+
+
+ return d.promise;
+ },
mkdirp: Q.denodeify(fsExtra.mkdirp),
copy: Q.denodeify(fsExtra.copy),
remove: Q.denodeify(fsExtra.remove),