2013-02-13 5 views
2

예약 환경에서 생산 환경에서 PageFile is not loaded 예외가 발생했습니다. 예약 메시지가 생성됩니다. 웹에서 검색 한 후 솔루션을 찾지 못했습니다. 제작 환경 시뮬레이션을위한 간단한 프로그램을 작성했습니다. 내 프로그램을 보여 던져 예외 시나리오를 설명합니다 PageFile이 activemq에서 예외로로드되지 않았습니다.

public static void main(String[] args) throws Throwable 
{ 
    final ActiveMQConnectionFactory conFactory = new ActiveMQConnectionFactory("tcp://localhost:61616"); 
    final QueueConnection connection = conFactory.createQueueConnection(); 
    final Session session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); 
    final Destination destination = new ActiveMQQueue("MJ_SAF"); 
    final MessageProducer producer = session.createProducer(destination); 

    ActiveMQMessage message = (ActiveMQMessage) session.createTextMessage("Hello World!"); 
    message.setPersistent(true); 
    message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, 1000); 
    message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_PERIOD, 0); 
    message.setIntProperty(ScheduledMessage.AMQ_SCHEDULED_REPEAT, 1); 
    producer.send(message); 

    producer.close(); 
    session.close(); 
    connection.close(); 
} 

후이 코드를 실행, 나는 메시지가 일정 큐에있을 때 MJ_SAF를 제거하고 주요 큐 ( MJ_SAF)에 대한 전송하지 않습니다. 그럼 난 다시 내 위의 프로그램을 실행하지만 다음과 같은 예외 얻을 : 나는 Apache ActiveMQ 5.7 버전에서 작동

DEBUG [main] o.a.a.transport.WireFormatNegotiator - Sending: WireFormatInfo { version=9, properties={MaxFrameSize=9223372036854775807, CacheSize=1024, CacheEnabled=true, SizePrefixDisabled=false, MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true, MaxInactivityDuration=30000, TightEncodingEnabled=true, StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} 
DEBUG [ActiveMQ Transport: tcp://localhost/127.0.0.1:[email protected]] o.a.a.transport.InactivityMonitor - Using min of local: WireFormatInfo { version=9, properties={MaxFrameSize=9223372036854775807, CacheSize=1024, CacheEnabled=true, SizePrefixDisabled=false, MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true, MaxInactivityDuration=30000, TightEncodingEnabled=true, StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} and remote: WireFormatInfo { version=9, properties={CacheSize=1024, MaxFrameSize=9223372036854775807, CacheEnabled=true, SizePrefixDisabled=false, TcpNoDelayEnabled=true, MaxInactivityDurationInitalDelay=10000, MaxInactivityDuration=30000, TightEncodingEnabled=true, StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} 
DEBUG [ActiveMQ Transport: tcp://localhost/127.0.0.1:[email protected]] o.a.a.transport.WireFormatNegotiator - Received WireFormat: WireFormatInfo { version=9, properties={CacheSize=1024, MaxFrameSize=9223372036854775807, CacheEnabled=true, SizePrefixDisabled=false, TcpNoDelayEnabled=true, MaxInactivityDurationInitalDelay=10000, MaxInactivityDuration=30000, TightEncodingEnabled=true, StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} 
DEBUG [ActiveMQ Transport: tcp://localhost/127.0.0.1:[email protected]] o.a.a.transport.WireFormatNegotiator - tcp://localhost/127.0.0.1:[email protected] before negotiation: OpenWireFormat{version=9, cacheEnabled=false, stackTraceEnabled=false, tightEncodingEnabled=false, sizePrefixDisabled=false, maxFrameSize=9223372036854775807} 
DEBUG [ActiveMQ Transport: tcp://localhost/127.0.0.1:[email protected]] o.a.a.transport.WireFormatNegotiator - tcp://localhost/127.0.0.1:[email protected] after negotiation: OpenWireFormat{version=9, cacheEnabled=true, stackTraceEnabled=true, tightEncodingEnabled=true, sizePrefixDisabled=false, maxFrameSize=9223372036854775807} 
DEBUG [ActiveMQ Transport: tcp://localhost/127.0.0.1:[email protected]] o.a.activemq.util.ThreadPoolUtils - Shutdown of ExecutorService: [email protected] is shutdown: true and terminated: true took: 0.000 seconds. 
DEBUG [main] o.a.activemq.util.ThreadPoolUtils - Shutdown of ExecutorService: [email protected] is shutdown: true and terminated: false took: 0.000 seconds. 
DEBUG [main] o.a.a.transport.tcp.TcpTransport - Stopping transport tcp://localhost/127.0.0.1:[email protected] 
DEBUG [ActiveMQ Connection Executor: tcp://localhost/127.0.0.1:[email protected]] o.apache.activemq.ActiveMQConnection - Async exception with no exception listener: java.lang.IllegalStateException: PageFile is not loaded 
java.lang.IllegalStateException: PageFile is not loaded 
    at org.apache.kahadb.page.PageFile.assertLoaded(PageFile.java:809) ~[kahadb-5.7.0.jar:5.7.0] 
    at org.apache.kahadb.page.PageFile.tx(PageFile.java:303) ~[kahadb-5.7.0.jar:5.7.0] 
    at org.apache.activemq.store.kahadb.KahaDBStore$KahaDBMessageStore.getMessageCount(KahaDBStore.java:479) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.store.ProxyMessageStore.getMessageCount(ProxyMessageStore.java:101) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.store.ProxyMessageStore.getMessageCount(ProxyMessageStore.java:101) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.region.Queue.initialize(Queue.java:376) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.region.DestinationFactoryImpl.createDestination(DestinationFactoryImpl.java:86) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.region.AbstractRegion.createDestination(AbstractRegion.java:532) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.jmx.ManagedQueueRegion.createDestination(ManagedQueueRegion.java:56) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.region.AbstractRegion.addDestination(AbstractRegion.java:137) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.region.RegionBroker.addDestination(RegionBroker.java:283) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.MutableBrokerFilter.addDestination(MutableBrokerFilter.java:151) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.region.RegionBroker.addProducer(RegionBroker.java:361) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.jmx.ManagedRegionBroker.addProducer(ManagedRegionBroker.java:281) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.BrokerFilter.addProducer(BrokerFilter.java:93) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.CompositeDestinationBroker.addProducer(CompositeDestinationBroker.java:56) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.BrokerFilter.addProducer(BrokerFilter.java:93) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.MutableBrokerFilter.addProducer(MutableBrokerFilter.java:99) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.TransportConnection.processAddProducer(TransportConnection.java:511) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.command.ProducerInfo.visit(ProducerInfo.java:105) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:294) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:152) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:256) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:222) ~[activemq-core-5.7.0.jar:5.7.0] 
    at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:204) ~[activemq-core-5.7.0.jar:5.7.0] 
    at java.lang.Thread.run(Thread.java:662) ~[na:1.6.0_13] 
DEBUG [main] o.a.a.thread.TaskRunnerFactory - Initialized TaskRunnerFactory[ActiveMQ Task] using ExecutorService: [email protected] 
DEBUG [ActiveMQ Task-1] o.a.a.transport.tcp.TcpTransport - Closed socket Socket[addr=localhost/127.0.0.1,port=61616,localport=2422] 
DEBUG [main] o.a.activemq.util.ThreadPoolUtils - Forcing shutdown of ExecutorService: [email protected] 

합니다.

+1

이러한 유형의 오류와 관련된 여러 가지 KahaDB 수정이 포함되어 있으므로 최신 릴리스 v5.8.0을 사용하여 다시 테스트 해 보겠습니다. –

+0

@TimBish 훌륭한 답변입니다. 네, 제 시나리오는 당신의 대답으로 해결되었습니다, 당신의 의견을 받아 들일 수있는 답으로 써주세요. 감사. – MJM

답변

1

ActiveMQ의 KahaDB는 지난 몇 가지 릴리스의 많은 작업을 거쳤습니다. 이 영역에서 수정 된 몇 가지 문제, 즉 Paged 목록과 사용되는 트리가 경쟁 조건으로 인해 예외로 이어질 수 있음을 상기합니다. 최신 버전 v5.8.0이 출시되었으며 KahaDB에서 수행 한 모든 최신 작업이 포함되어 있으며 가능한 한 빨리 사용자가이 작업으로 이동하도록 권장합니다.

+0

위대한 대답. 고맙습니다. – MJM

관련 문제