SSH2 sftp.fastGet застрял
Я загружаю несколько файлов с FTP-сервера, используя модуль ssh2. Код:
downloadFile(sftp, fileDetails) {
return new Promise((resolve, reject) => {
const source = `${CONST.EXTRACT.FTP_DIRECTORY}/${fileDetails.fileName}`;
const dest = `${this.getDownloadDirectory(CONST.EXTRACT.DWLD_FOLDER)}/${
fileDetails.fileName
}`;
logger.info("downloadFile before fastGet ", fileDetails);
logger.info("Source file ", source);
logger.info("destination file ", dest);
sftp.fastGet(source, dest, err => {
const arr = source.split("/");
const fileName = arr[arr.length - 1];
logger.info("downloadFile fastGet callback invoked");
if (err) {
reject(
new CustomError("Sftp download failed", {
success: false,
file: fileName,
err
})
);
}
resolve(fileDetails);
});
});
}
Я называю это для нескольких файлов, но для последнего файла код не загружает файл. Он застревает и не вызывает ни обратного вызова, ни успеха, ни ошибки. Я включил ведение журнала отладки для ssh2 и при выполнении метода fastGet журнал отладки показывает:
DEBUG[SFTP]: Outgoing: Writing OPEN
После этого ничего не происходит. Почему это происходит только для одного файла, а не для других? Кстати, я повторно использую один и тот же объект sftp для всех загрузок.
sshClient.on("ready", () => {
isReady = true;
logger.info("Ready");
sshClient.sftp((err, sftp) => {
if (err) {
logger.error("Some error occoured ", { err });
reject("Error establishing sftp connection");
}
logger.info("Sftp connection is successful");
sftp.readdir(CONST.EXTRACT.FTP_DIRECTORY, async (err, files) => {
if (err) {
reject(new CustomError("Sftp read dir", err));
}
// Read all file 'formats' from entity db
try {
const result = await sortFilesByTables(files);
resolve({ sshClient, sftp, result });
} catch (err) {
reject(new CustomError("Error sorting files by tables ", err));
}
});
});
});
Использование объекта sftp из приведенного выше кода для скачивания.
Любая помощь приветствуется. Заранее спасибо.