You are viewing a plain text version of this content. The canonical link for it is here.
Posted to proton@qpid.apache.org by "Jan-Helge Bergesen (JIRA)" <ji...@apache.org> on 2013/02/20 11:43:12 UTC

[jira] [Commented] (PROTON-244) NPE in org/apache/qpid/proton/jms/InboundTransformer when connecting qpid-client to qpid-proton in ActiveMQ

    [ 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