[ZODB-Dev] RelStorage breaks history tab

Chris Withers chris at simplistix.co.uk
Wed May 23 15:27:48 UTC 2012


Hi Shane,

On 22/05/2012 06:37, Chris Withers wrote:
> So, the problem is that, with a Zope 2 app server, any revisions made to
> an object (say, a Page Template) don't show in the history tab of that
> object *until* the app server is restarted.

Okay, the issue appears to be that, in some circumstances, RelStorage is 
leaving the read connection with an open transaction that isn't rolled back.

I couldn't find the source of this, but in the meantime, I less 
heavyweight hack is:

diff --git a/relstorage/storage.py b/relstorage/storage.py
index 2d592d3..459469b 100644
--- a/relstorage/storage.py
+++ b/relstorage/storage.py
@@ -1025,6 +1025,7 @@ class RelStorage(
          self._lock_acquire()
          try:
              self._before_load()
+            self._load_conn.rollback()
              cursor = self._load_cursor
              oid_int = u64(oid)
              try:

However, that open transaction is likely to cause other problems (I'm 
fairly certain I've seen other effects of this) so do you have any idea 
where to look for it?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
             - http://www.simplistix.co.uk


More information about the ZODB-Dev mailing list