[rabbitmq-discuss] channel.flow_ok{active=false} and java client 1.8.1

Chester Shen csshenqian at gmail.com
Wed Jul 21 10:24:24 BST 2010


Hi Simon

Thanks for the quick reply!

I asked the question because my client always get the exception:
"com.rabbitmq.client.AlreadyClosedException: clean connection shutdown;
reason: Attempt to use closed channel" when it hit the memory watermark.
In the log I can find this:

=INFO REPORT==== 21-Jul-2010::11:08:13 ===
vm_memory_high_watermark set. Memory used:906599728 allowed:825611059

=INFO REPORT==== 21-Jul-2010::11:08:13 ===
    alarm_handler: {set,{vm_memory_high_watermark,[]}}

=INFO REPORT==== 21-Jul-2010::11:08:15 ===
vm_memory_high_watermark clear. Memory used:809917968 allowed:825611059

=INFO REPORT==== 21-Jul-2010::11:08:15 ===
    alarm_handler: {clear,vm_memory_high_watermark}

=INFO REPORT==== 21-Jul-2010::11:08:16 ===
vm_memory_high_watermark set. Memory used:880253288 allowed:825611059

=INFO REPORT==== 21-Jul-2010::11:08:16 ===
    alarm_handler: {set,{vm_memory_high_watermark,[]}}

=INFO REPORT==== 21-Jul-2010::11:08:19 ===
vm_memory_high_watermark clear. Memory used:778205448 allowed:825611059

=INFO REPORT==== 21-Jul-2010::11:08:19 ===
    alarm_handler: {clear,vm_memory_high_watermark}

=INFO REPORT==== 21-Jul-2010::11:08:21 ===
vm_memory_high_watermark set. Memory used:845297232 allowed:825611059

=INFO REPORT==== 21-Jul-2010::11:08:21 ===
    alarm_handler: {set,{vm_memory_high_watermark,[]}}

=ERROR REPORT==== 21-Jul-2010::11:08:23 ===
connection <0.3067.2> (running), channel 1 - error:
{amqp_error,precondition_failed,
            "timeout waiting for channel.flow_ok{active=false}",none}

=INFO REPORT==== 21-Jul-2010::11:08:24 ===
vm_memory_high_watermark clear. Memory used:131894968 allowed:825611059

=INFO REPORT==== 21-Jul-2010::11:08:24 ===
    alarm_handler: {clear,vm_memory_high_watermark}

It looks like that the client failed to reply channel.flow{active=false}
in the first place, so after 10 seconds the channel had been terminated.



On Wed, 2010-07-21 at 09:38 +0100, Simon MacMullen wrote:
> On 21/07/10 08:26, Chester Shen wrote:
> > In my huge memory consumption program when it hit the memory watermark
> > the client will receive a channel.flow{active=false} which I can capture
> > in FlowListener, then I need to send a channel.flow_ok{active=false} to
> > acknowledge it, but I do not know how to do it in java client 1.8.1.
> > Is there a method that I miss or it has not been implemented yet?
> 
> Hi Chester. You shouldn't need to do that - the Java client should 
> receive the flow message, automatically respond with flow-ok, and cause 
> Channel.basicPublish to block until it sees a channel.flow{active=true}.
> 
> The FlowListener is just there in case you need to be aware that this is 
> happening; in normal use you shouldn't need to do anything.
> 
> Cheers, Simon
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-discuss at lists.rabbitmq.com
> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss




More information about the rabbitmq-discuss mailing list