AI && Java && Management
9 subscribers
20 photos
19 links
Для senior Java-разработчиков, архитекторов и тимлидов: AI, JVM, архитектура, эксплуатация и инженерное управление. Первичные источники, актуальные релизы и выводы для решений.

Автор — Андрей Овчаренко. Технический аудит: https://krot.name/
Download Telegram
Один таймер не спасает запрос к базе

Пять секунд в настройке ещё не гарантируют, что запрос остановился и освободил соединение.

Для обычного SQL-запроса Java задаёт отдельный срок. После его превышения driver возвращает SQLTimeoutException и пытается отменить работу. Это ещё не доказательство, что сервер базы уже остановился.

Для полностью зависшей сети действует аварийный предел. В терминах JDBC network timeout помечает connection closed — проще говоря, Java закрывает соединение. Oracle рекомендует делать этот срок длиннее обычного времени на запрос.

PostgreSQL разделяет долгий запрос, ожидание занятой записи и забытую открытую транзакцию. Им нужны разные пределы.

Мой порядок:
— срок всей пользовательской операции;
— меньший срок для SQL;
— ещё меньший — для ожидания блокировки;
— аварийное закрытие сети последним.

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

#Java #JDBC #PostgreSQL #reliability