BUG#: 8274
authorvenkat.puvvada <venkat.puvvada>
Wed, 17 Dec 2008 09:48:17 +0000 (09:48 +0000)
committervenkat.puvvada <venkat.puvvada>
Wed, 17 Dec 2008 09:48:17 +0000 (09:48 +0000)
TITLE: TestMessageQueueService segfaults intermittently.
DESCRIPTION:

src/Pegasus/Common/tests/MessageQueueService/MessageQueueService.cpp

index d29fa727afae2274838c09cdb836f835871cc70b..3df8f35c2c217af0ecf59b9b4e30d2bacd963ecc 100644 (file)
@@ -182,6 +182,7 @@ class MessageQueueClient : public MessageQueueService
 
 AtomicInt msg_count;
 AtomicInt client_count;
+AtomicInt legacyCount;
 
 
 Uint32 MessageQueueClient::get_qid()
@@ -204,6 +205,7 @@ void MessageQueueServer::_handle_incoming_operation(AsyncOpNode *operation)
         {
             if (rq->getType() == CIM_CREATE_CLASS_REQUEST_MESSAGE)
             {
+                legacyCount++;
                 if (verbose)
                 {
                     cout << " caught a hacked legacy message " << endl;
@@ -454,6 +456,12 @@ ThreadReturnType PEGASUS_THREAD_CDECL client_func(void *parm)
 
     q_client->SendForget(legacy);
 
+    // Wait untill all legacy messages are processed.
+    while (legacyCount.get() < 3)
+    {
+        Threads::yield();
+    }
+
     MessageQueueService * server = static_cast<MessageQueueService *>(
         MessageQueue::lookup(serverQueue->getQueueId()));