rpms/tog-pegasus/FC-5 pegasus-2.5.1-obz5073.patch, NONE, 1.1 pegasus-2.5.1-obz5090.patch, NONE, 1.1 pegasus-2.5.1-obz5115.patch, NONE, 1.1 pegasus-2.5.1-obz5119.patch, NONE, 1.1 pegasus-2.5.1-obz5180.patch, NONE, 1.1 tog-pegasus.spec, 1.29, 1.30

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Sat Jul 8 00:08:03 UTC 2006


Author: jvdias

Update of /cvs/dist/rpms/tog-pegasus/FC-5
In directory cvs.devel.redhat.com:/tmp/cvs-serv13866

Modified Files:
	tog-pegasus.spec 
Added Files:
	pegasus-2.5.1-obz5073.patch pegasus-2.5.1-obz5090.patch 
	pegasus-2.5.1-obz5115.patch pegasus-2.5.1-obz5119.patch 
	pegasus-2.5.1-obz5180.patch 
Log Message:
apply upstream bug fixes: 5073, 5090, 5115, 5119, 5180

pegasus-2.5.1-obz5073.patch:
 AssocClassCache.cpp |   24 ++++++++++++++++++------
 AssocClassCache.h   |   10 +++++-----
 AssocClassTable.cpp |   14 --------------
 3 files changed, 23 insertions(+), 25 deletions(-)

--- NEW FILE pegasus-2.5.1-obz5073.patch ---
--- pegasus/src/Pegasus/Repository/AssocClassTable.cpp.obz5073	2006-01-30 11:18:20.000000000 -0500
+++ pegasus/src/Pegasus/Repository/AssocClassTable.cpp	2006-06-12 13:13:18.000000000 -0400
@@ -218,10 +218,6 @@
     fields.append(toClassName.getString());
     fields.append(toPropertyName.getString());
 
-    for (Uint16 x=0; x<fields.size();x++)
-    {
-        fields[x].toLower();
-    }
 
     _PutRecord(os, fields);
 
@@ -263,10 +259,6 @@
     fields.append(toClassName.getString());
     fields.append(toPropertyName.getString());
 
-    for (Uint16 x=0; x<fields.size();x++)
-    {
-        fields[x].toLower();
-    }
 
     _PutRecord(os, fields);
 
@@ -428,11 +420,6 @@
         // For each line in the associations table:
         while (_GetRecord(is, fields))
         {
-            // The cache key is always expected to be in lowercase
-            // While new association records are added in lowercase,
-            // the following line is required for compatibility
-            // with old repositories.
-            fields[FROM_CLASS_NAME_INDEX].toLower();
             cache->addRecord(fields[FROM_CLASS_NAME_INDEX],
                              fields);
         }
@@ -483,7 +470,6 @@
     for (Uint16 idx=0; idx < classList.size(); idx++)
     {
         String fromClassName = classList[idx].getString();
-        fromClassName.toLower();
         if (cache->getAssocClassEntry(fromClassName, records))
         {
             for (Uint16 rx=0; rx <records.size(); rx++)
--- pegasus/src/Pegasus/Repository/AssocClassCache.h.obz5073	2006-01-30 11:18:20.000000000 -0500
+++ pegasus/src/Pegasus/Repository/AssocClassCache.h	2006-06-12 13:13:18.000000000 -0400
@@ -63,24 +63,24 @@
     /** Retrieve an entry for an association class through direct
      * access via the from class name.
     */
-    Boolean getAssocClassEntry(const String& lowerCaseFromClassName,
+    Boolean getAssocClassEntry(const String& fromClassName,
                                Array< Array<String> >& entryList);
 
     /** Add a new entry to the association cache.
     */
-    Boolean addRecord(const String& lowerCaseFromClassName,
+    Boolean addRecord(const String& fromClassName,
                       Array<String> assocClassEntry);
 
     /** Remove an entry from the association cache specified by the given
      * association class name.
     */
-    Boolean removeEntry(const String& lowerCaseFromClassName);
+    Boolean removeEntry(const String& fromClassName);
 
    /** Remove an association record from the association cache specified by the given
     *  from class name and association name.
     */
-    Boolean removeRecord(const String& lowerCaseFromClassName,
-                         const String& lowerCaseAssocClassName);
+    Boolean removeRecord(const String& fromClassName,
+                         const String& assocClassName);
 
     /** Check if the cache is loaded with objects already.
     */
--- pegasus/src/Pegasus/Repository/AssocClassCache.cpp.obz5073	2006-01-30 11:18:20.000000000 -0500
+++ pegasus/src/Pegasus/Repository/AssocClassCache.cpp	2006-06-12 13:13:18.000000000 -0400
@@ -86,9 +86,12 @@
 /** Retrieve the list of entries for a from class through direct
  * access via the from class name.
 */
-Boolean AssocClassCache::getAssocClassEntry(const String& lowerCaseFromClassName,
+Boolean AssocClassCache::getAssocClassEntry(const String& fromClassName,
                                             Array< Array<String> >& entryList)
 {
+    String lowerCaseFromClassName = fromClassName;
+    lowerCaseFromClassName.toLower();
+
    return _assocClassCache->lookup(lowerCaseFromClassName,entryList);
 }
 
@@ -97,10 +100,12 @@
  * the new entry is appended to the old entry. Otherwise a new entry
  * is added to the cache.
 */
-Boolean AssocClassCache::addRecord(const String& lowerCaseFromClassName,
+Boolean AssocClassCache::addRecord(const String& fromClassName,
                                    Array<String> assocClassRecord)
 {
    Array< Array<String> > oldAssocClassEntryList;
+   String lowerCaseFromClassName = fromClassName;
+   lowerCaseFromClassName.toLower();
 
    if (_assocClassCache->lookup(lowerCaseFromClassName, oldAssocClassEntryList))
    {
@@ -115,18 +120,24 @@
 /** Remove an entry from the association cache specified by the given
  *  from class name.
 */
-Boolean AssocClassCache::removeEntry(const String& lowerCaseFromClassName)
+Boolean AssocClassCache::removeEntry(const String& fromClassName)
 {
+    String lowerCaseFromClassName = fromClassName;
+    lowerCaseFromClassName.toLower();
+
    return _assocClassCache->remove(lowerCaseFromClassName);
 }
 
 /** Remove an association record from the association cache specified by the given
  *  from class name and association name.
 */
-Boolean AssocClassCache::removeRecord(const String& lowerCaseFromClassName,
-                                      const String& lowerCaseAssocClassName)
+Boolean AssocClassCache::removeRecord(const String& fromClassName,
+                                      const String& assocClassName)
 {
    Array< Array<String> > oldAssocClassEntryList;
+   String lowerCaseFromClassName = fromClassName;
+   lowerCaseFromClassName.toLower();
+
    if (_assocClassCache->lookup(lowerCaseFromClassName, oldAssocClassEntryList))
    {
       for (Uint16 idx=0; idx < oldAssocClassEntryList.size(); idx++ )
@@ -134,7 +145,8 @@
          // The first entry in each record is the association class
          // name. Find the record for the association class and remove
          // it from the cache entry.
-         if (oldAssocClassEntryList[idx][ASSOC_CLASS_NAME_INDEX] == lowerCaseAssocClassName)
+         if (String::equalNoCase(oldAssocClassEntryList[idx][ASSOC_CLASS_NAME_INDEX],
+                                 assocClassName))
          {
             _assocClassCache->remove(lowerCaseFromClassName);
             if (oldAssocClassEntryList.size() > 1)

pegasus-2.5.1-obz5090.patch:
 CMPIProvider.cpp |   28 +++++++++++++++-------------
 1 files changed, 15 insertions(+), 13 deletions(-)

--- NEW FILE pegasus-2.5.1-obz5090.patch ---
--- pegasus/src/Pegasus/ProviderManager2/CMPI/CMPIProvider.cpp.obz5090	2006-01-30 11:18:04.000000000 -0500
+++ pegasus/src/Pegasus/ProviderManager2/CMPI/CMPIProvider.cpp	2006-07-07 18:20:48.000000000 -0400
@@ -297,19 +297,6 @@
 */ 
 void CMPIProvider::_terminate(Boolean terminating)
 {
-   {
-      WriteLock writeLock (broker.rwsemClassCache);
-
-      if (broker.clsCache) {
-         ClassCache::Iterator i=broker.clsCache->start();
-         for (; i; i++) {
-            delete i.value();
-         }
-         delete broker.clsCache;
-         broker.clsCache=NULL;
-      }
-   }
-
     const OperationContext opc;
     CMPIStatus rc={CMPI_RC_OK,NULL};
     CMPI_ContextOnStack eCtx(opc);
@@ -350,8 +337,23 @@
        if (rc.rc==CMPI_RC_ERR_NOT_SUPPORTED) noUnload=true;
 	   if ((rc.rc == CMPI_RC_DO_NOT_UNLOAD) || (rc.rc==CMPI_RC_NEVER_UNLOAD)) noUnload =true;
     }   
+
     if (noUnload == false) 
     {
+        // Cleanup the class cache
+        {
+           WriteLock writeLock (broker.rwsemClassCache);
+
+           if (broker.clsCache) {
+              ClassCache::Iterator i=broker.clsCache->start();
+              for (; i; i++) {
+                 delete i.value();
+              }
+              delete broker.clsCache;
+              broker.clsCache=NULL;
+           }
+        }
+
 	  // Check the thread list to make sure the thread has been de-allocated
 	  if (_threadWatchList.size() != 0)
 	  {

pegasus-2.5.1-obz5115.patch:
 SetConfig_EnvVar |   60 +++++++++++++++++++++++++++----------------------------
 1 files changed, 30 insertions(+), 30 deletions(-)

--- NEW FILE pegasus-2.5.1-obz5115.patch ---
--- pegasus/SetConfig_EnvVar.obz5115	2006-01-30 11:16:16.000000000 -0500
+++ pegasus/SetConfig_EnvVar	2006-06-07 15:06:18.000000000 -0400
@@ -1,34 +1,34 @@
 #!/usr/bin/perl
-//%2006////////////////////////////////////////////////////////////////////////
-//
-// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
-// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
-// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
-// IBM Corp.; EMC Corporation, The Open Group.
-// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
-// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
-// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
-// EMC Corporation; VERITAS Software Corporation; The Open Group.
-// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
-// EMC Corporation; Symantec Corporation; The Open Group.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to
-// deal in the Software without restriction, including without limitation the
-// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-// sell copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
-// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
-// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
-// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//================================================================================
+#//%2006////////////////////////////////////////////////////////////////////////
+#//
+#// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
+#// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
+#// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
+#// IBM Corp.; EMC Corporation, The Open Group.
+#// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
+#// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
+#// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
+#// EMC Corporation; VERITAS Software Corporation; The Open Group.
+#// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
+#// EMC Corporation; Symantec Corporation; The Open Group.
+#//
+#// Permission is hereby granted, free of charge, to any person obtaining a copy
+#// of this software and associated documentation files (the "Software"), to
+#// deal in the Software without restriction, including without limitation the
+#// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+#// sell copies of the Software, and to permit persons to whom the Software is
+#// furnished to do so, subject to the following conditions:
+#// 
+#// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
+#// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
+#// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+#// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+#// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+#// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+#// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+#// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#//
+#//================================================================================
 use strict;
 #use warnings;
 my $HELP_FILE = "SetConfig_EnvVar.help";

pegasus-2.5.1-obz5119.patch:
 CmpiImpl.cpp |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

--- NEW FILE pegasus-2.5.1-obz5119.patch ---
--- pegasus/src/Pegasus/Provider/CMPI/CmpiImpl.cpp.obz5119	2006-01-30 11:18:00.000000000 -0500
+++ pegasus/src/Pegasus/Provider/CMPI/CmpiImpl.cpp	2006-06-07 15:13:01.000000000 -0400
@@ -1197,7 +1197,7 @@
      else
        throw CmpiStatus(rc.rc,name->charPtr());
    }
-   if (name) *name=*(new CmpiString(s));
+   if (name) *name= CmpiString(s);
    return d;
 };
 
@@ -1386,7 +1386,7 @@
    CMPIString *s;
    d._data=getEnc()->ft->getKeyAt(getEnc(),(int)pos,&s,&rc);
    if (rc.rc!=CMPI_RC_OK) throw CmpiStatus(rc);
-   if (name) *name=*(new CmpiString(s));
+   if (name) *name= CmpiString(s);
    return d;
 }
 
@@ -1710,7 +1710,7 @@
      else
        throw CmpiStatus(rc.rc,name->charPtr());
    }
-   if (name) *name=*(new CmpiString(s));
+   if (name) *name= CmpiString(s);
    return d;
 }
 

pegasus-2.5.1-obz5180.patch:
 CIMOperationRequestDispatcher.cpp |   26 ++++++++++++++++++--------
 CIMOperationRequestDispatcher.h   |    2 ++
 2 files changed, 20 insertions(+), 8 deletions(-)

--- NEW FILE pegasus-2.5.1-obz5180.patch ---
--- pegasus/src/Pegasus/Server/CIMOperationRequestDispatcher.cpp.obz5180	2006-07-07 18:19:11.000000000 -0400
+++ pegasus/src/Pegasus/Server/CIMOperationRequestDispatcher.cpp	2006-07-07 19:03:51.000000000 -0400
@@ -421,7 +421,18 @@
                                                 CIMResponseMessage *&response)
 {
     static const char func[] = "CIMOperationRequestDispatcher::_enqueueResponse";
-    AutoMutex autoMut(_mut);
+    // Obtain the _enqueueResponseMutex mutex for this chunked request.
+    // This mutex is used to serialize chunked responses from all incoming
+    // provider threads. It is imperative that the sequencing done by the
+    // resequenceResponse() method and the writing of the chunked response
+    // to the connection socket (done as a synchronous enqueue at the end
+    // of this method) are atomic to ensure that the chunk that is marked
+    // as isComplete for the overall response is indeed the last chunk
+    // returned to the client. See PEP 140 for details.
+    // This mutex was moved into the OperationAggregate class as part of
+    // bug 4629 because we only need to serialize on a per-request basis.
+    // This prevents serializing independent requests on separate connections.
+    AutoMutex autoMut(poA->_enqueueResponseMutex);
     Boolean isComplete = false;
 
     try
@@ -550,13 +561,6 @@
                 CIMException(CIM_ERR_FAILED, String(failMsg));
     }
 
-    if (isComplete == true)
-    {
-        // also deletes the copied request attached to it
-        delete poA;
-        poA = 0;
-    }
-
     // after sending, the response has been deleted externally
     response = 0;
 
@@ -1785,6 +1789,12 @@
     // the ENTIRE response to the request.
 
     isComplete = service->_enqueueResponse(poA, response);
+    if (isComplete)
+    {
+        // also deletes the copied request attached to it
+        delete poA;
+        poA = 0;
+    }
 
     PEG_METHOD_EXIT();
 }
--- pegasus/src/Pegasus/Server/CIMOperationRequestDispatcher.h.obz5180	2006-02-10 14:13:47.000000000 -0500
+++ pegasus/src/Pegasus/Server/CIMOperationRequestDispatcher.h	2006-07-07 19:00:43.000000000 -0400
@@ -159,6 +159,7 @@
 */
 class PEGASUS_SERVER_LINKAGE OperationAggregate
 {
+   friend class CIMOperationRequestDispatcher;
 public:
     /* Operation Aggregate constructor.  Builds an aggregate
         object.
@@ -227,6 +228,7 @@
 
     Array<CIMResponseMessage*> _responseList;
     Mutex _appendResponseMutex;
+    Mutex _enqueueResponseMutex;
     CIMRequestMessage* _request;
     Uint32 _totalIssued;
     Uint32 _magicNumber;


Index: tog-pegasus.spec
===================================================================
RCS file: /cvs/dist/rpms/tog-pegasus/FC-5/tog-pegasus.spec,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- tog-pegasus.spec	31 May 2006 19:12:39 -0000	1.29
+++ tog-pegasus.spec	8 Jul 2006 00:08:01 -0000	1.30
@@ -31,7 +31,7 @@
 %define pegasus_uid	66
 
 Version: 		2.5.1
-Release: 		5%{?LINUX_VERSION:.%{LINUX_VERSION}}
+Release: 		6%{?LINUX_VERSION:.%{LINUX_VERSION}}
 Epoch:   		2
 #
 Summary:   		OpenPegasus WBEM Services for Linux
@@ -81,6 +81,11 @@
 Patch30:		pegasus-2.5.1-obz5059.patch
 Patch31:		pegasus-2.5.1-obz5072.patch
 Patch32:		pegasus-2.5.1-obz5083.patch
+Patch33:		pegasus-2.5.1-obz5115.patch
+Patch34:		pegasus-2.5.1-obz5119.patch
+Patch35:		pegasus-2.5.1-obz5073.patch
+Patch36:		pegasus-2.5.1-obz5090.patch
+Patch37:		pegasus-2.5.1-obz5180.patch
 #
 Conflicts: 		openwbem
 Provides: 		tog-pegasus-cimserver
@@ -169,6 +174,11 @@
 %patch30 -p1 -b .obz5059
 %patch31 -p1 -b .obz5072
 %patch32 -p1 -b .obz5083
+%patch33 -p1 -b .obz5115
+%patch34 -p1 -b .obz5119
+%patch35 -p1 -b .obz5073
+%patch36 -p1 -b .obz5090
+%patch37 -p1 -b .obz5180
 
 %build
 rm -rf ${RPM_BUILD_ROOT} || :;
@@ -308,7 +318,16 @@
 :;
 
 %changelog
-* Wed May 31 2006 JAson Vas Dias <jvdias at redhat.com> - 2:2.5.1-6
+* Fri Jul 07 2006 Jason Vas Dias <jvdias at redhat.com> - 2:2.4.1-6
+- More upstream 2.5.2_APPROVED bug fixes:
+  o 4629: Pegasus freezes when it is unable to send out completely, the results of a request
+  o 5073: Class Names on Reference, ReferenceNames, Assoc, AssocNames returned lower case
+  o 5090: cimserver crash on a request after attempting to unload idle CMPI providers
+  o 5119: memory leak in CMPI implementation
+  o 5115: fix SetConfig_EnvVar comments
+  o 5180: OperationAggregate deleted in _enqueueResponse while member mutex held
+
+* Wed May 31 2006 JAson Vas Dias <jvdias at redhat.com> - 2:2.5.1-5
 - Apply upstream patches for latest 2.5.2_APPROVED bugs:
   o 5046: cimprovider timeout needs to be increased
   o 5047: cimmof timeout needs to be increased




More information about the fedora-cvs-commits mailing list