activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Giovani Seben (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AMQ-2280) stomp: Transport failed: java.io.IOException: Unexpected error occured
Date Tue, 14 Jul 2009 20:34:33 GMT

    [ https://issues.apache.org/activemq/browse/AMQ-2280?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=52821#action_52821
] 

Giovani Seben commented on AMQ-2280:
------------------------------------

I was reviewing this report and I found the problem that generates this exception. 

In the particular case shown here, when commiting a transaction the broker will attempt to
commit messages received by the subscriber created before the transaction. 
{code}
SUBSCRIBE
activemq.prefetchSize:1
ack:client
destination:/queue/COMMAND.HOST.alex
activemq.exclusive:true
{code}
Since there are no messages there to be commited it fails when doing a lookup on the message
subscription linked list. 

Stomp transactions are based only on the transaction ID. The sample here assumes that the
transaction is tied to the destination which is not the case. In this case the destination
parameter passed in the BEGIN and COMMIT statements is simply ignored by the stomp transport.
They are not part of the protocol specification AFAIK. Since mixing multiple transacted and
non-transacted destinations within the same stomp connection will cause problems I added a
simple check that will warn the user about this issue.  

> 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
>
> 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.


Mime
View raw message