Мы разрабатываем приложение Vaadin, использующее жидкостную базу для создания схемы h2.Во время создания схемы процесс внезапно останавливается.Отладка не помогает, так как кажется, что это проблема синхронизации.
После некоторой глубокой и тщательной оценки я обнаружил, что могу убить сервер, просто выполнив
logger.info("CREATE TABLE PUBLIC.ACT_RU_EXT_TASK (ERROR_MSG_ VARCHAR(2000))");
Это переводитв сообщение
631448 [http-listener(1)] INFO liquibase.executor.jvm.JdbcExecutor - CREATE TABLE PUBLIC.ACT_RU_EXT_TASK (ERROR_MSG_ VARCHAR(2000))
Я еще больше упростил его до
logger.info("ERROR");
, что убьет сервер, но не мгновенно, а с небольшой задержкой.
Из своей отладки я знаю, что регистрация ведется через slf4j, затем направляется на jul.SimpleLogger
, который помещает сообщение на System.err
, который снова захватывается потоком Payara и затем регистрируется вЛог-файлы.Похоже, что выполнение flush()
на System.err вызывает отключение, хотя и не на 100% надежно.
Переключение с Payara на Jetty или любой другой сервер решает проблему, а также запускает код из консоли.
Есть идеи?
Есть идеи по локализации партии, которая фактически выполняет отключение?