Skip to content

Commit 8ee8972

Browse files
authored
Merge pull request #56 from log4js-node/unlink-error
fix: catch unlink errors during cleanup
2 parents c8cc67c + 8351a02 commit 8ee8972

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

lib/RollingFileWriteStream.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,9 @@ class RollingFileWriteStream extends Writable {
259259

260260
const deleteFiles = fileNames => {
261261
debug(`deleteFiles: files to delete: ${fileNames}`);
262-
return Promise.all(fileNames.map(f => fs.unlink(f)));
262+
return Promise.all(fileNames.map(f => fs.unlink(f).catch((e) => {
263+
debug(`deleteFiles: error when unlinking ${f}, ignoring. Error was ${e}`);
264+
})));
263265
};
264266

265267
module.exports = RollingFileWriteStream;

test/RollingFileWriteStream-test.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1416,4 +1416,26 @@ describe("RollingFileWriteStream", () => {
14161416
s.currentFileStream.emit("error", new Error("oh no"));
14171417
});
14181418
});
1419+
1420+
describe("when deleting old files and there is an error", () => {
1421+
before(done => {
1422+
fs.ensureDir('/tmp/delete-test/logfile.log.2', done);
1423+
});
1424+
1425+
it("should not let errors bubble up", done => {
1426+
const s = new RollingFileWriteStream("/tmp/delete-test/logfile.log", {
1427+
maxSize: 10,
1428+
numToKeep: 1
1429+
});
1430+
1431+
s.write("length is 10", "utf8", () => {
1432+
// if there's an error during deletion, then done never gets called
1433+
s.write("length is 10", "utf8", done);
1434+
});
1435+
});
1436+
1437+
after(done => {
1438+
fs.remove('/tmp/delete-test', done);
1439+
})
1440+
});
14191441
});

0 commit comments

Comments
 (0)