Функции Firebase вызывают TimeoutError при подключении к Google Cloud Sql - PullRequest
0 голосов
/ 22 декабря 2018

Мои функции Firebase открывают транзакции SQL и выполняют серию вставок.Хотя эти функции работают в моей локальной системе и системе CI, они не работают при подключении к Google SQL Postgres

Я получаю сообщение об ошибке тайм-аута.Ниже следует журнал.Есть мысли?

5:02:29.925 pm myApp Function execution took 20280 ms, finished with status code: 500
5:02:29.915 pm myApp TimeoutError: ResourceRequest timed out
    at ResourceRequest._fireTimeout (/user_code/node_modules/sequelize/node_modules/generic-pool/lib/ResourceRequest.js:62:17)
    at Timeout.bound (/user_code/node_modules/sequelize/node_modules/generic-pool/lib/ResourceRequest.js:8:15)
    at ontimeout (timers.js:386:11)
    at tryOnTimeout (timers.js:250:5)
    at Timer.listOnTimeout (timers.js:214:5)
5:02:29.914 pm myApp Error Express : ResourceRequest timed out
5:02:29.911 pm myApp Executing (1963639b-91e6-42c9-acdf-8cb6463d5150): ROLLBACK;
5:02:09.904 pm myApp Executing (1963639b-91e6-42c9-acdf-8cb6463d5150): INSERT INTO ...... RETURNING *;
5:02:09.893 pm myApp Executing (1963639b-91e6-42c9-acdf-8cb6463d5150): START TRANSACTION;

1 Ответ

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

После некоторого поиска нашел.В производстве я использовал пул размером «1» (как рекомендуется для функций Firebase).В транзакции sequelize у меня было несколько запросов select без принудительной транзакции.Из-за чего нетранзакционный запрос нуждался в отдельном соединении.Запрос Tran ожидает завершения операции non-tran.Но non-tran не может продолжаться, так как ему нужно соединение, которое поддерживается запросом tran.Отсюда истекло время ожидания.

Лучше всего объяснить здесь.https://github.com/sequelize/sequelize/issues/7884#issuecomment-338778283

После исправления запросов на выборку, являющихся частью одной транзакции, проблема решена.

...