Title: [commits] (vajda) [11199] - made sure commit calls inside refresh are deferred until refresh completes
Revision
11199
Author
vajda
Date
2006-07-19 05:54:33 -0700 (Wed, 19 Jul 2006)

Log Message

- made sure commit calls inside refresh are deferred until refresh completes
- upgraded build to chandlerdb 0.6-33

Modified Paths

Diff

Modified: trunk/chandler/Makefile (11198 => 11199)

--- trunk/chandler/Makefile	2006-07-19 12:42:31 UTC (rev 11198)
+++ trunk/chandler/Makefile	2006-07-19 12:54:33 UTC (rev 11199)
@@ -66,7 +66,7 @@
 
 # these get installed into release or debug
 ARCHIVES=$(CHANDLERARCHIVES)/Launchers-$(SNAP)-0.8-$(BP)8.tar.gz \
-         $(CHANDLERARCHIVES)/chandlerdb-$(SNAP)-0.6-$(BP)32.tar.gz \
+         $(CHANDLERARCHIVES)/chandlerdb-$(SNAP)-0.6-$(BP)33.tar.gz \
          $(CHANDLERARCHIVES)/db-$(SNAP)-4.4.20-$(BP)5.tar.gz \
          $(CHANDLERARCHIVES)/python-$(SNAP)-2.4.3-$(BP)3.tar.gz \
          $(CHANDLERARCHIVES)/epydoc-$(SNAP)-2.1-$(BP)9.tar.gz \

Modified: trunk/chandler/repository/persistence/DBRepositoryView.py (11198 => 11199)

--- trunk/chandler/repository/persistence/DBRepositoryView.py	2006-07-19 12:42:31 UTC (rev 11198)
+++ trunk/chandler/repository/persistence/DBRepositoryView.py	2006-07-19 12:54:33 UTC (rev 11199)
@@ -327,10 +327,11 @@
         if not self._status & RepositoryView.REFRESHING:
             try:
                 self._status |= RepositoryView.REFRESHING
+                forwards = False
                 while True:
                     try:
                         txnStatus = self._startTransaction(False)
-                        self._refresh(mergeFn, version, notify)
+                        forwards = self._refresh(mergeFn, version, notify)
                     except DBLockDeadlockError:
                         self.logger.info('%s retrying refresh aborted by deadlock (thread: %s)', self, currentThread().getName())
                         self._abortTransaction(txnStatus)
@@ -346,6 +347,10 @@
                         return self.itsVersion
             finally:
                 self._status &= ~RepositoryView.REFRESHING
+                if self._status & RepositoryView.COMMITREQ:
+                    self._status &= ~RepositoryView.COMMITREQ
+                    if forwards:
+                        self.commit(mergeFn, notify)
 
         else:
             self.logger.warning('%s skipping recursive refresh', self)
@@ -366,12 +371,14 @@
                 self._refreshForwards(mergeFn, newVersion, False)
 
             self.prune(10000)
+            return True
 
         elif newVersion == self.itsVersion:
             if notify:
                 self.dispatchNotifications()
             else:
                 self.flushNotifications()
+            return True
 
         else:
             self.cancel()
@@ -380,6 +387,7 @@
             self._version = newVersion
             self._refreshItems(unloads.__iter__)
             self.flushNotifications()
+            return False
 
     def _refreshItems(self, items):
 
@@ -530,6 +538,8 @@
 
         if self._status & RepositoryView.COMMITTING:
             self.logger.warning('%s: skipping recursive commit', self)
+        elif self._status & RepositoryView.REFRESHING:
+            self._status |= RepositoryView.COMMITREQ
         elif len(self._log) + len(self._deletedRegistry) > 0:
             try:
                 release = False




_______________________________________________
Commits mailing list
[email protected]
http://lists.osafoundation.org/mailman/listinfo/commits

Reply via email to