Commit 42532c51 authored by Jim Fulton's avatar Jim Fulton Committed by GitHub

Merge pull request #140 from zopefoundation/issue-139

Connection.new_oid delegates to its storage, not the DB.
parents 93baff53 177cfabe
......@@ -8,5 +8,6 @@ omit =
[report]
exclude_lines =
pragma: nocover
pragma: no cover
if __name__ == ['"]__main__['"]:
assert False
......@@ -2,6 +2,13 @@
Change History
================
5.1.2 (unreleased)
==================
- ``Connection.new_oid`` delegates to its storage, not the DB. This is
helpful for improving concurrency in MVCC storages like RelStorage.
See `issue 139 <https://github.com/zopefoundation/ZODB/issues/139`_.
5.1.1 (2016-11-18)
==================
......
......@@ -126,7 +126,6 @@ class Connection(ExportImport, object):
storage = storage.new_instance()
self._normal_storage = self._storage = storage
self.new_oid = db.new_oid
self._savepoint_storage = None
# Do we need to join a txn manager?
......@@ -200,6 +199,9 @@ class Connection(ExportImport, object):
self._reader = ObjectReader(self, self._cache, self._db.classFactory)
def new_oid(self):
return self._storage.new_oid()
def add(self, obj):
"""Add a new object 'obj' to the database and assign it an oid."""
if self.opened is None:
......
......@@ -987,7 +987,13 @@ class DB(object):
return ContextManager(self, note)
def new_oid(self):
return self.storage.new_oid()
"""
Return a new oid from the storage.
Kept for backwards compatibility only. New oids should be
allocated in a transaction using an open Connection.
"""
return self.storage.new_oid() # pragma: no cover
def open_then_close_db_when_connection_closes(self):
"""Create and return a connection.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment