On Thu, 2010-09-02 at 09:35 +0100, Gordon Sim wrote: > On 09/01/2010 03:55 PM, Craig Forbes wrote: > > A quick summary of the problem. > > > > I have a remote c++ broker with a persistent queue. There is a push > > route on the remote broker to send messages in the persistent queue > to a > > central broker. > > > > When the persistent store's journal is full (actually 80% full) and > > won't accept more messages. The push route stops relaying the > messages > > in the queue. If I stop and restart the broker the queue route > starts > > working again and the queue is drained. > > > > Has anyone run into this before? Is it a known issue? > > Its expected that if the queue to which messages are being sent fills > up > then the route over which they are being sent will be interrupted by > the > exception. I believe it should periodically retry however and that > seems > to be borne our by the log below. > > What seems odd is why restarting the broker fixes things... (Kim, > might > that be due to better compaction of the journal on restart?) > Sorry, I missed this question, and I have not answered it.
There is no compaction on the store on restart. For a regular queue, when an enqueue threshold is reached, only the connection responsible for publishing the message which exceeded the threshold is shut down. Other connections which consume messages continue without interruption, thereby creating space as long as they run. I am uncertain how the behavior for LVQ changes this, however, as messages are not consumed in the "normal" way in this case. From a store perspective, space is made as long as messages are being dequeued. Is it possible that older values in the store are being discarded on recovery? --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:[email protected]
