From 8eab2b67fdf83c657f996debfc238703a78b337b Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 5 May 2017 10:42:28 +0200 Subject: Don't leak transactions when copying them. Previsouly we would hit the maxreaders limit --- tests/storagetest.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'tests') diff --git a/tests/storagetest.cpp b/tests/storagetest.cpp index 7202628..dfb91ec 100644 --- a/tests/storagetest.cpp +++ b/tests/storagetest.cpp @@ -487,6 +487,24 @@ private slots: } } + void testCopyTransaction() + { + Sink::Storage::DataStore store(testDataPath, dbName, Sink::Storage::DataStore::ReadWrite); + { + auto transaction = store.createTransaction(Sink::Storage::DataStore::ReadWrite); + transaction.openDatabase("a", nullptr, false); + transaction.openDatabase("b", nullptr, false); + transaction.openDatabase("c", nullptr, false); + transaction.commit(); + } + auto transaction = store.createTransaction(Sink::Storage::DataStore::ReadOnly); + for (int i = 0; i < 1000; i++) { + transaction.openDatabase("a", nullptr, false); + transaction.openDatabase("b", nullptr, false); + transaction.openDatabase("c", nullptr, false); + transaction = store.createTransaction(Sink::Storage::DataStore::ReadOnly); + } + } }; QTEST_MAIN(StorageTest) -- cgit v1.2.3