NodeJs application stopping abrubtly while async file copy

57 Views Asked by At

I am trying to write a file copy code in Node.js:

function archiveFolder(site, callback) {
//console.log("Processing Site2 " + site );
var path = srcDir + '/' + site;
var startDate = moment(new Date(), 'YYYYMMDD');
asyncCounter++;
console.log("getting list of files for site " + site);
fse.readdir(path, function(err, files) {
    console.log("got list of files for site " + site);
    if (err) {
        console.log(err);
        return callback(err);
    }
    async.eachLimit(files, 5, function(file, callback2) {

        var endDate = moment(file, 'YYYYMMDD');
        var diff = startDate.diff(endDate, 'days');
        fs.stat(path + '/' + file, function(err, stats) {
            try {
                if (err) {
                    return callback2(err);
                }
                if (/^\d{8}$/i.test(file) && stats.isDirectory() && diff >= 7) {
                    fse.ensureDir(destDir + '/' + site, function(err) {
                        fse.copy(path + '/' + file, destDir + '/' + site + '/' + file, function(err) {
                            try {
                                if (err) {
                                    //console.log(err);
                                    return callback2(err);
                                } else {
                                    console.log("copied " + site + '/' + file);
                                    return callback2();
                                }
                            } catch (e) {
                                console.log(e);
                                return callback2(err);
                            }
                        });
                    });

                } else {
                    // //console.log("failed " + path + '/' + file)
                    return callback2();
                }
            } catch (e) {

                console.log(e);
                return callback2(err);
            }

        });


    }, function(err) {
        if (!err) {
            //console.timeEnd("site");
            console.log("finished Site " + site + " asyncCounter " + asyncCounter);
            return callback();

        } else {
            return callback(err + "  test");
        }
    });
});

}

Still there isn't any error message on console or the system logs /var/log/messages

What could be the reason for this behavior? I can increase the ulimit on the server but I want to confirm that this is due to this "number of files open" limit.

0

There are 0 best solutions below