SSH2 sftp.fastGet застрял - PullRequest
       24

SSH2 sftp.fastGet застрял

0 голосов
/ 14 декабря 2018

Я загружаю несколько файлов с 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 из приведенного выше кода для загрузки.

Любая помощь приветствуется.Заранее спасибо.

...