Сообщение об ошибке = Процесс завершен до завершения запроса. Ошибка = Пул закрыт - PullRequest
0 голосов
/ 16 мая 2018

У меня есть лямбда-функция, Aurora db, DynamoDb. Я извлекаю данные из aurora db , и я получаю ошибку для некоторого запроса на чтение и вывод для некоторого запроса на чтение . Это пример кода, у меня подключен к конечной точке считывателя

var AWS = require("aws-sdk");
var mysql = require('mysql');
const client = new AWS.DynamoDB.DocumentClient({region : 'eu-west-1'});
var connection  = mysql.createPool({
    host     : "*******************",
    user     : "*****",
    password : "******",
    database : "mydb",
    port     : "3306"
  });
exports.handler = (event, context, callback) => {
  //var id = parseInt(event.id);
    connection.query("select * from demo where id=3;", function (error, results, fields) {

        if (error) {

            if (error) throw error;
        } else {

            connection.end();

        }
}
);
};

Ошибка:

Response:
{
  "errorMessage": "RequestId: 0c2d1a39-58d9-11e8-bef9-dbe1bfb0a080 Process exited before completing request"
}

Request ID:
"0c2d1a39-58d9-11e8-bef9-dbe1bfb0a080"

Function Logs:
START RequestId: 0c2d1a39-58d9-11e8-bef9-dbe1bfb0a080 Version: $LATEST
2018-05-16T07:16:27.041Z    0c2d1a39-58d9-11e8-bef9-dbe1bfb0a080    Error: Pool is closed.

В некоторых запросах на чтение я получаю желаемый результат, но в некоторых запросах на чтение я получаю ошибку выше. Кто-нибудь знает решение? Пожалуйста, помогите ....

1 Ответ

0 голосов
/ 16 мая 2018

Сможете ли вы переместить следующий раздел внутрь обработчика функции?Эта модификация позволила функции Lambda каждый раз инициализировать объект соединения, а не использовать его повторно.

var connection  = mysql.createPool({
  host     : "*******************",
  user     : "*****",
  password : "******",
  database : "mydb",
  port     : "3306"
});

Согласно документации , закрытие соединения выполняется с помощью end (), который обеспечивает выполнение всех оставшихся запросов перед отправкой пакета quit на сервер mysql.Когда вы выполняете функцию end () объекта соединения внутри вашей лямбда-функции, я полагаю, что вам также потребуется инициализировать объект соединения в начале вашей лямбда-функции.

...