Rev 2960: (robertc) Fix data-refresh logic for packs not to refresh mid-transaction when a names write lock is held. (Robert Collins) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Sat Nov 3 23:02:19 GMT 2007


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 2960
revision-id: pqm at pqm.ubuntu.com-20071103230216-mnmwuxm413lyhjdv
parent: pqm at pqm.ubuntu.com-20071103093911-4alf7wiad3n3vfz6
parent: robertc at robertcollins.net-20071031165438-lc0o11v5vaf3p1ta
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Sat 2007-11-03 23:02:16 +0000
message:
  (robertc) Fix data-refresh logic for packs not to refresh mid-transaction when a names write lock is held. (Robert Collins)
modified:
  bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
    ------------------------------------------------------------
    revno: 2951.1.1
    merged: robertc at robertcollins.net-20071031165438-lc0o11v5vaf3p1ta
    parent: pqm at pqm.ubuntu.com-20071030214613-c0ojrpmnm21da068
    committer: Robert Collins <robertc at robertcollins.net>
    branch nick: pack
    timestamp: Thu 2007-11-01 03:54:38 +1100
    message:
      (robertc) Fix data-refresh logic for packs not to refresh mid-transaction when a names write lock is held. (Robert Collins)
=== modified file 'bzrlib/repofmt/pack_repo.py'
--- a/bzrlib/repofmt/pack_repo.py	2007-10-30 17:39:11 +0000
+++ b/bzrlib/repofmt/pack_repo.py	2007-10-31 16:54:38 +0000
@@ -1295,6 +1295,7 @@
                 self._save_pack_names()
         else:
             self._new_pack.abort()
+            self._new_pack = None
         self.repo._text_knit = None
 
 
@@ -1514,7 +1515,9 @@
         return self
 
     def _refresh_data(self):
-        if self._write_lock_count == 1 or self.control_files._lock_count == 1:
+        if self._write_lock_count == 1 or (
+            self.control_files._lock_count == 1 and
+            self.control_files._lock_mode == 'r'):
             # forget what names there are
             self._pack_collection.reset()
             # XXX: Better to do an in-memory merge when acquiring a new lock -




More information about the bazaar-commits mailing list