Как читать журнал базы данных Apache Derby? - PullRequest
4 голосов
/ 19 июля 2011

Я бы хотел взглянуть на журнал базы данных Дерби; Я не имею в виду файл derby.log, я говорю о двоичных файлах журнала в каталоге /[database name]/log. Есть ли инструмент, который может отображать их в удобочитаемом формате?

Я спрашиваю, почему я использую Apache Derby (версия 10.6.1.0) для автоматических интеграционных тестов с помощью подключаемого модуля Maven Failsafe. Некоторые тесты выполняют транзакционный код, который блокирует записи (OpenJPA используется в качестве инструмента ORM). Иногда при определенном порядке тестов бывает, что тест всегда ожидает блокировки, что приводит к зависанию сборки. Тот же тест, при запуске отдельно, проходит. Самое странное, что каждый тест отбрасывает, создает и заполняет все таблицы до его запуска, поэтому трудно увидеть очевидные причины такого поведения.

Проблема была решена путем помещения неудачных тестов в отдельное выполнение Failsafe; Тем не менее, я хотел бы прочитать журнал, чтобы увидеть, что происходит.

1 Ответ

4 голосов
/ 19 июля 2011

Такие инструменты существуют, но они довольно низкого уровня. Вот место, где вы можете их найти: https://issues.apache.org/jira/browse/DERBY-5195

Диагностика таких проблем с блокировкой очень сложна; надеюсь, что чтение журналов даст вам некоторые подсказки. Журналы будут содержать только информацию об активности update , поэтому вам нужно будет определить активность read , используя другие средства.

Еще одна вещь, которую вы можете попробовать - посмотреть, можете ли вы расширить свой процесс тестирования, чтобы включить вызовы данных lock_table (http://db.apache.org/derby/docs/10.8/devguide/cdevconcepts50894.html).

Возможно, либо: (a) ваш инструмент ORM выполняет больше / отличается от кода, чем вы думаете, либо (б) ваш инструмент ORM не выражает границы транзакции так, как вы думаете.

Удачи!

...