NodeJS mysql приложение зависает без ошибок - как диагностировать - PullRequest
0 голосов
/ 25 апреля 2020

Приложение My Node зависает при запуске функции, которую я написал. Код перестанет выполняться в указанной строке c 11-го числа oop без сообщения об ошибке. Больше никаких запросов к приложению не может быть выполнено, и оно должно быть перезапущено. Данные меняются при каждом запуске, и это всегда 11-я итерация.

Функция, которую она вызывает, является относительно сложной, поэтому я не могу поместить код здесь. Мой вопрос: как вы подходите к диагностике фрагмента кода, когда вы не видите уведомлений об ошибках? Я предполагаю, что проблема связана с mysql, поскольку последнее, что было зарегистрировано в упрощенной версии приведенного ниже кода, это «Org request start 11» - сообщения об ошибке никогда не появляется. Но я не понимаю, как код может перестать выполняться здесь без ввода обратного вызова.

Пример кода здесь:

async function processDataset(datasets){       
     for (let i = 0; i < datasets.length; i++) {
          const dataset= datasets[i];
          const orgData = await getOrgData(dataset.id);
          const parsedDataset = await processDataset(dataset, orgData);
     }
}



function getOrgData(datasetId) {
   return new Promise(function (resolve, reject) {
      console.log("Org request start", datasetId);

      connection.getConnection(function (err, connection) {
         console.log("got connection");
         if (err) {
            console.log(err);
            reject(err);
         }

         connection.query("select * from orgs;", function (error, rows, fields) {
            console.log("query returned");
            connection.release();
            if (error) {
               console.log(error);
               reject(error);
            }  
            resolve(rows);
         });
      });
   });
}

Рабочий узел v12 / Express, mysql 5.5

1 Ответ

0 голосов
/ 26 апреля 2020

Итак, я обнаружил, что проблема в том, что в другом месте у меня был запущен запрос, в котором отсутствовала строка для освобождения соединения mysql во второй вызываемой функции. Добавление этого решило ошибку. Я не понимаю, почему это не вызывает ошибку, или как я бы поставил диагноз, используя более систематический подход c, поэтому хотел бы услышать любые комментарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...