Rev 3382: Remove locking from generators in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Sun Apr 27 08:02:12 BST 2008
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 3382
revision-id:pqm at pqm.ubuntu.com-20080427070204-4t5flfqnnmr6bmiw
parent: pqm at pqm.ubuntu.com-20080425215735-sa37dllaxjo2o7do
parent: aaron at aaronbentley.com-20080426164057-s3kl8d43lvf40x9p
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Sun 2008-04-27 08:02:04 +0100
message:
Remove locking from generators
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/fetch.py fetch.py-20050818234941-26fea6105696365d
bzrlib/repofmt/knitrepo.py knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/smart/repository.py repository.py-20061128022038-vr5wy5bubyb8xttk-1
bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
------------------------------------------------------------
revno: 3381.1.4
revision-id:aaron at aaronbentley.com-20080426164057-s3kl8d43lvf40x9p
parent: aaron at aaronbentley.com-20080426163447-zaj22oysskneh5og
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: fetch-locking
timestamp: Sat 2008-04-26 12:40:57 -0400
message:
Add NEWS entry
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
------------------------------------------------------------
revno: 3381.1.3
revision-id:aaron at aaronbentley.com-20080426163447-zaj22oysskneh5og
parent: aaron at aaronbentley.com-20080426060728-dso3gzg3nuilqqto
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: fetch-locking
timestamp: Sat 2008-04-26 12:34:47 -0400
message:
Stop locking in get_data_stream_for_search
modified:
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/smart/repository.py repository.py-20061128022038-vr5wy5bubyb8xttk-1
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
------------------------------------------------------------
revno: 3381.1.2
revision-id:aaron at aaronbentley.com-20080426060728-dso3gzg3nuilqqto
parent: aaron at aaronbentley.com-20080425231410-nk29f2kt9ah2a1vq
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: fetch-locking
timestamp: Sat 2008-04-26 02:07:28 -0400
message:
Cleanup
modified:
bzrlib/fetch.py fetch.py-20050818234941-26fea6105696365d
bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
------------------------------------------------------------
revno: 3381.1.1
revision-id:aaron at aaronbentley.com-20080425231410-nk29f2kt9ah2a1vq
parent: pqm at pqm.ubuntu.com-20080425215735-sa37dllaxjo2o7do
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: fetch-locking
timestamp: Fri 2008-04-25 19:14:10 -0400
message:
Fix lock-taking iterators
modified:
bzrlib/repofmt/knitrepo.py knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
=== modified file 'NEWS'
--- a/NEWS 2008-04-24 21:49:53 +0000
+++ b/NEWS 2008-04-26 16:40:57 +0000
@@ -55,6 +55,11 @@
API BREAKS:
+ * Repository.get_data_stream, Repository.get_data_stream_for_search(),
+ Repository.get_deltas_for_revsions(), Repository.revision_trees(),
+ Repository.item_keys_introduced_by() no longer take read locks.
+ (Aaron Bentley)
+
bzr 1.4rc1 2008-04-11
---------------------
=== modified file 'bzrlib/fetch.py'
--- a/bzrlib/fetch.py 2008-04-09 20:13:46 +0000
+++ b/bzrlib/fetch.py 2008-04-26 06:07:28 +0000
@@ -112,9 +112,11 @@
else:
self.to_repository.commit_write_group()
finally:
- if self.nested_pb is not None:
- self.nested_pb.finished()
- self.to_repository.unlock()
+ try:
+ if self.nested_pb is not None:
+ self.nested_pb.finished()
+ finally:
+ self.to_repository.unlock()
finally:
self.from_repository.unlock()
=== modified file 'bzrlib/repofmt/knitrepo.py'
--- a/bzrlib/repofmt/knitrepo.py 2008-04-04 00:06:58 +0000
+++ b/bzrlib/repofmt/knitrepo.py 2008-04-25 23:14:10 +0000
@@ -161,7 +161,6 @@
raise errors.NoSuchRevision(self, revision_id)
@symbol_versioning.deprecated_method(symbol_versioning.one_two)
- @needs_read_lock
def get_data_stream(self, revision_ids):
"""See Repository.get_data_stream.
@@ -170,7 +169,6 @@
search_result = self.revision_ids_to_search_result(set(revision_ids))
return self.get_data_stream_for_search(search_result)
- @needs_read_lock
def get_data_stream_for_search(self, search):
"""See Repository.get_data_stream_for_search."""
item_keys = self.item_keys_introduced_by(search.get_keys())
=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py 2008-04-16 14:54:19 +0000
+++ b/bzrlib/repository.py 2008-04-26 16:34:47 +0000
@@ -1110,7 +1110,6 @@
rev_tmp.seek(0)
return rev_tmp.getvalue()
- @needs_read_lock
def get_deltas_for_revisions(self, revisions):
"""Produce a generator of revision deltas.
@@ -1447,7 +1446,6 @@
# maybe this generator should explicitly have the contract that it
# should not be iterated until the previously yielded item has been
# processed?
- self.lock_read()
inv_w = self.get_inventory_weave()
# file ids that changed
@@ -1476,7 +1474,6 @@
pass
else:
revisions_with_signatures.add(rev_id)
- self.unlock()
yield ("signatures", None, revisions_with_signatures)
# revisions
@@ -1682,7 +1679,6 @@
inv = self.get_revision_inventory(revision_id)
return RevisionTree(self, inv, revision_id)
- @needs_read_lock
def revision_trees(self, revision_ids):
"""Return Tree for a revision on this branch.
=== modified file 'bzrlib/smart/repository.py'
--- a/bzrlib/smart/repository.py 2008-03-28 07:37:07 +0000
+++ b/bzrlib/smart/repository.py 2008-04-26 16:34:47 +0000
@@ -412,14 +412,8 @@
pack = ContainerSerialiser()
buffer.write(pack.begin())
try:
- try:
- for name_tuple, bytes in stream:
- buffer.write(pack.bytes_record(bytes, [name_tuple]))
- except:
- # Undo the lock_read that happens once the iterator from
- # get_data_stream is started.
- repository.unlock()
- raise
+ for name_tuple, bytes in stream:
+ buffer.write(pack.bytes_record(bytes, [name_tuple]))
except errors.RevisionNotPresent, e:
return FailedSmartServerResponse(('NoSuchRevision', e.revision_id))
buffer.write(pack.end())
=== modified file 'bzrlib/tests/interrepository_implementations/test_interrepository.py'
--- a/bzrlib/tests/interrepository_implementations/test_interrepository.py 2008-03-24 14:40:52 +0000
+++ b/bzrlib/tests/interrepository_implementations/test_interrepository.py 2008-04-26 06:07:28 +0000
@@ -236,6 +236,7 @@
# for during pull operations
inv = source.get_inventory('a')
source.lock_write()
+ self.addCleanup(source.unlock)
source.start_write_group()
inv['id'].revision = 'b'
inv.revision_id = 'b'
@@ -249,7 +250,6 @@
rev.parent_ids = ['a']
source.add_revision('b', rev)
source.commit_write_group()
- source.unlock()
self.assertRaises(errors.RevisionNotPresent, target.fetch, source)
self.assertFalse(target.has_revision('b'))
=== modified file 'bzrlib/tests/repository_implementations/test_repository.py'
--- a/bzrlib/tests/repository_implementations/test_repository.py 2008-04-10 04:22:38 +0000
+++ b/bzrlib/tests/repository_implementations/test_repository.py 2008-04-26 16:34:47 +0000
@@ -404,6 +404,8 @@
tree.add('foo', 'file1')
tree.commit('message', rev_id='rev_id')
repo = tree.branch.repository
+ repo.lock_read()
+ self.addCleanup(repo.unlock)
try:
stream = self.applyDeprecated(one_two, repo.get_data_stream,
['rev_id'])
@@ -424,6 +426,8 @@
# Get a data stream (a file-like object) for that revision
search = graph.SearchResult(set(['rev_id']), set([NULL_REVISION]), 1,
set(['rev_id']))
+ repo.lock_read()
+ self.addCleanup(repo.unlock)
try:
stream = repo.get_data_stream_for_search(search)
except NotImplementedError:
@@ -468,6 +472,8 @@
dest_repo = self.make_repository('dest')
search = dest_repo.search_missing_revision_ids(source_repo,
revision_id='rev_id')
+ source_repo.lock_read()
+ self.addCleanup(source_repo.unlock)
try:
stream = source_repo.get_data_stream_for_search(search)
except NotImplementedError, e:
@@ -550,6 +556,8 @@
tree.add('foo', 'file1')
tree.commit('message', rev_id='rev_id')
repo = tree.branch.repository
+ repo.lock_read()
+ self.addCleanup(repo.unlock)
# Item keys will be in this order, for maximum convenience for
# generating data to insert into knit repository:
=== modified file 'bzrlib/tests/test_repository.py'
--- a/bzrlib/tests/test_repository.py 2008-02-19 03:58:32 +0000
+++ b/bzrlib/tests/test_repository.py 2008-04-26 16:34:47 +0000
@@ -781,6 +781,8 @@
empty_repo = self.make_repository('empty-repo')
search = graph.SearchResult(set(['rev1a', 'rev2', 'rev3']),
set(), 3, ['rev1a', 'rev2', 'rev3'])
+ broken_repo.lock_read()
+ self.addCleanup(broken_repo.unlock)
stream = broken_repo.get_data_stream_for_search(search)
empty_repo.lock_write()
self.addCleanup(empty_repo.unlock)
More information about the bazaar-commits
mailing list