Fix: таймаут с диагностикой PG (URL + статус БД). Версия 0.1.25
This commit is contained in:
@@ -57,11 +57,25 @@ app.use(cookieParser());
|
||||
async function start() {
|
||||
const auth = await initAuth();
|
||||
|
||||
// ── Стоп-кран: если запрос висит > 10 сек — обрываем с ошибкой ───────
|
||||
// ── Стоп-кран: если запрос висит > 10 сек — проверяем PG и показываем детали
|
||||
app.use((req, res, next) => {
|
||||
const timer = setTimeout(() => {
|
||||
const timer = setTimeout(async () => {
|
||||
if (!res.headersSent) {
|
||||
res.status(503).type('html').send('<h2>Сервис временно недоступен</h2><p>Превышено время ожидания</p>');
|
||||
let diag = '';
|
||||
try {
|
||||
const { pool } = require('./src/db');
|
||||
const start = Date.now();
|
||||
await pool.query('SELECT 1');
|
||||
diag = 'PG OK (' + (Date.now() - start) + 'ms)';
|
||||
} catch (e) {
|
||||
diag = 'PG ERROR: ' + e.message;
|
||||
}
|
||||
res.status(503).type('html').send(
|
||||
'<h2>Сервис временно недоступен</h2>'
|
||||
+ '<p>Таймаут запроса: 10 сек</p>'
|
||||
+ '<p>URL: ' + req.method + ' ' + req.url + '</p>'
|
||||
+ '<p>' + diag + '</p>'
|
||||
);
|
||||
}
|
||||
}, 10000);
|
||||
res.on('finish', () => clearTimeout(timer));
|
||||
|
||||
Reference in New Issue
Block a user