You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Vincent Giacomini (JIRA)" <ji...@apache.org> on 2014/01/24 14:56:38 UTC

[jira] [Comment Edited] (AMQCPP-531) receiveNoWait never returns

    [ https://issues.apache.org/jira/browse/AMQCPP-531?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13880976#comment-13880976 ] 

Vincent Giacomini edited comment on AMQCPP-531 at 1/24/14 1:55 PM:
-------------------------------------------------------------------

below the stack trace given by My IDE RDP (Rational developer for power)
_event_wait : libpthreads.a(shr_xpg5_64.o):.text	
_cond_wait_local : libpthreads.a(shr_xpg5_64.o):.text	
_cond_wait : libpthreads.a(shr_xpg5_64.o):.text	
pthread_cond_wait : libpthreads.a(shr_xpg5_64.o):.text	
interruptibleWaitOnCondition__Q5_5decaf8internal4util10concurrent14PlatformThreadFP14pthread_cond_tP15pthread_mutex_tRQ5_5decaf8internal4util10concurrent19CompletionCondition : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
park__Q5_5decaf8internal4util10concurrent9ThreadingFPQ3_5decaf4lang6ThreadLi : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
park__Q5_5decaf8internal4util10concurrent9ThreadingFPQ3_5decaf4lang6Thread : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
park__Q5_5decaf4util10concurrent5locks11LockSupportFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
parkAndCheckInterrupt__Q5_5decaf4util10concurrent5locks17SynchronizerStateCFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
acquireQueued__Q5_5decaf4util10concurrent5locks17SynchronizerStateFPQ2_32AbstractQueuedSynchronizer.cpp-04Nodei : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
acquire__Q5_5decaf4util10concurrent5locks26AbstractQueuedSynchronizerFi : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
lock__Q2_28ReentrantReadWriteLock.cpp-09WriteLockFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
removeConsumer__Q4_8activemq4core7kernels21ActiveMQSessionKernelFQ3_5decaf4lang7PointerXTQ4_8activemq4core7kernels22ActiveMQConsumerKernelTQ5_5decaf4util10concurrent6atomic16AtomicRefCounter_ : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
dispose__Q4_8activemq4core7kernels22ActiveMQConsumerKernelFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
doClose__Q4_8activemq4core7kernels22ActiveMQConsumerKernelFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
close__Q4_8activemq4core7kernels22ActiveMQConsumerKernelFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
__dt__Q3_8activemq4core16ActiveMQConsumerFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
std::auto_ptr<cms::MessageConsumer>::~auto_ptr() : MsiScheduler.o	
std::auto_ptr<cms::MessageConsumer>::__dftdt() : MsiScheduler.o	
__Throw : libC.a(ansicore_64.o):.text	
__DoThrowV6 : libC.a(ansicore_64.o):.text	
receiveNoWait__Q3_8activemq4core16ActiveMQConsumerFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
msi::service::MsiScheduler::Run() : MsiScheduler.o	
msi::service::MsiServer::start(int,char**,std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,MsiService*,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,MsiService*> > >&) : MsiServer.o	
main : MsiServices.o	
__start : crt0_64.o	


Below the code doing the receiveNoWait:
	// créer un consommateur général
	std::auto_ptr<cms::MessageConsumer> consumer(session->createConsumer(serviceQueue)) ;

	std::stringstream ss ;

	// crée un selecteur pour une message de vie pour ce processus
	// exemple de selecteur ==> JMSType = 'aliveMsg' AND dest = '1'
	ss << "JMSType = '" << msi::constant::process::alive_Rq_msgtype << "' AND " << msi::constant::process::dest_alive_msgprop << " = '" << server.getId() << "'" ;
	LOG4CXX_INFO(logger,"selecteur message de vie = " << ss.str()) ;

	// créé un consommateur pour les messages de vie
	std::auto_ptr<cms::MessageConsumer> aliveConsumer(session->createConsumer(serviceQueue,ss.str())) ;

	LOG4CXX_INFO(logger, "service prêt") ;
	do
    {
		  // Récupération prioritaire des messages de vie
		  message = aliveConsumer->receiveNoWait() ;

		  // si pas de message de vue, on se met en attente d'un autre type de message
		  if (message == NULL)
		  {
			  // récupère un message de la file d'attente (bloque si celle-ci est vide)
			  message = consumer->receive(msi::constant::system::maxMessageWait) ;
		  }


was (Author: vgiacomini):
below the stack trace giev by My IDE RDP (Rational developer for power)
_event_wait : libpthreads.a(shr_xpg5_64.o):.text	
_cond_wait_local : libpthreads.a(shr_xpg5_64.o):.text	
_cond_wait : libpthreads.a(shr_xpg5_64.o):.text	
pthread_cond_wait : libpthreads.a(shr_xpg5_64.o):.text	
interruptibleWaitOnCondition__Q5_5decaf8internal4util10concurrent14PlatformThreadFP14pthread_cond_tP15pthread_mutex_tRQ5_5decaf8internal4util10concurrent19CompletionCondition : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
park__Q5_5decaf8internal4util10concurrent9ThreadingFPQ3_5decaf4lang6ThreadLi : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
park__Q5_5decaf8internal4util10concurrent9ThreadingFPQ3_5decaf4lang6Thread : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
park__Q5_5decaf4util10concurrent5locks11LockSupportFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
parkAndCheckInterrupt__Q5_5decaf4util10concurrent5locks17SynchronizerStateCFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
acquireQueued__Q5_5decaf4util10concurrent5locks17SynchronizerStateFPQ2_32AbstractQueuedSynchronizer.cpp-04Nodei : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
acquire__Q5_5decaf4util10concurrent5locks26AbstractQueuedSynchronizerFi : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
lock__Q2_28ReentrantReadWriteLock.cpp-09WriteLockFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
removeConsumer__Q4_8activemq4core7kernels21ActiveMQSessionKernelFQ3_5decaf4lang7PointerXTQ4_8activemq4core7kernels22ActiveMQConsumerKernelTQ5_5decaf4util10concurrent6atomic16AtomicRefCounter_ : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
dispose__Q4_8activemq4core7kernels22ActiveMQConsumerKernelFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
doClose__Q4_8activemq4core7kernels22ActiveMQConsumerKernelFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
close__Q4_8activemq4core7kernels22ActiveMQConsumerKernelFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
__dt__Q3_8activemq4core16ActiveMQConsumerFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
std::auto_ptr<cms::MessageConsumer>::~auto_ptr() : MsiScheduler.o	
std::auto_ptr<cms::MessageConsumer>::__dftdt() : MsiScheduler.o	
__Throw : libC.a(ansicore_64.o):.text	
__DoThrowV6 : libC.a(ansicore_64.o):.text	
receiveNoWait__Q3_8activemq4core16ActiveMQConsumerFv : libactivemq-cpp.a(libactivemq-cpp.so.18):.text	
msi::service::MsiScheduler::Run() : MsiScheduler.o	
msi::service::MsiServer::start(int,char**,std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,MsiService*,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,MsiService*> > >&) : MsiServer.o	
main : MsiServices.o	
__start : crt0_64.o	


Below the code doing the receiveNoWait:
	// créer un consommateur général
	std::auto_ptr<cms::MessageConsumer> consumer(session->createConsumer(serviceQueue)) ;

	std::stringstream ss ;

	// crée un selecteur pour une message de vie pour ce processus
	// exemple de selecteur ==> JMSType = 'aliveMsg' AND dest = '1'
	ss << "JMSType = '" << msi::constant::process::alive_Rq_msgtype << "' AND " << msi::constant::process::dest_alive_msgprop << " = '" << server.getId() << "'" ;
	LOG4CXX_INFO(logger,"selecteur message de vie = " << ss.str()) ;

	// créé un consommateur pour les messages de vie
	std::auto_ptr<cms::MessageConsumer> aliveConsumer(session->createConsumer(serviceQueue,ss.str())) ;

	LOG4CXX_INFO(logger, "service prêt") ;
	do
    {
		  // Récupération prioritaire des messages de vie
		  message = aliveConsumer->receiveNoWait() ;

		  // si pas de message de vue, on se met en attente d'un autre type de message
		  if (message == NULL)
		  {
			  // récupère un message de la file d'attente (bloque si celle-ci est vide)
			  message = consumer->receive(msi::constant::system::maxMessageWait) ;
		  }

> receiveNoWait never returns
> ---------------------------
>
>                 Key: AMQCPP-531
>                 URL: https://issues.apache.org/jira/browse/AMQCPP-531
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>    Affects Versions: 3.8.2
>         Environment: AIX 6.1
> Compilateur XLC V12
> ActiveMQ-cpp buit with the following options : -qminimaltoc -q64 -qrtti=all 
>            Reporter: Vincent Giacomini
>            Assignee: Timothy Bish
>
> Just built the last version 3.8.2 of activemq-cpp (SSL disabled)
> But my application doesn't work anymore. 
> The reason : the consumer->ReceiveNoWait() method now never returns 
> Works well in activemq-cpp 3.4.1....



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)