Fix: таймаут с диагностикой PG (URL + статус БД). Версия 0.1.25

This commit is contained in:
2026-07-09 10:37:32 +04:00
parent bf24d1577f
commit 932e5ca5b6
+17 -3
View File
@@ -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));