Rev 2: Also implement rename() handling, so that we make sure to close open handles when they are being modified. in http://bzr.arbash-meinel.com/plugins/mmap_readv
John Arbash Meinel
john at arbash-meinel.com
Fri Feb 6 15:29:14 GMT 2009
At http://bzr.arbash-meinel.com/plugins/mmap_readv
------------------------------------------------------------
revno: 2
revision-id: john at arbash-meinel.com-20090206152908-zt2dvpddq525k7l1
parent: john at arbash-meinel.com-20090206152240-wz21d1l122su5dj9
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: mmap_readv
timestamp: Fri 2009-02-06 09:29:08 -0600
message:
Also implement rename() handling, so that we make sure to close open handles when they are being modified.
-------------- next part --------------
=== modified file '__init__.py'
--- a/__init__.py 2009-02-06 15:22:40 +0000
+++ b/__init__.py 2009-02-06 15:29:08 +0000
@@ -90,8 +90,28 @@
actual=len(bytes))
yield start, bytes
-
-# transport.register_transport('file://', MMapLocalTransport)
+ def rename(self, rel_from, rel_to):
+ """See LocalTransport.rename"""
+ # This only differs because we need to make sure we don't hold any file
+ # handles open
+ canonical_url = self.abspath(rel_from)
+ if canonical_url in _mmap_cache:
+ mapped = _mmap_cache.pop(canonical_url)
+ mapped.close()
+ return super(MMapLocalTransport, self).rename(rel_from, rel_to)
+
+ def move(self, rel_from, rel_to):
+ """See LocalTransport.move"""
+ # This only differs because we need to make sure we don't hold any file
+ # handles open
+ canonical_url = self.abspath(rel_from)
+ if canonical_url in _mmap_cache:
+ mapped = _mmap_cache.pop(canonical_url)
+ mapped.close()
+ return super(MMapLocalTransport, self).move(rel_from, rel_to)
+
+
+transport.register_transport('file://', MMapLocalTransport)
class MMapLocalURLServer(local.LocalURLServer):
More information about the bazaar-commits
mailing list