[ https://issues.apache.org/jira/browse/PROTON-244?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13582084#comment-13582084 ]
Jan-Helge Bergesen commented on PROTON-244: ------------------------------------------- When exception occurr, the client will hang: Daemon Thread [Camel (wms) thread #0 - JmsConsumer[WMSTransactionTopicDestination]] (Suspended) waiting for: ConnectionEndpoint (id=71) Object.wait(long) line: not available [native method] ConnectionEndpoint(Object).wait() line: 485 Sender.close() line: 325 MessageProducerImpl.close() line: 159 JmsUtils.closeMessageProducer(MessageProducer) line: 128 JmsConfiguration$CamelJmsTemplate.doSendToDestination(Destination, MessageCreator, MessageSentCallback, Session) line: 227 JmsConfiguration$CamelJmsTemplate.access$100(JmsConfiguration$CamelJmsTemplate, Destination, MessageCreator, MessageSentCallback, Session) line: 159 JmsConfiguration$CamelJmsTemplate$1.doInJms(Session) line: 173 JmsConfiguration$CamelJmsTemplate(JmsTemplate).execute(SessionCallback<T>, boolean) line: 466 JmsConfiguration$CamelJmsTemplate.send(String, MessageCreator, MessageSentCallback) line: 170 JmsProducer.doSend(boolean, String, Destination, MessageCreator, MessageSentCallback) line: 402 JmsProducer.processInOnly(Exchange, AsyncCallback) line: 356 JmsProducer.process(Exchange, AsyncCallback) line: 132 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 SendProcessor$2.doInAsyncProducer(Producer, AsyncProcessor, Exchange, ExchangePattern, AsyncCallback) line: 122 ProducerCache.doInAsyncProducer(Endpoint, Exchange, ExchangePattern, AsyncCallback, AsyncProducerCallback) line: 298 SendProcessor.process(Exchange, AsyncCallback) line: 117 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 InstrumentationProcessor(DelegateAsyncProcessor).processNext(Exchange, AsyncCallback) line: 99 InstrumentationProcessor(DelegateAsyncProcessor).process(Exchange, AsyncCallback) line: 90 InstrumentationProcessor.process(Exchange, AsyncCallback) line: 73 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 TraceInterceptor(DelegateAsyncProcessor).processNext(Exchange, AsyncCallback) line: 99 TraceInterceptor(DelegateAsyncProcessor).process(Exchange, AsyncCallback) line: 90 TraceInterceptor.process(Exchange, AsyncCallback) line: 91 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 DefaultErrorHandler(RedeliveryErrorHandler).processErrorHandler(Exchange, AsyncCallback, RedeliveryErrorHandler$RedeliveryData) line: 334 DefaultErrorHandler(RedeliveryErrorHandler).process(Exchange, AsyncCallback) line: 220 RouteContextProcessor.processNext(Exchange, AsyncCallback) line: 45 RouteContextProcessor(DelegateAsyncProcessor).process(Exchange, AsyncCallback) line: 90 DefaultChannel.process(Exchange, AsyncCallback) line: 303 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 Pipeline.process(Exchange, Exchange, AsyncCallback, Iterator<Processor>, AsyncProcessor) line: 117 Pipeline.process(Exchange, AsyncCallback) line: 80 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 ChoiceProcessor.process(Exchange, AsyncCallback) line: 85 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 InstrumentationProcessor(DelegateAsyncProcessor).processNext(Exchange, AsyncCallback) line: 99 InstrumentationProcessor(DelegateAsyncProcessor).process(Exchange, AsyncCallback) line: 90 InstrumentationProcessor.process(Exchange, AsyncCallback) line: 73 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 TraceInterceptor(DelegateAsyncProcessor).processNext(Exchange, AsyncCallback) line: 99 TraceInterceptor(DelegateAsyncProcessor).process(Exchange, AsyncCallback) line: 90 TraceInterceptor.process(Exchange, AsyncCallback) line: 91 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 DefaultErrorHandler(RedeliveryErrorHandler).processErrorHandler(Exchange, AsyncCallback, RedeliveryErrorHandler$RedeliveryData) line: 334 DefaultErrorHandler(RedeliveryErrorHandler).process(Exchange, AsyncCallback) line: 220 RouteContextProcessor.processNext(Exchange, AsyncCallback) line: 45 RouteContextProcessor(DelegateAsyncProcessor).process(Exchange, AsyncCallback) line: 90 DefaultChannel.process(Exchange, AsyncCallback) line: 303 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 Pipeline.process(Exchange, Exchange, AsyncCallback, Iterator<Processor>, AsyncProcessor) line: 117 Pipeline.process(Exchange, AsyncCallback) line: 80 RouteContextProcessor.processNext(Exchange, AsyncCallback) line: 45 RouteContextProcessor(DelegateAsyncProcessor).process(Exchange, AsyncCallback) line: 90 UnitOfWorkProcessor.processAsync(Exchange, AsyncCallback, UnitOfWork) line: 150 UnitOfWorkProcessor.process(Exchange, AsyncCallback) line: 117 RouteInflightRepositoryProcessor.processNext(Exchange, AsyncCallback) line: 48 RouteInflightRepositoryProcessor(DelegateAsyncProcessor).process(Exchange, AsyncCallback) line: 90 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 InstrumentationProcessor(DelegateAsyncProcessor).processNext(Exchange, AsyncCallback) line: 99 InstrumentationProcessor(DelegateAsyncProcessor).process(Exchange, AsyncCallback) line: 90 InstrumentationProcessor.process(Exchange, AsyncCallback) line: 73 AsyncProcessorHelper.process(AsyncProcessor, Exchange) line: 99 InstrumentationProcessor(DelegateAsyncProcessor).process(Exchange) line: 86 EndpointMessageListener.onMessage(Message) line: 104 DefaultJmsMessageListenerContainer(AbstractMessageListenerContainer).doInvokeListener(MessageListener, Message) line: 562 DefaultJmsMessageListenerContainer(AbstractMessageListenerContainer).invokeListener(Session, Message) line: 500 DefaultJmsMessageListenerContainer(AbstractMessageListenerContainer).doExecuteListener(Session, Message) line: 468 DefaultJmsMessageListenerContainer(AbstractPollingMessageListenerContainer).doReceiveAndExecute(Object, Session, MessageConsumer, TransactionStatus) line: 325 DefaultJmsMessageListenerContainer(AbstractPollingMessageListenerContainer).receiveAndExecute(Object, Session, MessageConsumer) line: 263 DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener() line: 1069 DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop() line: 1061 DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run() line: 958 ThreadPoolExecutor$Worker.runTask(Runnable) line: 886 ThreadPoolExecutor$Worker.run() line: 908 Thread.run() line: 662 > NPE in org/apache/qpid/proton/jms/InboundTransformer when connecting > qpid-client to qpid-proton in ActiveMQ > ----------------------------------------------------------------------------------------------------------- > > Key: PROTON-244 > URL: https://issues.apache.org/jira/browse/PROTON-244 > Project: Qpid Proton > Issue Type: Bug > Components: proton-j > Affects Versions: 0.3 > Reporter: Jan-Helge Bergesen > Attachments: PROTON-244.logexcerpt.txt > > > Connecting a ConnectionFactory from qpid-amqp-1-0-client-jms version 0.20 to > ActiveMQ 5.8.0, yields NPE: > org.apache.activemq.transport.amqp.AmqpProtocolException: Could not process > AMQP commands > at > org.apache.activemq.transport.amqp.AmqpProtocolConverter.onFrame(AmqpProtocolConverter.java:245) > at > org.apache.activemq.transport.amqp.AmqpProtocolConverter.onAMQPData(AmqpProtocolConverter.java:151) > at > org.apache.activemq.transport.amqp.AmqpTransportFilter.onCommand(AmqpTransportFilter.java:94) > at > org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) > at > org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214) > at > org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196) > at java.lang.Thread.run(Thread.java:662) > Caused by: java.lang.NullPointerException > at > org.apache.qpid.proton.jms.InboundTransformer.populateMessage(InboundTransformer.java:146) > at > org.apache.qpid.proton.jms.AMQPNativeInboundTransformer.transform(AMQPNativeInboundTransformer.java:37) > at > org.apache.activemq.transport.amqp.AmqpProtocolConverter$ProducerContext.onMessage(AmqpProtocolConverter.java:454) > at > org.apache.activemq.transport.amqp.AmqpProtocolConverter$BaseProducerContext.onDelivery(AmqpProtocolConverter.java:435) > at > org.apache.activemq.transport.amqp.AmqpProtocolConverter.onFrame(AmqpProtocolConverter.java:215) > ... 6 more > Looking at > https://github.com/apache/qpid-proton/blob/trunk/proton-j/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/InboundTransformer.java#L146 > It would seems that qpid-amqp-1-0-client-jms sends a message with header > "x-opt-jms-type" with value NULL. > This might very well be an invalid combination of client/broker setup -- > however, the proton-jms code could possibly benefit from utilizing > String.valueOf(..) instead of getValue().toString() (or similar) :-) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira