2016-11-17 65 views
0

我的項目在ActiveMQ中使用JMS,它在生產和運行我的測試本地計算機時都可以正常工作。我的問題發生在Jenkins運行我的測試(與我的計算機上的成功相同)時,我在控制檯輸出中獲得以下條目:Jenkins的JMS ActiveMQ鎖

2016-11-17 12:17:19,277 INFO oaactivemq。 store.SharedFileLocker 數據庫activemq-data/localhost/KahaDB /鎖定被鎖定...正在等待10秒數據庫被解鎖。原因:java.io.IOException: 文件'activemq-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 INFO oaastore.kahadb.plist.PListStore PListStore:[在/ var/lib中/詹金斯/作業/ MYDIR /工作區/ myproject的/ ActiveMQ的數據/本地主機/ tmp_storage] 開始

2016年11月17日12:17:09271 INFO oaactivemq.broker.BrokerService使用 持久性適配器: KahaDBPersistenceAdapter [在/ var/lib中/詹金斯/作業/ MYDIR /工作區/ myproject的/ ActiveMQ的數據/ localhost/KahaDB]

2016-11-17 12:17:09,277信息oaactivemq.store.SharedFileLocker 數據庫activemq-data/localhost/KahaDB/lock被鎖定...正在等待10秒 秒的數據庫被解鎖。原因:java.io.IOException: 文件'activemq-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"); 

這引起主動 - MQ使用的目錄DIR-測試\ ActiveMQ的數據\ MyDummyBrokerName \ KahaDB,這意味着它將使用不同的鎖。 但是,這是一種解決方法,而不是最終的解決方案,因爲舊的鎖和相應的目錄將保留在Jenkins中。不過,它暫時解決了這個問題,之後可以刪除舊的鎖。

+0

João:很高興聽到您的問題已解決!請您接受+投票我的答案,因爲它是正確的? –