Return-Path: Delivered-To: apmail-activemq-dev-archive@www.apache.org Received: (qmail 73582 invoked from network); 6 Aug 2009 20:03:55 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 6 Aug 2009 20:03:55 -0000 Received: (qmail 33599 invoked by uid 500); 6 Aug 2009 20:04:02 -0000 Delivered-To: apmail-activemq-dev-archive@activemq.apache.org Received: (qmail 33536 invoked by uid 500); 6 Aug 2009 20:04:02 -0000 Mailing-List: contact dev-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list dev@activemq.apache.org Received: (qmail 33519 invoked by uid 99); 6 Aug 2009 20:04:02 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Aug 2009 20:04:02 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Aug 2009 20:03:58 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 1BDD6234C04C for ; Thu, 6 Aug 2009 13:03:37 -0700 (PDT) Message-ID: <1142730708.1249589017112.JavaMail.jira@brutus> Date: Thu, 6 Aug 2009 13:03:37 -0700 (PDT) From: "Giovani Seben (JIRA)" To: dev@activemq.apache.org Subject: [jira] Commented: (AMQ-2280) stomp: Transport failed: java.io.IOException: Unexpected error occured In-Reply-To: <1542325722.1244124830931.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: ae95407df07c98740808b2ef9da0087c X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/activemq/browse/AMQ-2280?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=53513#action_53513 ] Giovani Seben commented on AMQ-2280: ------------------------------------ Hi, The patch that I'm suggesting is a simple check on the code to try to avoid this situation since in my opinion without a more fine grained definition of transactions with Stomp would be required. Let me try to explain this a bit better. The particular problem with the snippet of stomp code that you attached to this report is that it first subscribes to destination "/queue/COMMAND.HOST.alex" and then you tries to send transacted messages to "/queue/COMMANDREPLY.HOST.alex". Since stomp transactions are bound only by the transactionID the logic in the code needs to check *all* destinations used in a connection for messages to commit. In this case the exception happens because there is nothing to be commited at "/queue/COMMAND.HOST.alex". The bottom line is that since BEGIN doesn't take a destination as a parameter there is no way to identify for which destination you are starting a transaction and that's the reason why all destinations for the current connection have to be checked for messages to be commited. My recommendation is that if you use transactions, don't use more than one destination per connection. This way you avoid the confusion of which destination the transaction is actually supposed to be for. Hope that this clarifies some of your questions. > stomp: Transport failed: java.io.IOException: Unexpected error occured > ---------------------------------------------------------------------- > > Key: AMQ-2280 > URL: https://issues.apache.org/activemq/browse/AMQ-2280 > Project: ActiveMQ > Issue Type: Bug > Components: Broker, Connector > Affects Versions: 5.3.0 > Environment: linux 2.6.26.8, Fedora Core 8 > java version "1.6.0_11" > Java(TM) SE Runtime Environment (build 1.6.0_11-b03) > Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing) > apache-activemq-5.3-SNAPSHOT-bin.gz Fri May 29 06:12:47 GMT+00:00 2009 34977374 > Reporter: Aleksandar Ivanisevic > Attachments: AMQ-2280.patch > > > This does not happen in 5.2.0, only in 5.3..SNAPSHOT > I'm getting the above exception with the following STOMP session > > telnet localhost 61613 > Trying 127.0.0.1... > Connected to localhost. > Escape character is '^]'. > CONNECT > passcode:password > login:login > ^@ > CONNECTED > session:ID:alex-60773-1244124360289-2:2 > SUBSCRIBE > activemq.prefetchSize:1 > ack:client > destination:/queue/COMMAND.HOST.alex > activemq.exclusive:true > ^@ > BEGIN > destination:/queue/COMMANDREPLY.HOST.alex > transaction:ID:alex-58262-1244123488785-2:1-1 > persistent:true > ^@ > SEND > destination:/queue/COMMANDREPLY.HOST.alex > transaction:ID:alex-58262-1244123488785-2:1-1 > receipt:ID:alex-58262-1244123488785-2:1-2 > persistent:true > replytext > ^@ > RECEIPT > receipt-id:ID:alex-58262-1244123488785-2:1-2 > COMMIT > destination:/queue/COMMANDREPLY.HOST.alex > transaction:ID:alex-58262-1244123488785-2:1-1 > ^@ > Connection closed by foreign host. > at this point AMQ closses the TCP connection and I see the following in the log (DEBUG root log level): > DEBUG TransportConnection - Setting up new connection: /127.0.0.1:44692 > DEBUG AMQPersistenceAdapter - dataFilesInProgress.values: (0) [] > DEBUG AMQPersistenceAdapter - lastDataFile: 1 > DEBUG AsyncDataManager - lastFileId=0, purgeList: (0) [] > DEBUG AbstractRegion - localhost adding consumer: ID:alex-60773-1244124360289-2:2:-1:1 for destination: queue://COMMAND.HOST.alex > DEBUG AMQPersistenceAdapter - Checkpoint started. > DEBUG AMQPersistenceAdapter - Checkpoint done. > DEBUG AMQPersistenceAdapter - Checkpoint started. > DEBUG AMQPersistenceAdapter - Checkpoint done. > DEBUG AMQPersistenceAdapter - dataFilesInProgress.values: (0) [] > DEBUG AMQPersistenceAdapter - lastDataFile: 1 > DEBUG AsyncDataManager - lastFileId=0, purgeList: (0) [] > DEBUG AMQPersistenceAdapter - Checkpoint started. > DEBUG AMQPersistenceAdapter - Checkpoint done. > DEBUG AMQMessageStore - Journalled transacted message add for: ID:alex-60773-1244124360289-2:2:-1:1:1, at: offset = 10973, file = 1, size = 375, type = 1 > DEBUG AMQPersistenceAdapter - dataFilesInProgress.values: (0) [] > DEBUG AMQPersistenceAdapter - lastDataFile: 1 > DEBUG AsyncDataManager - lastFileId=0, purgeList: (0) [] > DEBUG AMQPersistenceAdapter - Checkpoint started. > DEBUG AMQPersistenceAdapter - Checkpoint done. > DEBUG Transport - Transport failed: java.io.IOException: Unexpected error occured > java.io.IOException: Unexpected error occured > at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:192) > at java.lang.Thread.run(Thread.java:619) > Caused by: java.util.NoSuchElementException > at java.util.LinkedList.getFirst(LinkedList.java:109) > at org.apache.activemq.transport.stomp.StompSubscription.onStompCommit(StompSubscription.java:130) > at org.apache.activemq.transport.stomp.ProtocolConverter.onStompCommit(ProtocolConverter.java:337) > at org.apache.activemq.transport.stomp.ProtocolConverter.onStompCommand(ProtocolConverter.java:179) > at org.apache.activemq.transport.stomp.StompTransportFilter.onCommand(StompTransportFilter.java:67) > at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84) > at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:203) > at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185) > ... 1 more > DEBUG TransportConnection - Stopping connection: /127.0.0.1:44692 > DEBUG TcpTransport - Stopping transport tcp:///127.0.0.1:44692 > DEBUG TransportConnection - Stopped transport: /127.0.0.1:44692 > DEBUG TransportConnection - Cleaning up connection resources: /127.0.0.1:44692 > DEBUG AbstractRegion - localhost removing consumer: ID:alex-60773-1244124360289-2:2:-1:1 for destination: queue://COMMAND.HOST.alex > DEBUG LocalTransaction - rollback: TX:ID:alex-60773-1244124360289-2:2:1 syncCount: 3 > DEBUG AMQMessageStore - Transacted message add rollback for: ID:alex-60773-1244124360289-2:2:-1:1:1, at: offset = 10973, file = 1, size = 375, type = 1 > DEBUG TransportConnection - Connection Stopped: /127.0.0.1:44692 -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.