activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bryan Taylor (JIRA)" <>
Subject [jira] Commented: (AMQ-1203) Killing STOMP client stalls the Q forever until a new message is written to that Q
Date Sat, 14 Jun 2008 22:14:00 GMT


Bryan Taylor commented on AMQ-1203:

I'm seeing a socket leak that is hanging my server that I think is related to this bug, given
Hiram's comment. My producers connect by stomp to my broker. I believe a firewall in between
the producers and the broker drops the connection. When the producers try to send another
message, they see the dead socket and reopen a new one. However, my broker still sees the
original connections as ESTABLISHED. This game plays out on any stomp connection that is quiet
for longer than the firewall's timeout, which gives me about 25-35 leaked sockets a day until
I hit the ulimit for file descriptors. At this time, my broker is hung: it cannot accept new
connections, but has not crashed.

I have several suggestions:
1) bump the priority of this ticket
2) implement keep alives and the maxInactivityDuration parameter for stomp
3) when sockets are maxed out, kill old sockets LRU style so as to always accept new connections

> Killing STOMP client stalls the Q forever until a new message is written to that Q
> ----------------------------------------------------------------------------------
>                 Key: AMQ-1203
>                 URL:
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 4.1.1
>         Environment: AS3 linux
>            Reporter: Joel Schaubert
>            Priority: Minor
>             Fix For: 5.2.0
> Using  STOMP C client subscribed in client ack mode
> A) send 20 messages into a Q
> B) startup slow reader, read 5 messages and control-C without allowing client to send
> C) restart a reader (or more readers if desired)
> D) the remaining 15 messages are still present but none will be delivered to the STOMP
clients until at least 1 new message is written into the Q.
> So no loss of messages under these conditions but Q is effectively stalled until a new
message is written in.
> ------ copy of Hiram's comments from AMQ-1192 ------------
> I think this is due to the socket being killed but the server side not noticing. But
it will notice once it tries to send it a message, so the it shutdown the dead socket and
redelivers all messages queued for the client. On some OSes the TCP timeout interval can be
tweaked. Otherwise, keep alive packets would need to be periodically transmitted in Stomp
so that the server could detect a dead client sooner. Keep alives have not been added to Stomp
yet.. but could be in a future version.
> ------------------------------------------------------------------------------

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message