diff --git a/noblogsmv/state.py b/noblogsmv/state.py
index 2e0288027d9778fdf24da877a9290741ff54ce51..dff4cce1d296d40590c2838ccbc01d4de65e4a6c 100644
--- a/noblogsmv/state.py
+++ b/noblogsmv/state.py
@@ -158,7 +158,7 @@ def transaction(db):
 
 @contextlib.contextmanager
 def readonly_transaction(db):
-    for i in xrange(3):
+    for i in xrange(10):
         try:
             with transaction(db) as session:
                 yield session
diff --git a/noblogsmv/test/test_state.py b/noblogsmv/test/test_state.py
index 37ef33b318c3e404065aaffd693334760b3ebe0f..2f1a208d540f6eac7be9a4d6694668a6c9e22fff 100644
--- a/noblogsmv/test/test_state.py
+++ b/noblogsmv/test/test_state.py
@@ -96,9 +96,9 @@ class DatabaseTest(TestBase):
             self.assertTrue(self.db.are_we_done(session))
 
     def test_loadtest(self):
-        nkeys = 100
+        nkeys = 20
         nloops = 100
-        out = {'errors': 0}
+        out = {'errors': 0, 'fatals': 0}
 
         with state.transaction(self.db) as session:
             for i in xrange(nkeys):
@@ -111,13 +111,17 @@ class DatabaseTest(TestBase):
                 try:
                     with state.work_transaction(self.db, key) as work:
                         work.state = state.STATE_DONE
-                except Exception, e:
+                except sqlalchemy.exc.OperationalError, e:
                     out['errors'] += 1
+                except Exception, e:
                     print e
+                    out['fatals'] += 1
+                    return
 
         threads = [threading.Thread(target=loadfn, args=(i,)) for i in xrange(nkeys)]
         [x.start() for x in threads]
         [x.join() for x in threads]
+        self.assertEquals(0, out['fatals'])
         self.assertLess(out['errors'], 10)