Skip to content

Commit

Permalink
Merge pull request #56 from zopefoundation/no-more-load
Browse files Browse the repository at this point in the history
Simplify MVCC by determining transaction start time using lastTransac…
  • Loading branch information
jimfulton committed Jun 16, 2016
2 parents 4905bb8 + 7ed1a8f commit 7d81f21
Show file tree
Hide file tree
Showing 34 changed files with 751 additions and 652 deletions.
5 changes: 2 additions & 3 deletions setup.py
Expand Up @@ -20,13 +20,12 @@
interface, rich transaction support, and undo.
"""

version = "4.3.1"
version = "5.0.dev0"

import os
from setuptools import setup, find_packages

classifiers = """\
Development Status :: 4 - Beta
Intended Audience :: Developers
License :: OSI Approved :: Zope Public License
Programming Language :: Python
Expand Down Expand Up @@ -142,7 +141,7 @@ def read_file(*path):
'persistent >= 4.2.0',
'BTrees >= 4.2.0',
'ZConfig',
'transaction >= 1.5.0',
'transaction >= 1.6.1',
'six',
'zc.lockfile',
'zope.interface',
Expand Down
12 changes: 6 additions & 6 deletions src/ZODB/ActivityMonitor.py
Expand Up @@ -12,12 +12,12 @@
#
##############################################################################
"""ZODB transfer activity monitoring
"""

$Id$"""

import threading
import time

from . import utils


class ActivityMonitor:
"""ZODB load/store activity monitor
Expand All @@ -31,7 +31,7 @@ class ActivityMonitor:
def __init__(self, history_length=3600):
self.history_length = history_length # Number of seconds
self.log = [] # [(time, loads, stores)]
self.trim_lock = threading.Lock()
self.trim_lock = utils.Lock()

def closedConnection(self, conn):
log = self.log
Expand All @@ -42,7 +42,7 @@ def closedConnection(self, conn):

def trim(self, now):
self.trim_lock.acquire()

log = self.log
cutoff = now - self.history_length
n = 0
Expand All @@ -51,7 +51,7 @@ def trim(self, now):
n = n + 1
if n:
del log[:n]

self.trim_lock.release()

def setHistoryLength(self, history_length):
Expand Down
52 changes: 6 additions & 46 deletions src/ZODB/BaseStorage.py
Expand Up @@ -18,7 +18,6 @@
"""
from __future__ import print_function

import threading
import time
import logging
import sys
Expand All @@ -28,10 +27,10 @@
from persistent.TimeStamp import TimeStamp

import ZODB.interfaces
from ZODB import POSException
from ZODB.utils import z64, oid_repr, byte_ord, byte_chr
from ZODB.UndoLogCompatible import UndoLogCompatible
from ZODB._compat import dumps, _protocol, py2_hasattr
from . import POSException, utils
from .utils import z64, oid_repr, byte_ord, byte_chr
from .UndoLogCompatible import UndoLogCompatible
from ._compat import dumps, _protocol, py2_hasattr

log = logging.getLogger("ZODB.BaseStorage")

Expand Down Expand Up @@ -85,8 +84,8 @@ def __init__(self, name, base=None):
log.debug("create storage %s", self.__name__)

# Allocate locks:
self._lock = threading.RLock()
self.__commit_lock = threading.Lock()
self._lock = utils.RLock()
self.__commit_lock = utils.Lock()

# Comment out the following 4 lines to debug locking:
self._lock_acquire = self._lock.acquire
Expand All @@ -108,45 +107,6 @@ def __init__(self, name, base=None):
else:
self._oid = oid

########################################################################
# The following methods are normally overridden on instances,
# except when debugging:

def _lock_acquire(self, *args):
f = sys._getframe(1)
sys.stdout.write("[la(%s:%s)\n" % (f.f_code.co_filename, f.f_lineno))
sys.stdout.flush()
self._lock.acquire(*args)
sys.stdout.write("la(%s:%s)]\n" % (f.f_code.co_filename, f.f_lineno))
sys.stdout.flush()

def _lock_release(self, *args):
f = sys._getframe(1)
sys.stdout.write("[lr(%s:%s)\n" % (f.f_code.co_filename, f.f_lineno))
sys.stdout.flush()
self._lock.release(*args)
sys.stdout.write("lr(%s:%s)]\n" % (f.f_code.co_filename, f.f_lineno))
sys.stdout.flush()

def _commit_lock_acquire(self, *args):
f = sys._getframe(1)
sys.stdout.write("[ca(%s:%s)\n" % (f.f_code.co_filename, f.f_lineno))
sys.stdout.flush()
self.__commit_lock.acquire(*args)
sys.stdout.write("ca(%s:%s)]\n" % (f.f_code.co_filename, f.f_lineno))
sys.stdout.flush()

def _commit_lock_release(self, *args):
f = sys._getframe(1)
sys.stdout.write("[cr(%s:%s)\n" % (f.f_code.co_filename, f.f_lineno))
sys.stdout.flush()
self.__commit_lock.release(*args)
sys.stdout.write("cr(%s:%s)]\n" % (f.f_code.co_filename, f.f_lineno))
sys.stdout.flush()

#
########################################################################

def sortKey(self):
"""Return a string that can be used to sort storage instances.
Expand Down

0 comments on commit 7d81f21

Please sign in to comment.