Я использую JPA / Eclipselink для подключения к PostgreSQL экземпляру, который находится в режиме HA. Когда происходит переключение при сбое PostgreSQL, текущий главный экземпляр включит режим только для чтения. Иногда я нажимаю точный момент перехода на другой ресурс и получаю PSQLException: Fatal terminating connection due to administrator command
при вставке некоторых данных. Это происходит потому, что я также использую пул соединений. При повторном повторении того же оператора оно снова работает, так как соединение повторно подключено. Есть ли лучшие практики, чтобы избежать такой ситуации? Конечно, я могу обернуть JPA EntityManager
и создать какой-нибудь механизм повторных попыток. Я также нашел обработчик исключений [1], где в документации явно упоминается повтор запроса:
Используйте метод handleException класса, который принимает исключение java .lang.RuntimeException, чтобы:
Повторно выдать исключение
Выдать другое исключение
Повторить запрос или операцию базы данных.
Я не нашел ни одного Пример обработки ExceptionHandler
с «Повторить запрос или операцию базы данных».
С уважением
[1] https://www.eclipse.org/eclipselink/documentation/2.5/jpa/extensions/p_exception_handler.htm#CCHCJCDJ