[rabbitmq-discuss] erlang-client problem on OS X (empty_rpc_bottom_half)
Matt Stancliff
sysop at mindspring.com
Wed Dec 10 08:21:17 GMT 2008
On Dec 9, 2008, at 1:16 AM, Ben Hood wrote:
> Can you have a look in the rabbit log to see if there is anything like
> this in it:
>
> =INFO REPORT==== 9-Dec-2008::08:54:49 ===
> alarm_handler: {set,{system_memory_high_watermark,[]}}
Yes, that shows up on startup.
> My first thought is that the client may be receiving a
> channel.flow{active=false} notification that it is not able to handle,
You are correct, sir. Traces of amqp_channel show the first
rpc_bottom_half handles channel.open_ok. Then a {channel.flow, false}
is sent directly to the bottom half without being enqueued anywhere.
> but if the client revision is a9695aaf5083 then you are on the 19963
> branch which handles that command.
I ran tests in tip and some previous client and server releases to
no avail.
> The channel.flow
> command is a reverse RPC, i.e. the server sends the client the RPC and
> the client responds with a channel.flow_ok.
Thanks for clearing up where the channel.flow is coming from.
> However, the channel.flow
> command has special handling in the client which does not use the
> client's RPC queue. So I'm a bit baffled as to how this can happen.
I don't see special handling of channel.flow in the client
anywhere. channel.flow gets passed through handle_info->handle_method-
>rpc_bottom_half:
(<0.74.0>) call amqp_channel:handle_info({method,
{'channel.flow',false},none},{channel_state,
1,<0.70.0>,<0.72.0>,<0.75.0>,#Fun<amqp_network_driver.do.2>, ...
(<0.74.0>) call amqp_channel:handle_method({'channel.flow',false},
{channel_state,
1,<0.70.0>,<0.72.0>,<0.75.0>,#Fun<amqp_network_driver.do.2>, ...
(<0.74.0>) call amqp_channel:rpc_bottom_half({'channel.flow',false},
{channel_state,
1,<0.70.0>,<0.72.0>,<0.75.0>,#Fun<amqp_network_driver.do.2>, ...
> Can you first do a make clean run on the server and check the logs for
> the alarm handler.
The alarm handler is present.
> Then do a make clean test_network on the client and report what
> happens.
Lots of:
** Reason for termination ==
** empty_rpc_bottom_half
If I remove the exit(empty_rpc_bottom_half) and replace it with an
empty queue, the tests pass. But I have no explanation why the errors
are only happening on my OS X machine.
-Matt
--
Matt Stancliff San Jose, CA
AIM: seijimr iPhone: 678-591-9337
"The best way to predict the future is to invent it." --Alan Kay
More information about the rabbitmq-discuss
mailing list