From fae66fceb3147385320593d1e15faf290b0f4caf Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Fri, 31 Mar 2023 10:33:07 +0200 Subject: [PATCH] test: Remove python3.5 workaround in authproxy Also, move the burden of checking for a timeout to the client and disable the timeout on the server. This should avoid intermittent issues in slow tests (for example mining_getblocktemplate_longpoll.py, or feature_dbcrash.py), or possibly when the server is running slow (for example in valgrind). There shouldn't be any downside in tests caused by a high rpcservertimeout. --- test/functional/feature_dbcrash.py | 8 ++++--- test/functional/test_framework/authproxy.py | 23 +++------------------ test/functional/test_framework/util.py | 2 ++ 3 files changed, 10 insertions(+), 23 deletions(-) diff --git a/test/functional/feature_dbcrash.py b/test/functional/feature_dbcrash.py index 1f2e0936ed1..3f94bbc9d15 100755 --- a/test/functional/feature_dbcrash.py +++ b/test/functional/feature_dbcrash.py @@ -51,9 +51,11 @@ class ChainstateWriteCrashTest(BitcoinTestFramework): self.supports_cli = False # Set -maxmempool=0 to turn off mempool memory sharing with dbcache - # Set -rpcservertimeout=900 to reduce socket disconnects in this - # long-running test - self.base_args = ["-limitdescendantsize=0", "-maxmempool=0", "-rpcservertimeout=900", "-dbbatchsize=200000"] + self.base_args = [ + "-limitdescendantsize=0", + "-maxmempool=0", + "-dbbatchsize=200000", + ] # Set different crash ratios and cache sizes. Note that not all of # -dbcache goes to the in-memory coins cache. diff --git a/test/functional/test_framework/authproxy.py b/test/functional/test_framework/authproxy.py index 61f92aeac3e..b798ec3ebd7 100644 --- a/test/functional/test_framework/authproxy.py +++ b/test/functional/test_framework/authproxy.py @@ -94,8 +94,7 @@ class AuthServiceProxy(): def _request(self, method, path, postdata): ''' - Do a HTTP request, with retry if we get disconnected (e.g. due to a timeout). - This is a workaround for https://bugs.python.org/issue3566 which is fixed in Python 3.5. + Do a HTTP request. ''' headers = {'Host': self.__url.hostname, 'User-Agent': USER_AGENT, @@ -106,24 +105,8 @@ class AuthServiceProxy(): # TODO: Find out why the connection would disconnect occasionally and make it reusable on Windows # Avoid "ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine" self._set_conn() - try: - self.__conn.request(method, path, postdata, headers) - return self._get_response() - except (BrokenPipeError, ConnectionResetError): - # Python 3.5+ raises BrokenPipeError when the connection was reset - # ConnectionResetError happens on FreeBSD - self.__conn.close() - self.__conn.request(method, path, postdata, headers) - return self._get_response() - except OSError as e: - # Workaround for a bug on macOS. See https://bugs.python.org/issue33450 - retry = '[Errno 41] Protocol wrong type for socket' in str(e) - if retry: - self.__conn.close() - self.__conn.request(method, path, postdata, headers) - return self._get_response() - else: - raise + self.__conn.request(method, path, postdata, headers) + return self._get_response() def get_request(self, *args, **argsn): AuthServiceProxy.__id_count += 1 diff --git a/test/functional/test_framework/util.py b/test/functional/test_framework/util.py index 9048a915b23..a1b90860f67 100644 --- a/test/functional/test_framework/util.py +++ b/test/functional/test_framework/util.py @@ -390,6 +390,8 @@ def write_config(config_path, *, n, chain, extra_config="", disable_autoconnect= f.write("[{}]\n".format(chain_name_conf_section)) f.write("port=" + str(p2p_port(n)) + "\n") f.write("rpcport=" + str(rpc_port(n)) + "\n") + # Disable server-side timeouts to avoid intermittent issues + f.write("rpcservertimeout=99000\n") f.write("rpcdoccheck=1\n") f.write("fallbackfee=0.0002\n") f.write("server=1\n")