Commit 89c90374 authored by Grégory Wisniewski's avatar Grégory Wisniewski

Remove client transaction lock. Set all transaction related variables as

thread-safe. Add two lock, one for the node manager, another for the partition
table to ensure exclusive access.


git-svn-id: https://svn.erp5.org/repos/neo/branches/prototype3@478 71dcc9de-d417-0410-9af5-da40c76e7ee4
parent 5f4ba33b
......@@ -37,8 +37,6 @@ class Storage(BaseStorage.BaseStorage,
logging.basicConfig(level=logging.DEBUG, format=format)
# Transaction must be under protection of lock
l = Lock()
self._txn_lock_acquire = l.acquire
self._txn_lock_release = l.release
self.app = Application(master_nodes, name, connector)
def load(self, oid, version=None):
......@@ -71,7 +69,6 @@ class Storage(BaseStorage.BaseStorage,
def tpc_begin(self, transaction, tid=None, status=' '):
if self._is_read_only:
raise POSException.ReadOnlyError()
self._txn_lock_acquire()
return self.app.tpc_begin(transaction=transaction, tid=tid, status=status)
def tpc_vote(self, transaction):
......@@ -82,16 +79,10 @@ class Storage(BaseStorage.BaseStorage,
def tpc_abort(self, transaction):
if self._is_read_only:
raise POSException.ReadOnlyError()
try:
return self.app.tpc_abort(transaction=transaction)
finally:
self._txn_lock_release()
return self.app.tpc_abort(transaction=transaction)
def tpc_finish(self, transaction, f=None):
try:
return self.app.tpc_finish(transaction=transaction, f=f)
finally:
self._txn_lock_release()
return self.app.tpc_finish(transaction=transaction, f=f)
def store(self, oid, serial, data, version, transaction):
app = self.app
......
This diff is collapsed.
......@@ -478,9 +478,9 @@ class StorageEventHandler(BaseClientEventHandler):
def handleAnswerStoreObject(self, conn, packet, conflicting, oid, serial):
app = self.app
if conflicting:
app.txn_object_stored = -1, serial
app.local_var.object_stored = -1, serial
else:
app.txn_object_stored = oid, serial
app.local_var.object_stored = oid, serial
def handleAnswerStoreTransaction(self, conn, packet, tid):
app = self.app
......
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