Skip to content

Commit 5416618

Browse files
author
Richard Jones
committed
fixed sqlite rollback/caching bug [SF#689383]
1 parent bd122e7 commit 5416618

File tree

4 files changed

+19
-23
lines changed

4 files changed

+19
-23
lines changed

CHANGES.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ Fixed:
5959

6060
2003-??-?? 0.5.7
6161
- fixed Interval maths (sf bug 665357)
62+
- fixed sqlite rollback/caching bug (sf bug 689383)
6263

6364

6465
2003-02-27 0.5.6

roundup/backends/back_sqlite.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $Id: back_sqlite.py,v 1.8 2002-12-12 09:31:04 richard Exp $
1+
# $Id: back_sqlite.py,v 1.9 2003-03-06 06:03:51 richard Exp $
22
__doc__ = '''
33
See https://pysqlite.sourceforge.net/ for pysqlite info
44
'''
@@ -78,6 +78,9 @@ def rollback(self):
7878
self.rollbackStoreFile(*args)
7979
self.transactions = []
8080

81+
# clear the cache
82+
self.clearCache()
83+
8184
def __repr__(self):
8285
return '<roundlite 0x%x>'%id(self)
8386

roundup/backends/rdbms_common.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $Id: rdbms_common.py,v 1.38 2003-02-28 03:33:46 richard Exp $
1+
# $Id: rdbms_common.py,v 1.39 2003-03-06 06:03:51 richard Exp $
22
''' Relational database (SQL) backend common code.
33
44
Basics:
@@ -837,6 +837,9 @@ def rollback(self):
837837
self.rollbackStoreFile(*args)
838838
self.transactions = []
839839

840+
# clear the cache
841+
self.clearCache()
842+
840843
def doSaveNode(self, classname, nodeid, node):
841844
''' dummy that just generates a reindex event
842845
'''

test/test_db.py

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
1616
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
1717
#
18-
# $Id: test_db.py,v 1.73 2003-03-03 21:05:19 richard Exp $
18+
# $Id: test_db.py,v 1.74 2003-03-06 06:03:51 richard Exp $
1919

2020
import unittest, os, shutil, time
2121

@@ -326,6 +326,15 @@ def testTransactions(self):
326326
self.assertNotEqual(num_files, self.db.numfiles())
327327
self.assertEqual(num_files2, self.db.numfiles())
328328

329+
# rollback / cache interaction
330+
name1 = self.db.user.get('1', 'username')
331+
self.db.user.set('1', username = name1+name1)
332+
# get the prop so the info's forced into the cache (if there is one)
333+
self.db.user.get('1', 'username')
334+
self.db.rollback()
335+
name2 = self.db.user.get('1', 'username')
336+
self.assertEqual(name1, name2)
337+
329338
def testDestroyNoJournalling(self):
330339
self.innerTestDestroy(klass=self.db.session)
331340

@@ -653,26 +662,6 @@ def testFilteringMany(self):
653662
ae(filt(None, {'nosy': '2', 'status': '1'}, ('+','id'), (None,None)),
654663
['3'])
655664

656-
def testNode1(self):
657-
node1 = self.db.user.getnode('1')
658-
name = node1.username
659-
self.db.user.set('1', username = name+name)
660-
name1 = node1.username
661-
self.db.rollback()
662-
node2 = self.db.user.getnode('1')
663-
self.assertEqual(name, node1.username)
664-
self.assertEqual(name, node2.username)
665-
666-
def testNode2(self):
667-
node1 = Node(self.db.user, '1')
668-
name = node1.username
669-
self.db.user.set('1', username = name+name)
670-
name1 = node1.username
671-
self.db.rollback()
672-
node2 = Node(self.db.user, '1')
673-
self.assertEqual(name, node1.username)
674-
self.assertEqual(name, node2.username)
675-
676665

677666
# TODO test auditors and reactors
678667

0 commit comments

Comments
 (0)