We have the following topology

Service A is connected to Broker X using failover.
Broker X is part of a Network of Brokers. One of these Brokers is Y.

When Broker Y is shutdown, crashes or loses network connection then we get
exceptions on broker X that Servce A cannot send messages anymore because it
has an invalid (null) producer state. From the log on X we see that
immediatly after loosing connection to Y the connection from A fails due to
a EOFException:

2013-04-12 00:03:22,751 | INFO  | X bridge to Y stopped |
org.apache.activemq.network.DemandForwardingBridgeSupport | ActiveMQ
BrokerService[X] Task-24587
2013-04-12 00:03:22,814 | WARN  | Transport Connection to:
tcp://0:0:0:0:0:0:0:1:62254 failed: java.io.EOFException |
org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ
Transport: tcp:///0:0:0:0:0:0:0:1:62254@61616

The connection and all sessions are then removed. Because of the failover
configuration the connection is immediatly reestablished but the system is
not in a state where no messages can be sent anymore due to the following
exception raised on every send:

2013-04-12 00:03:23,094 | WARN  | Send failed for: ActiveMQTextMessage
{...},  missing producer state for:
org.apache.activemq.broker.ProducerBrokerExchange@47a65f28 |
org.apache.activemq.broker.region.Queue | ActiveMQ Transport:
tcp:///0:0:0:0:0:0:0:1:57089@61616
2013-04-12 00:03:23,094 | WARN  | Async error occurred:
javax.jms.JMSException: Cannot send message to * with invalid (null)
producer state | org.apache.activemq.broker.TransportConnection.Service |
ActiveMQ Transport: tcp:///0:0:0:0:0:0:0:1:57089@61616
javax.jms.JMSException: Cannot send message to * with invalid (null)
producer state
        at org.apache.activemq.broker.region.Queue.send(Queue.java:599)
        at
org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:407)
        at
org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:503)
        at
org.apache.activemq.broker.jmx.ManagedRegionBroker.send(ManagedRegionBroker.java:311)
        at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:129)
        at
org.apache.activemq.broker.scheduler.SchedulerBroker.send(SchedulerBroker.java:189)
        at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:129)
        at
org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:96)
        at
org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:317)
        at
org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:135)
        at
org.apache.activemq.broker.util.LoggingBrokerPlugin.send(LoggingBrokerPlugin.java:287)
        at
org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:135)
        at
org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:450)
        at
org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:680)
        at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:294)
        at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:152)
        at
org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
        at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
        at
org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:256)
        at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
        at
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:222)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:204)
        at java.lang.Thread.run(Unknown Source)

Has anyone an idea what we are doing wrong, that a broker instance can get a
client, that is not even connected to that broker directly, to a state in
which it is not able to send messages anymore?




--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Excpetion-javax-jms-JMSException-Cannot-send-message-to-with-invalid-null-producer-state-tp4665891.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to