2016-11-17 2 views
0

В моем проекте используется JMS с ActiveMQ, и он отлично работает, как в производстве, так и при запуске моих тестов локального компьютера. Моя проблема возникает, когда Дженкинс бежит мои тесты (те же те, которые являются успешными в моем компьютере), я получаю следующую запись в консоли вывода:JMS ActiveMQ lock с Jenkins

2016-11-17 12: 17: 19277 INFO oaactivemq. store.SharedFileLocker База данных activemq-data/localhost/KahaDB/блокировка заблокирована ... ждет 10 секунд для разблокировки базы данных. Причина: java.io.IOException: Файл «activeemq-data/localhost/KahaDB/lock» не может быть заблокирован.

У кого-то был такой же опыт и возникло решение проблемы? Будем очень благодарны за вашу помощь!

Подробнее о выходе консоли:

2016-11-17 12: 17: 09193 WARN oaabroker.jmx.ManagementContext Не удалось запустить разъем JMX: Невозможно привязать к URL [RMI:// localhost: 1099/jmxrmi]: javax.naming.NameAlreadyBoundException: jmxrmi [Исключение корня java.rmi.AlreadyBoundException: jmxrmi]. Перезагрузит управление, чтобы воссоздать jmx-коннектор, пытаясь устранить проблему .

2016-11-17 12: 17: 09257 ИНФО oaastore.kahadb.plist.PListStore PListStore: [/ вар/Библиотека/Jenkins/работа/MYDIR/рабочее пространство/MyProject/ActiveMQ-данные/локальный/tmp_storage] начал

2016-11-17 12: 17: 09271 ИНФО oaactivemq.broker.BrokerService Использование Постоянство адаптер: KahaDBPersistenceAdapter [/ вар/Lib/Jenkins/работа/MYDIR/рабочее пространство/MyProject/ActiveMQ-данные/localhost/KahaDB]

2016-11-17 12: 17: 09,277 INFO oaactivemq.store.SharedFileLocker Database activeemq-data/localhost/KahaDB/lock заблокирован ... ждет 10 секунд для разблокировки базы данных. Причина: java.io.IOException: Файл «activeemq-data/localhost/KahaDB/lock» не может быть заблокирован.

ответ

0

Выполняется предыдущий процесс ActiveMQ, который заблокировал хранилище данных. Этот новый экземпляр, который вы видите, работает как «подчиненный» и опрос, чтобы получить блокировку.

+0

К сожалению, все было не так просто :( –

+0

Не может быть отдельный процесс .. сообщение о том, что JMX не может инициализировать «javax.naming.NameAlreadyBoundException», означает, что ваш тест, возможно, пытается перерегистрировать брокера в рамках одной JVM Сообщение о блокировке указывает, что какой-то поток (текущий процесс или другой) уже заблокировал хранилище данных. –

0

Мне удалось выяснить проблему. Процесс сборки, запущенный в Jenkins, повесился на этапе тестирования, и я был вынужден прервать его, что оставило блокировку в каталоге: dir-tests \ activemq-data \ localhost \ KahaDB. Существует два способа решить эту проблему:

1) Самое прямое и правильное решение - удалить dir-tests \ activemq-data \ localhost \ KahaDB \ lock, однако у меня нет доступа или разрешений в удаленном Jenkins машина.

2) Мы можем легко создать брокера Jms с другим именем, например.

brokerService.setBrokerName("MyDummyBrokerName"); 

Это приводит к Active-MQ использовать каталог DIR-тесты \ ActiveMQ-данные \ MyDummyBrokerName \ KahaDB, что означает, что он будет использовать другой замок. Однако это обходное решение, а не окончательное решение, потому что старый замок и соответствующий каталог останутся в Дженкинсе.Тем не менее, он решает проблему на данный момент, и старые блокировки могут быть удалены позже.

+0

Жоао: рад, что ваша проблема решена! Не могли бы вы согласиться + ответить на мой ответ, так как это было правильно? –

Смежные вопросы