[Commits] (vajda) - added more epydoc to Item.py

commits at osafoundation.org commits at osafoundation.org
Tue Jan 27 17:43:55 PST 2004


Commit by: vajda
Modified files:
osaf/chandler/Chandler/__hardhat__.py 1.146 1.147
osaf/chandler/Chandler/repository/__hardhat__.py None 1.1
osaf/chandler/Chandler/repository/item/Item.py 1.105 1.106
osaf/chandler/Chandler/repository/persistence/DBContainer.py 1.3 1.4

Log message:
 - added more epydoc to Item.py
 - added some more deadlock error recovery code in DBContainer.py
 - repository now has its own __hardhat__.py that builds UUIDext and API docs


ViewCVS links:
http://cvs.osafoundation.org/index.cgi/osaf/chandler/Chandler/__hardhat__.py.diff?r1=text&tr1=1.146&r2=text&tr2=1.147
http://cvs.osafoundation.org/index.cgi/osaf/chandler/Chandler/repository/__hardhat__.py?rev=1.1&content-type=text/vnd.viewcvs-markup
http://cvs.osafoundation.org/index.cgi/osaf/chandler/Chandler/repository/item/Item.py.diff?r1=text&tr1=1.105&r2=text&tr2=1.106
http://cvs.osafoundation.org/index.cgi/osaf/chandler/Chandler/repository/persistence/DBContainer.py.diff?r1=text&tr1=1.3&r2=text&tr2=1.4

Index: osaf/chandler/Chandler/repository/item/Item.py
diff -u osaf/chandler/Chandler/repository/item/Item.py:1.105 osaf/chandler/Chandler/repository/item/Item.py:1.106
--- osaf/chandler/Chandler/repository/item/Item.py:1.105	Mon Jan 26 19:10:53 2004
+++ osaf/chandler/Chandler/repository/item/Item.py	Tue Jan 27 17:43:23 2004
@@ -1,6 +1,6 @@
 
-__revision__  = "$Revision: 1.105 $"
-__date__      = "$Date: 2004/01/27 03:10:53 $"
+__revision__  = "$Revision: 1.106 $"
+__date__      = "$Date: 2004/01/28 01:43:23 $"
 __copyright__ = "Copyright (c) 2002 Open Source Applications Foundation"
 __license__   = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
 
@@ -43,7 +43,6 @@
         only the Chandler attributes are saved.
         @type kind: an item
         """
-        
         super(Item, self).__init__()
 
         self._status = Item.NEW
@@ -79,10 +78,26 @@
         self._setKind(kind)
 
     def __iter__(self):
+        """
+        Iterate over the children of this item.
+        """
 
         return self.iterChildren()
     
     def __repr__(self):
+        """
+        The debugging string representation of an item.
+
+        It follows the following format:
+
+        C{<classname (optional status): name uuid>}
+
+        where:
+          - C{classname} is the name of the class implementing the item
+          - C{optional status} is displayed when the item is stale or deleted
+          - C{name} is the item's name
+          - C{uuid} is the item's UUID
+        """
 
         if self._status & Item.RAW:
             return super(Item, self).__repr__()
@@ -98,10 +113,25 @@
                                self._uuid.str16())
 
     def __getattr__(self, name):
+        """
+        This method is called by python when looking up a Chandler attribute.
+        @param name: the name of the attribute being accessed.
+        @type name: a string
+        """
 
         return self.getAttributeValue(name)
 
     def __setattr__(self, name, value):
+        """
+        This method is called whenever an attribute's value is set.
+
+        It resolves whether the attribute is a Chandler attribute or a regular
+        python attribute and dispatches to the relevant methods.
+        @param name: the name of the attribute being set.
+        @type name: a string
+        @param value: the value being set.
+        @type value: anything
+        """
 
         if name[0] != '_':
             if self._values.has_key(name):
@@ -116,6 +146,14 @@
         return super(Item, self).__setattr__(name, value)
 
     def __delattr__(self, name):
+        """
+        This method is called whenever an attribute's value is removed.
+
+        It resolves whether the attribute is a Chandler attribute or a regular
+        python attribute and dispatches to the relevant methods.
+        @param name: the name of the attribute being cleared.
+        @type name: a string
+        """
 
         if self._values.has_key(name):
             self.removeAttributeValue(name, _attrDict=self._values)

Index: osaf/chandler/Chandler/repository/persistence/DBContainer.py
diff -u osaf/chandler/Chandler/repository/persistence/DBContainer.py:1.3 osaf/chandler/Chandler/repository/persistence/DBContainer.py:1.4
--- osaf/chandler/Chandler/repository/persistence/DBContainer.py:1.3	Mon Jan 26 19:10:54 2004
+++ osaf/chandler/Chandler/repository/persistence/DBContainer.py	Tue Jan 27 17:43:25 2004
@@ -1,6 +1,6 @@
 
-__revision__  = "$Revision: 1.3 $"
-__date__      = "$Date: 2004/01/27 03:10:54 $"
+__revision__  = "$Revision: 1.4 $"
+__date__      = "$Date: 2004/01/28 01:43:25 $"
 __copyright__ = "Copyright (c) 2002 Open Source Applications Foundation"
 __license__   = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
 
@@ -57,6 +57,11 @@
 
         return self._db.cursor(txn=self.store.txn, flags=DB_DIRTY_READ)
 
+    def _logDL(self, n):
+
+        self.store.repository.logger.info('detected deadlock: %d', n)
+        
+
 
 class RefContainer(DBContainer):
 
@@ -75,7 +80,7 @@
                 except DBNotFoundError:
                     return None
                 except DBLockDeadlockError:
-                    print 'restarting loadRef aborted by deadlock'
+                    self._logDL(1)
                     continue
 
                 while value is not None and value[0].startswith(cursorKey):
@@ -104,7 +109,12 @@
                             return (key, uuid, previous, next, alias)
 
                     else:
-                        value = cursor.next()
+                        while True:
+                            try:
+                                value = cursor.next()
+                                break
+                            except DBLockDeadlockError:
+                                self._logDL(2)
 
                 return None
 
@@ -272,6 +282,13 @@
                     parentId = None
 
                 fn(UUID(uuid), version, docId, status, parentId)
-                value = cursor.next()
+
+                while True:
+                    try:
+                        value = cursor.next()
+                        break
+                    except DBLockDeadlockError:
+                        self._logDL(3)
+                        
         finally:
             cursor.close()

Index: osaf/chandler/Chandler/__hardhat__.py
diff -u osaf/chandler/Chandler/__hardhat__.py:1.146 osaf/chandler/Chandler/__hardhat__.py:1.147
--- osaf/chandler/Chandler/__hardhat__.py:1.146	Tue Jan 27 13:15:56 2004
+++ osaf/chandler/Chandler/__hardhat__.py	Tue Jan 27 17:43:21 2004
@@ -19,6 +19,7 @@
                 'SOAPpy',
                 'pychecker',
                 '4suite',
+                'Chandler/repository'
                )
 
 def build(buildenv):
@@ -72,20 +73,6 @@
                                   0, 'output.txt')
 
 
-    # Build UUID Extension and install it
-    os.chdir(os.path.join("repository","util","ext"))
-    if buildenv['version'] == 'release':
-        hardhatlib.executeCommand(buildenv, info['name'],
-         [buildenv['python'], 'setup.py', 'build', '--build-base=build_release', 'install'],
-         "Building and installing UUIDext release")
-    if buildenv['version'] == 'debug':
-        hardhatlib.executeCommand(buildenv, info['name'],
-         [buildenv['python_d'], 'setup.py', 'build', '--build-base=build_debug', '--debug', 'install', '--force'],
-         "Building and installing UUIDext debug")
-    os.chdir("../../..")
-
-
-
     os.chdir("distrib")
 
     if buildenv['os'] == 'posix' or buildenv['os'] == 'osx':
@@ -192,25 +179,6 @@
                                     '/out', 'output.txt' ],
                                   'Cleaning launcher ' + version,
                                   0, 'output.txt')
-
-
-    # Clean UUID Extension
-    os.chdir(os.path.join("repository","util","ext"))
-    if buildenv['version'] == 'release':
-        hardhatlib.executeCommand(buildenv, info['name'],
-         [buildenv['python'], 'setup.py', 'clean', 
-         '--build-base=build_release'],
-         "Cleaning UUIDext release")
-        if os.path.exists("build_release"):
-            hardhatlib.rmdir_recursive("build_release")
-    if buildenv['version'] == 'debug':
-        hardhatlib.executeCommand(buildenv, info['name'],
-         [buildenv['python_d'], 'setup.py', 'clean', 
-         '--build-base=build_debug'],
-         "Cleaning UUIDext debug")
-        if os.path.exists("build_debug"):
-            hardhatlib.rmdir_recursive("build_debug")
-    os.chdir("../../..")
 
 
 def run(buildenv):



More information about the Commits mailing list