[
https://issues.apache.org/activemq/browse/AMQ-1249?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_39145
]
Pawel Niewiadomski commented on AMQ-1249:
-----------------------------------------
Let me think loud: if you use socket.write you usually write chunk by chunk so
you can actually detect this somehow - you're probably use socket.write to send
chunk by chunk, right? So each call to socket.write will return after some
time, so you can set flag "I'm still alive" to true and continue sending, if
connection fails flag will not be set and application will know that
something's wrong.
Am I thinking right?
> Exception when sending big messages
> -----------------------------------
>
> Key: AMQ-1249
> URL: https://issues.apache.org/activemq/browse/AMQ-1249
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 4.1.1
> Reporter: Pawel Niewiadomski
>
> Scenario:
> used queue to transfer a message of size 10MB, producer and consumer were in
> the same location, but broker was available through a WAN, so sending a
> message took some time, client crashed with exception (also added some trace):
> {noformat}
> 14:58:00,914 DEBUG [main] org.apache.activemq.ActiveMQSession: Sending
> message: ActiveMQBytesMessage {commandId = 0, responseRequired = false,
> messageId = ID:itstl007-41444-1179835075925-1:0:1:1:1, originalDestination =
> null, originalTransactionId = null, producerId =
> ID:itstl007-41444-1179835075925-1:0:1:1, destination = queue://Huge.Remote.1,
> transactionId = null, expiration = 0, timestamp = 1179835080911, arrival = 0,
> correlationId = null, replyTo = null, persistent = true, type = null,
> priority = 4, groupID = null, groupSequence = 0, targetConsumerId = null,
> compressed = false, userID = null, content = [EMAIL PROTECTED],
> marshalledProperties = null, dataStructure = null, redeliveryCounter = 0,
> size = 0, properties = {HASH=80f6524683f484f19f244fc5d290f79f5f1b48c1},
> readOnlyProperties = true, readOnlyBody = true, droppable = false}
> ActiveMQBytesMessage{ bytesOut = null, dataOut = null, dataIn = null }
> 14:58:00,914 DEBUG [main]
> org.apache.activemq.transport.TransportLogger.Connection:1: SENDING:
> ActiveMQBytesMessage {commandId = 5, responseRequired = true, messageId =
> ID:itstl007-41444-1179835075925-1:0:1:1:1, originalDestination = null,
> originalTransactionId = null, producerId =
> ID:itstl007-41444-1179835075925-1:0:1:1, destination = queue://Huge.Remote.1,
> transactionId = null, expiration = 0, timestamp = 1179835080911, arrival = 0,
> correlationId = null, replyTo = null, persistent = true, type = null,
> priority = 4, groupID = null, groupSequence = 0, targetConsumerId = null,
> compressed = false, userID = null, content = [EMAIL PROTECTED],
> marshalledProperties = null, dataStructure = null, redeliveryCounter = 0,
> size = 0, properties = {HASH=80f6524683f484f19f244fc5d290f79f5f1b48c1},
> readOnlyProperties = true, readOnlyBody = true, droppable = false}
> ActiveMQBytesMessage{ bytesOut = null, dataOut = null, dataIn = null }
> 14:58:26,716 DEBUG [ActiveMQ Transport:
> tcp://gkscoc01.igk.intel.com/172.28.168.10:61616]
> org.apache.activemq.transport.TransportLogger.Connection:1: RECEIVED:
> KeepAliveInfo {}
> 14:58:41,699 DEBUG [ActiveMQ Transport:
> tcp://gkscoc01.igk.intel.com/172.28.168.10:61616]
> org.apache.activemq.transport.TransportLogger.Connection:1: RECEIVED:
> KeepAliveInfo {}
> 14:58:56,701 DEBUG [ActiveMQ Transport:
> tcp://gkscoc01.igk.intel.com/172.28.168.10:61616]
> org.apache.activemq.transport.TransportLogger.Connection:1: RECEIVED:
> KeepAliveInfo {}
> 14:58:56,707 DEBUG [ActiveMQ Transport:
> tcp://gkscoc01.igk.intel.com/172.28.168.10:61616]
> org.apache.activemq.transport.TransportLogger.Connection:1: RECEIVED
> Exception: java.io.EOFException
> java.io.EOFException
> at java.io.DataInputStream.readInt(DataInputStream.java:397)
> at
> org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:267)
> at
> org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:156)
> at
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:136)
> at java.lang.Thread.run(Thread.java:536)
> 14:58:56,709 DEBUG [main]
> org.apache.activemq.transport.TransportLogger.Connection:1: SENDING:
> RemoveInfo {commandId = 6, responseRequired = false, objectId =
> ID:itstl007-41444-1179835075925-1:0:1:1}
> 14:58:56,711 DEBUG [main]
> org.apache.activemq.transport.TransportLogger.Connection:1: SENDING:
> RemoveInfo {commandId = 7, responseRequired = false, objectId =
> ID:itstl007-41444-1179835075925-1:0:1}
> 14:58:56,711 DEBUG [main]
> org.apache.activemq.transport.TransportLogger.Connection:1: SENDING:
> RemoveInfo {commandId = 8, responseRequired = true, objectId =
> ID:itstl007-41444-1179835075925-1:0}
> Exception in thread "main" javax.jms.JMSException: The transport is not
> running.
> at
> org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:58)
> at
> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1213)
> at
> org.apache.activemq.ActiveMQConnection.close(ActiveMQConnection.java:579)
> at
> com.intel.ingrid.test.stress.jms.HugeMessageProducer.main(HugeMessageProducer.java:93)
> Caused by: java.io.IOException: The transport is not running.
> at
> org.apache.activemq.transport.TransportSupport.checkStarted(TransportSupport.java:103)
> at
> org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:117)
> at
> org.apache.activemq.transport.TransportLogger.oneway(TransportLogger.java:71)
> at
> org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:141)
> at
> org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:80)
> at
> org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:93)
> at
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:47)
> at
> org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:69)
> at
> org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:79)
> at
> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1203)
> ... 2 more
> {noformat}
> After I changed *wireFormat.maxInactivityDuration* to 0 it succeeded and sent
> the message.
> It's strange for me because in the first case (when
> *wireFormat.maxInactivityDuration* is not set, so default value is used)
> *there's an activity occuring* - the client sends a lot of data so server
> should not treat it as a hanging client and *the server should not close the
> connection*.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.