Skip to content

Commit ea5ed6d

Browse files
authored
Merge pull request #638 from robsdedude/tmp-testkit-feature-flags-5.0
Catch up with TestKit's temporary feature flags Cherry pick + fix of #637
2 parents 98825c9 + acc1c4b commit ea5ed6d

File tree

8 files changed

+50
-482
lines changed

8 files changed

+50
-482
lines changed

neo4j/_async/io/_common.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ async def on_failure(self, metadata):
222222
""" Called when a FAILURE message has been received.
223223
"""
224224
try:
225-
self.connection.reset()
225+
await self.connection.reset()
226226
except (SessionExpired, ServiceUnavailable):
227227
pass
228228
handler = self.handlers.get("on_failure")

neo4j/_async/io/_pool.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -152,12 +152,7 @@ def time_remaining():
152152
# failed to obtain a connection from pool because the
153153
# pool is full and no free connection in the pool
154154
if time_remaining():
155-
await self.cond.wait(time_remaining())
156-
# if timed out, then we throw error. This time
157-
# computation is needed, as with python 2.7, we
158-
# cannot tell if the condition is notified or
159-
# timed out when we come to this line
160-
if not time_remaining():
155+
if not await self.cond.wait(time_remaining()):
161156
raise ClientError("Failed to obtain a connection from pool "
162157
"within {!r}s".format(timeout))
163158
else:

neo4j/_async_compat/concurrency.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,11 @@ async def wait(self, timeout=None):
192192
if not timeout:
193193
return await self._wait()
194194
me = asyncio.current_task()
195-
return await asyncio.wait_for(self._wait(me), timeout)
195+
try:
196+
await asyncio.wait_for(self._wait(me), timeout)
197+
return True
198+
except asyncio.TimeoutError:
199+
return False
196200

197201
def notify(self, n=1):
198202
"""By default, wake up one coroutine waiting on this condition, if any.

neo4j/_sync/io/_pool.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -152,12 +152,7 @@ def time_remaining():
152152
# failed to obtain a connection from pool because the
153153
# pool is full and no free connection in the pool
154154
if time_remaining():
155-
self.cond.wait(time_remaining())
156-
# if timed out, then we throw error. This time
157-
# computation is needed, as with python 2.7, we
158-
# cannot tell if the condition is notified or
159-
# timed out when we come to this line
160-
if not time_remaining():
155+
if not self.cond.wait(time_remaining()):
161156
raise ClientError("Failed to obtain a connection from pool "
162157
"within {!r}s".format(timeout))
163158
else:

testkitbackend/_async/requests.py

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -82,22 +82,27 @@ async def NewDriver(backend, data):
8282
**auth_token.get("parameters", {})
8383
)
8484
auth_token.mark_item_as_read("parameters", recursive=True)
85-
resolver = None
85+
kwargs = {}
8686
if data["resolverRegistered"] or data["domainNameResolverRegistered"]:
87-
resolver = resolution_func(backend, data["resolverRegistered"],
88-
data["domainNameResolverRegistered"])
89-
connection_timeout = data.get("connectionTimeoutMs")
90-
if connection_timeout is not None:
91-
connection_timeout /= 1000
92-
max_transaction_retry_time = data.get("maxTxRetryTimeMs")
93-
if max_transaction_retry_time is not None:
94-
max_transaction_retry_time /= 1000
87+
kwargs["resolver"] = resolution_func(
88+
backend, data["resolverRegistered"],
89+
data["domainNameResolverRegistered"]
90+
)
91+
if data.get("connectionTimeoutMs"):
92+
kwargs["connection_timeout"] = data["connectionTimeoutMs"] / 1000
93+
if data.get("maxTxRetryTimeMs"):
94+
kwargs["max_transaction_retry_time"] = data["maxTxRetryTimeMs"] / 1000
95+
if data.get("connectionAcquisitionTimeoutMs"):
96+
kwargs["connection_acquisition_timeout"] = \
97+
data["connectionAcquisitionTimeoutMs"] / 1000
98+
if data.get("maxConnectionPoolSize"):
99+
kwargs["max_connection_pool_size"] = data["maxConnectionPoolSize"]
100+
if data.get("fetchSize"):
101+
kwargs["fetch_size"] = data["fetchSize"]
102+
95103
data.mark_item_as_read("domainNameResolverRegistered")
96104
driver = neo4j.AsyncGraphDatabase.driver(
97-
data["uri"], auth=auth, user_agent=data["userAgent"],
98-
resolver=resolver, connection_timeout=connection_timeout,
99-
fetch_size=data.get("fetchSize"),
100-
max_transaction_retry_time=max_transaction_retry_time,
105+
data["uri"], auth=auth, user_agent=data["userAgent"], **kwargs
101106
)
102107
key = backend.next_key()
103108
backend.drivers[key] = driver

testkitbackend/_sync/requests.py

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -82,22 +82,27 @@ def NewDriver(backend, data):
8282
**auth_token.get("parameters", {})
8383
)
8484
auth_token.mark_item_as_read("parameters", recursive=True)
85-
resolver = None
85+
kwargs = {}
8686
if data["resolverRegistered"] or data["domainNameResolverRegistered"]:
87-
resolver = resolution_func(backend, data["resolverRegistered"],
88-
data["domainNameResolverRegistered"])
89-
connection_timeout = data.get("connectionTimeoutMs")
90-
if connection_timeout is not None:
91-
connection_timeout /= 1000
92-
max_transaction_retry_time = data.get("maxTxRetryTimeMs")
93-
if max_transaction_retry_time is not None:
94-
max_transaction_retry_time /= 1000
87+
kwargs["resolver"] = resolution_func(
88+
backend, data["resolverRegistered"],
89+
data["domainNameResolverRegistered"]
90+
)
91+
if data.get("connectionTimeoutMs"):
92+
kwargs["connection_timeout"] = data["connectionTimeoutMs"] / 1000
93+
if data.get("maxTxRetryTimeMs"):
94+
kwargs["max_transaction_retry_time"] = data["maxTxRetryTimeMs"] / 1000
95+
if data.get("connectionAcquisitionTimeoutMs"):
96+
kwargs["connection_acquisition_timeout"] = \
97+
data["connectionAcquisitionTimeoutMs"] / 1000
98+
if data.get("maxConnectionPoolSize"):
99+
kwargs["max_connection_pool_size"] = data["maxConnectionPoolSize"]
100+
if data.get("fetchSize"):
101+
kwargs["fetch_size"] = data["fetchSize"]
102+
95103
data.mark_item_as_read("domainNameResolverRegistered")
96104
driver = neo4j.GraphDatabase.driver(
97-
data["uri"], auth=auth, user_agent=data["userAgent"],
98-
resolver=resolver, connection_timeout=connection_timeout,
99-
fetch_size=data.get("fetchSize"),
100-
max_transaction_retry_time=max_transaction_retry_time,
105+
data["uri"], auth=auth, user_agent=data["userAgent"], **kwargs
101106
)
102107
key = backend.next_key()
103108
backend.drivers[key] = driver

0 commit comments

Comments
 (0)