Page MenuHomePhabricator

[avalanche] Request the compact proofs from all peers
ClosedPublic

Authored by Fabien on Dec 11 2023, 11:59.

Details

Reviewers
PiRK
Group Reviewers
Restricted Project
Commits
rABC0e718398d29a: [avalanche] Request the compact proofs from all peers
Summary

Request compact proofs from both our inbound and outbounds, and use the remote proofs status from all the stakers (inbounds and outbounds). This makes the status closer to the expected vote, and doesn't lower the security because the proofs were already requested from the inbounds during the bootstrapping phase. Address requests are left untouched.

Test Plan
ninja all check-all

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

Fabien requested review of this revision.Dec 11 2023, 11:59

Failed tests logs:

====== Bitcoin ABC functional tests: abc_feature_proof_cleanup.py ======

------- Stdout: -------
2023-12-11T12:09:01.008000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_  _20231211_120245/abc_feature_proof_cleanup_96
2023-12-11T12:09:03.030000Z TestFramework (INFO): No proof is cleaned before the timeout expires
2023-12-11T12:09:03.031000Z TestFramework (INFO): Check the proofs with attached nodes are not cleaned
2023-12-11T12:09:03.087000Z TestFramework (INFO): Check the proofs are cleaned on next cleanup after the nodes disconnected
2023-12-11T12:09:03.391000Z TestFramework (INFO): Check the cleaned up proofs are no longer accepted...
2023-12-11T12:09:04.014000Z TestFramework (INFO): ...until there is a node to attach
2023-12-11T12:09:04.227000Z TestFramework (ERROR): Unexpected exception caught during testing
Traceback (most recent call last):
  File "/work/test/functional/test_framework/authproxy.py", line 126, in _request
    return self._get_response()
  File "/work/test/functional/test_framework/authproxy.py", line 216, in _get_response
    http_response = self.__conn.getresponse()
  File "/usr/lib/python3.9/http/client.py", line 1347, in getresponse
    response.begin()
  File "/usr/lib/python3.9/http/client.py", line 307, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python3.9/http/client.py", line 276, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 147, in main
    self._run_test_internal()
  File "/work/test/functional/test_framework/test_framework.py", line 137, in _run_test_internal
    self.run_test()
  File "/work/test/functional/abc_feature_proof_cleanup.py", line 148, in run_test
    self.wait_until(lambda: avanode.proof.proofid in get_proof_ids(node))
  File "/work/test/functional/test_framework/test_framework.py", line 820, in wait_until
    return wait_until_helper(
  File "/work/test/functional/test_framework/util.py", line 285, in wait_until_helper
    if predicate():
  File "/work/test/functional/abc_feature_proof_cleanup.py", line 148, in <lambda>
    self.wait_until(lambda: avanode.proof.proofid in get_proof_ids(node))
  File "/work/test/functional/test_framework/avatools.py", line 162, in get_proof_ids
    return [int(peer["proofid"], 16) for peer in node.getavalanchepeerinfo()]
  File "/work/test/functional/test_framework/coverage.py", line 47, in __call__
    return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
  File "/work/test/functional/test_framework/authproxy.py", line 175, in __call__
    response, status = self._request(
  File "/work/test/functional/test_framework/authproxy.py", line 131, in _request
    self.__conn.request(method, path, postdata, headers)
  File "/usr/lib/python3.9/http/client.py", line 1255, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1301, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1250, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1010, in _send_output
    self.send(msg)
  File "/usr/lib/python3.9/http/client.py", line 950, in send
    self.connect()
  File "/usr/lib/python3.9/http/client.py", line 921, in connect
    self.sock = self._create_connection(
  File "/usr/lib/python3.9/socket.py", line 843, in create_connection
    raise err
  File "/usr/lib/python3.9/socket.py", line 831, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
2023-12-11T12:09:04.279000Z TestFramework (INFO): Stopping nodes
2023-12-11T12:09:04.279000Z TestFramework.node0 (ERROR): Unable to stop node.
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_node.py", line 502, in stop_node
    self.stop(wait=wait)
  File "/work/test/functional/test_framework/coverage.py", line 47, in __call__
    return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
  File "/work/test/functional/test_framework/authproxy.py", line 175, in __call__
    response, status = self._request(
  File "/work/test/functional/test_framework/authproxy.py", line 125, in _request
    self.__conn.request(method, path, postdata, headers)
  File "/usr/lib/python3.9/http/client.py", line 1255, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1266, in _send_request
    self.putrequest(method, url, **skips)
  File "/usr/lib/python3.9/http/client.py", line 1092, in putrequest
    raise CannotSendRequest(self.__state)
http.client.CannotSendRequest: Request-sent
[node 0] Cleaning up leftover process
------- Stderr: -------
Traceback (most recent call last):
  File "/work/test/functional/abc_feature_proof_cleanup.py", line 152, in <module>
    ProofsCleanupTest().main()
  File "/work/test/functional/test_framework/test_framework.py", line 170, in main
    exit_code = self.shutdown()
  File "/work/test/functional/test_framework/test_framework.py", line 396, in shutdown
    self.stop_nodes()
  File "/work/test/functional/test_framework/test_framework.py", line 641, in stop_nodes
    node.stop_node(wait=wait, wait_until_stopped=False)
  File "/work/test/functional/test_framework/test_node.py", line 514, in stop_node
    raise AssertionError(f"Unexpected stderr {stderr} != {expected_stderr}")
AssertionError: Unexpected stderr Assertion failed: detected inconsistent lock order for 'node.cs_avalanche_pubkey' in ../../src/net_processing.cpp:7733 (in thread 'msghand'), details in debug log. !=
====== Bitcoin ABC functional tests: abc_p2p_avalanche_proof_voting.py ======

------- Stdout: -------
2023-12-11T12:03:32.006000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_  _20231211_120245/abc_p2p_avalanche_proof_voting_7
2023-12-11T12:03:38.962000Z TestFramework (INFO): Trigger polling from the node...
2023-12-11T12:03:39.203000Z TestFramework (INFO): Check we poll for valid proof
2023-12-11T12:03:45.141000Z TestFramework (INFO): Check we don't poll for subsequent proofs if the cooldown is not elapsed, proof not the favorite
2023-12-11T12:03:45.192000Z TestFramework (INFO): Check we don't poll for subsequent proofs if the cooldown is not elapsed, proof is the favorite
2023-12-11T12:03:45.243000Z TestFramework (INFO): Check we poll for conflicting proof if the proof is not the favorite
2023-12-11T12:03:51.203000Z TestFramework (INFO): Check we poll for conflicting proof if the proof is the favorite
2023-12-11T12:03:51.487000Z TestFramework (INFO): Check we don't poll for proofs that get rejected
2023-12-11T12:03:51.491000Z TestFramework (INFO): Check we don't poll for invalid proofs and get banned
2023-12-11T12:03:55.592000Z TestFramework (INFO): Test proof acceptance
2023-12-11T12:03:56.616000Z TestFramework (INFO): Test the peer replacement rate limit
2023-12-11T12:04:00.832000Z TestFramework (INFO): Test proof rejection
2023-12-11T12:04:01.656000Z TestFramework (INFO): Test proof invalidation
2023-12-11T12:04:06.170000Z TestFramework (INFO): The node will now ignore the invalid proof
2023-12-11T12:04:06.545000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/authproxy.py", line 126, in _request
    return self._get_response()
  File "/work/test/functional/test_framework/authproxy.py", line 216, in _get_response
    http_response = self.__conn.getresponse()
  File "/usr/lib/python3.9/http/client.py", line 1347, in getresponse
    response.begin()
  File "/usr/lib/python3.9/http/client.py", line 307, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python3.9/http/client.py", line 268, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/lib/python3.9/socket.py", line 704, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [Errno 104] Connection reset by peer

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/work/test/functional/test_framework/util.py", line 152, in try_rpc
    fun(*args, **kwds)
  File "/work/test/functional/test_framework/coverage.py", line 47, in __call__
    return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
  File "/work/test/functional/test_framework/authproxy.py", line 175, in __call__
    response, status = self._request(
  File "/work/test/functional/test_framework/authproxy.py", line 132, in _request
    return self._get_response()
  File "/work/test/functional/test_framework/authproxy.py", line 216, in _get_response
    http_response = self.__conn.getresponse()
  File "/usr/lib/python3.9/http/client.py", line 1347, in getresponse
    response.begin()
  File "/usr/lib/python3.9/http/client.py", line 307, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python3.9/http/client.py", line 268, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/lib/python3.9/socket.py", line 704, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [Errno 104] Connection reset by peer

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 147, in main
    self._run_test_internal()
  File "/work/test/functional/test_framework/test_framework.py", line 137, in _run_test_internal
    self.run_test()
  File "/work/test/functional/abc_p2p_avalanche_proof_voting.py", line 135, in run_test
    self.update_tests(node)
  File "/work/test/functional/abc_p2p_avalanche_proof_voting.py", line 311, in update_tests
    assert_raises_rpc_error(
  File "/work/test/functional/test_framework/util.py", line 143, in assert_raises_rpc_error
    assert try_rpc(code, message, fun, *args, **kwds), "No exception raised"
  File "/work/test/functional/test_framework/util.py", line 165, in try_rpc
    raise AssertionError(f"Unexpected exception raised: {type(e).__name__}")
AssertionError: Unexpected exception raised: ConnectionResetError
2023-12-11T12:04:06.599000Z TestFramework (INFO): Stopping nodes
[node 0] Cleaning up leftover process
------- Stderr: -------
Traceback (most recent call last):
  File "/work/test/functional/abc_p2p_avalanche_proof_voting.py", line 567, in <module>
    AvalancheProofVotingTest().main()
  File "/work/test/functional/test_framework/test_framework.py", line 170, in main
    exit_code = self.shutdown()
  File "/work/test/functional/test_framework/test_framework.py", line 396, in shutdown
    self.stop_nodes()
  File "/work/test/functional/test_framework/test_framework.py", line 641, in stop_nodes
    node.stop_node(wait=wait, wait_until_stopped=False)
  File "/work/test/functional/test_framework/test_node.py", line 502, in stop_node
    self.stop(wait=wait)
  File "/work/test/functional/test_framework/coverage.py", line 47, in __call__
    return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
  File "/work/test/functional/test_framework/authproxy.py", line 175, in __call__
    response, status = self._request(
  File "/work/test/functional/test_framework/authproxy.py", line 125, in _request
    self.__conn.request(method, path, postdata, headers)
  File "/usr/lib/python3.9/http/client.py", line 1255, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1301, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1250, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1010, in _send_output
    self.send(msg)
  File "/usr/lib/python3.9/http/client.py", line 950, in send
    self.connect()
  File "/usr/lib/python3.9/http/client.py", line 921, in connect
    self.sock = self._create_connection(
  File "/usr/lib/python3.9/socket.py", line 843, in create_connection
    raise err
  File "/usr/lib/python3.9/socket.py", line 831, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
====== Bitcoin ABC functional tests: abc_p2p_compactproofs.py ======

------- Stdout: -------
2023-12-11T12:04:23.953000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_  _20231211_120245/abc_p2p_compactproofs_12
2023-12-11T12:04:25.303000Z TestFramework (INFO): Check we send a getavaproofs message to our avalanche outbound peers
2023-12-11T12:04:27.294000Z TestFramework (INFO): Check we send periodic getavaproofs message to some of our peers
2023-12-11T12:04:27.345000Z TestFramework (INFO): After the first avaproofs has been received, all the peers are requested periodically
2023-12-11T12:04:27.627000Z TestFramework (INFO): Empty avaproofs will not trigger any request
2023-12-11T12:04:27.628000Z TestFramework (INFO): Check we send a getavaproofs message to our manually connected peers that support avalanche
2023-12-11T12:04:28.620000Z TestFramework (INFO): Check the node responds to getavaproofs messages
2023-12-11T12:04:32.700000Z TestFramework (INFO): Check the node requests the missing proofs after receiving an avaproofs message
2023-12-11T12:04:33.628000Z TestFramework (INFO): The node ignores unsollicited avaproofs
2023-12-11T12:04:33.795000Z TestFramework (INFO): Check no proof is requested if there is no shortid
2023-12-11T12:04:34.059000Z TestFramework (INFO): Check the node requests all the proofs if it known none
2023-12-11T12:04:34.221000Z TestFramework (INFO): Check the node requests only the missing proofs
2023-12-11T12:04:34.390000Z TestFramework (INFO): Check the node don't request prefilled proofs
2023-12-11T12:05:34.539000Z TestFramework.utils (ERROR): wait_until() failed. Predicate: ''''
            self.wait_until(lambda: received_avaproofsreq(peer))
'''
2023-12-11T12:05:34.539000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 147, in main
    self._run_test_internal()
  File "/work/test/functional/test_framework/test_framework.py", line 137, in _run_test_internal
    self.run_test()
  File "/work/test/functional/abc_p2p_compactproofs.py", line 729, in run_test
    self.test_request_missing_proofs()
  File "/work/test/functional/abc_p2p_compactproofs.py", line 445, in test_request_missing_proofs
    expect_indices(
  File "/work/test/functional/abc_p2p_compactproofs.py", line 392, in expect_indices
    self.wait_until(lambda: received_avaproofsreq(peer))
  File "/work/test/functional/test_framework/test_framework.py", line 820, in wait_until
    return wait_until_helper(
  File "/work/test/functional/test_framework/util.py", line 298, in wait_until_helper
    raise AssertionError(
AssertionError: Predicate ''''
            self.wait_until(lambda: received_avaproofsreq(peer))
''' not true after 60.0 seconds
2023-12-11T12:05:34.590000Z TestFramework (INFO): Stopping nodes
[node 0] Cleaning up leftover process
------- Stderr: -------
Traceback (most recent call last):
  File "/work/test/functional/test_framework/authproxy.py", line 125, in _request
    self.__conn.request(method, path, postdata, headers)
  File "/usr/lib/python3.9/http/client.py", line 1255, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1301, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1250, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1049, in _send_output
    self.send(chunk)
  File "/usr/lib/python3.9/http/client.py", line 971, in send
    self.sock.sendall(data)
BrokenPipeError: [Errno 32] Broken pipe

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/work/test/functional/abc_p2p_compactproofs.py", line 737, in <module>
    CompactProofsTest().main()
  File "/work/test/functional/test_framework/test_framework.py", line 170, in main
    exit_code = self.shutdown()
  File "/work/test/functional/test_framework/test_framework.py", line 396, in shutdown
    self.stop_nodes()
  File "/work/test/functional/test_framework/test_framework.py", line 641, in stop_nodes
    node.stop_node(wait=wait, wait_until_stopped=False)
  File "/work/test/functional/test_framework/test_node.py", line 502, in stop_node
    self.stop(wait=wait)
  File "/work/test/functional/test_framework/coverage.py", line 47, in __call__
    return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
  File "/work/test/functional/test_framework/authproxy.py", line 175, in __call__
    response, status = self._request(
  File "/work/test/functional/test_framework/authproxy.py", line 131, in _request
    self.__conn.request(method, path, postdata, headers)
  File "/usr/lib/python3.9/http/client.py", line 1255, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1301, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1250, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1010, in _send_output
    self.send(msg)
  File "/usr/lib/python3.9/http/client.py", line 950, in send
    self.connect()
  File "/usr/lib/python3.9/http/client.py", line 921, in connect
    self.sock = self._create_connection(
  File "/usr/lib/python3.9/socket.py", line 843, in create_connection
    raise err
  File "/usr/lib/python3.9/socket.py", line 831, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
====== Bitcoin ABC functional tests: abc_p2p_getavaaddr.py ======

------- Stdout: -------
2023-12-11T12:04:05.880000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_  _20231211_120245/abc_p2p_getavaaddr_10
2023-12-11T12:04:13.820000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:13.820000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:13.820000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:13.820000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:13.820000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.760000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.760000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.760000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.760000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.761000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.764000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.764000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.764000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.764000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.764000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.764000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.764000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.764000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.764000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.765000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:21.765000Z TestFramework.p2p (WARNING): Connection lost to 127.0.0.1:20641 due to [Errno 104] Connection reset by peer
2023-12-11T12:04:26.765000Z TestFramework (INFO): Check we send a getavaaddr message to our avalanche outbound peers
2023-12-11T12:04:29.257000Z TestFramework (INFO): Check we send a getavaaddr message to our manually connected peers that support avalanche
2023-12-11T12:04:30.598000Z TestFramework (INFO): Check we send a getavaaddr message while our quorum is not established
2023-12-11T12:05:39.620000Z TestFramework.utils (ERROR): wait_until() failed. Predicate: ''''
            self.wait_until(lambda: total_getavaaddr_msg() >= total_getavaaddr + 1)
'''
2023-12-11T12:05:39.620000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 147, in main
    self._run_test_internal()
  File "/work/test/functional/test_framework/test_framework.py", line 137, in _run_test_internal
    self.run_test()
  File "/work/test/functional/abc_p2p_getavaaddr.py", line 536, in run_test
    self.getavaaddr_noquorum()
  File "/work/test/functional/abc_p2p_getavaaddr.py", line 443, in getavaaddr_noquorum
    self.wait_until(sent_single_getavaaddr)
  File "/work/test/functional/test_framework/test_framework.py", line 820, in wait_until
    return wait_until_helper(
  File "/work/test/functional/test_framework/util.py", line 285, in wait_until_helper
    if predicate():
  File "/work/test/functional/abc_p2p_getavaaddr.py", line 438, in sent_single_getavaaddr
    self.wait_until(lambda: total_getavaaddr_msg() >= total_getavaaddr + 1)
  File "/work/test/functional/test_framework/test_framework.py", line 820, in wait_until
    return wait_until_helper(
  File "/work/test/functional/test_framework/util.py", line 298, in wait_until_helper
    raise AssertionError(
AssertionError: Predicate ''''
            self.wait_until(lambda: total_getavaaddr_msg() >= total_getavaaddr + 1)
''' not true after 60.0 seconds
2023-12-11T12:05:39.670000Z TestFramework (INFO): Stopping nodes
2023-12-11T12:05:40.273000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_  _20231211_120245/abc_p2p_getavaaddr_10
2023-12-11T12:05:40.273000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_  _20231211_120245/abc_p2p_getavaaddr_10/test_framework.log
2023-12-11T12:05:40.273000Z TestFramework (ERROR): 
2023-12-11T12:05:40.273000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_  _20231211_120245/abc_p2p_getavaaddr_10' to consolidate all logs
2023-12-11T12:05:40.273000Z TestFramework (ERROR): 
2023-12-11T12:05:40.273000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2023-12-11T12:05:40.273000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2023-12-11T12:05:40.273000Z TestFramework (ERROR):

Each failure log is accessible here:
Bitcoin ABC functional tests: abc_feature_proof_cleanup.py
Bitcoin ABC functional tests: abc_p2p_avalanche_proof_voting.py
Bitcoin ABC functional tests: abc_p2p_compactproofs.py
Bitcoin ABC functional tests: abc_p2p_getavaaddr.py

Fabien planned changes to this revision.Dec 11 2023, 12:32
Fabien planned changes to this revision.Dec 11 2023, 15:18

The test failure in the followup is likely introduced here

Fix the subtle behavior change

This revision is now accepted and ready to land.Dec 11 2023, 19:51