From cedb11925fc7dd652f479370b59c38324e0e3951 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Thu, 27 Apr 2017 17:44:29 -0400 Subject: [PATCH] - keep trying to identify the race here. can reproduce locally now and it seems like mock might not be doing the right thing. Change-Id: I5c108d82631c9217da54a8ace68d7728c3e204d8 --- test/engine/test_pool.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/test/engine/test_pool.py b/test/engine/test_pool.py index ffbb5f2822..9572d3a24d 100644 --- a/test/engine/test_pool.py +++ b/test/engine/test_pool.py @@ -20,7 +20,16 @@ def MockDBAPI(): # noqa return Mock() def connect(*arg, **kw): - return Mock(cursor=Mock(side_effect=cursor)) + def close(): + conn.closed = True + + # mock seems like it might have an issue logging + # call_count correctly under threading, not sure. + # adding a side_effect for close seems to help. + conn = Mock( + cursor=Mock(side_effect=cursor), + close=Mock(side_effect=close), closed=False) + return conn def shutdown(value): if value: @@ -2016,21 +2025,12 @@ class SingletonThreadPoolTest(PoolTestBase): return dbapi.connect() p = pool.SingletonThreadPool(creator=creator, pool_size=3) - # there's an obvious race in STP which is that one thread - # creates a connection, another one calls cleanup and closes - # it before it ever gets returned. This is of course if you're - # using more threads than the pool can connect to. - if strong_refs: sr = set() def _conn(): c = p.connect() - if not c.connection.close.call_count: - sr.add(c.connection) - # otherwise the connection is already closed, which - # is because you're using 10 threads but only a pool - # of size 3 :). + sr.add(c.connection) return c else: def _conn(): -- 2.47.2