-
Notifications
You must be signed in to change notification settings - Fork 36.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[qa] util: Remove unused sync_chain #12643
Conversation
fa310b0
to
fa91820
Compare
""" | ||
Wait until everybody has the same best block | ||
""" | ||
while timeout > 0: | ||
best_hash = [x.getbestblockhash() for x in rpc_connections] | ||
if best_hash == [best_hash[0]] * len(best_hash): | ||
return | ||
time.sleep(wait) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Keeping in line with #12553, preferring wait_until when possible, this whole function could just be cleaned up as
def sync_blocks(rpc_connections, *, wait=1, timeout=60):
wait_until(lambda: len(set([x.getbestblockhash() for x in rpc_connections])) is 1, timeout=timeout, wait=wait)
Although a wait
argument (or maybe sleep
is a better name) needs to be added to wait_until
, specifying the sleep period between checks.
if flush_scheduler: | ||
for r in rpc_connections: | ||
r.syncwithvalidationinterfacequeue() | ||
return | ||
time.sleep(wait) | ||
timeout -= wait | ||
raise AssertionError("Mempool sync failed") | ||
cur_time = time.time() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Similar to the above comment, this can just be cleaned up to use wait_util
like
def sync_mempools(rpc_connections, *, wait=1, timeout=60, flush_scheduler=True):
"""
Wait until everybody has the same transactions in their memory
pools
"""
def equal_mempool():
mempool_sets = [set(r.getrawmempool()) for r in rpc_connections]
return mempool_sets.count(mempool_sets[0]) == len(mempool_sets)
wait_until(equal_mempool, timeout=timeout, wait=wait)
if flush_scheduler:
for r in rpc_connections:
r.syncwithvalidationinterfacequeue()
I tested both changes in this commit and everything seems to pass, however let me know if you thinks its better suited for a follow up PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems that this would make it harder to print the mempools in case of an error, which seems useful to me.
Though, I switched to your code suggesting count
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Makes sense
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I switched to your code suggesting count.
Nice @conscott.
fa91820
to
faed9d5
Compare
Tested ACK faed9d59a9fffa01debc41121deccfdeb28f35cb |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
utACK faed9d5.
if flush_scheduler: | ||
for r in rpc_connections: | ||
r.syncwithvalidationinterfacequeue() | ||
return | ||
time.sleep(wait) | ||
timeout -= wait | ||
raise AssertionError("Mempool sync failed") | ||
cur_time = time.time() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I switched to your code suggesting count.
Nice @conscott.
# initial max height because the two RPCs look at different internal global | ||
# variables (chainActive vs latestBlock) and the former gets updated | ||
# earlier. | ||
maxheight = max(x.getblockcount() for x in rpc_connections) | ||
start_time = cur_time = time.time() | ||
while cur_time <= start_time + timeout: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit, simplification:
stop_time = time.time() + timeout;
while time.time() <= stop_time:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
faed9d5
to
fa1436c
Compare
fa1436c [qa] util: Remove unused sync_chain (MarcoFalke) Pull request description: The util function `sync_blocks` already checks for equal chains, so we can remove the unused `sync_chain`. Also cleaned up the errors that are printed in case of timeout: ``` AssertionError: Block sync timed out: '72a3a3e9dcfd0a09204c3447af0f481d19641eeadbe6a91b8e680ed614bc7712' '5032af4ae22ae7a21afdc9d9f516877309c4dd8ef2ecadb9354be7088439b4a6' '5032af4ae22ae7a21afdc9d9f516877309c4dd8ef2ecadb9354be7088439b4a6' ``` and ``` AssertionError: Mempool sync timed out: {'c2af943d9b321c36e0f5a153a9d3d8b11bdd46ceb28e38f5fd2c722e3edb3563'} set() set() ``` Tree-SHA512: cb4ad30e3e3773072f59afa2c81cfa27bd8f389a93f02acb919990298627fcfbaa53a3d3944d827cc8a5d009871e42a47ea09e9bb93e85c22e3af6a24a574e5d
830eadf Solving rpc_fundrawtransaction.py amount rounding issue. (furszy) 6cf9778 ATMP: Do not try to get the inputs in zc tx. (furszy) 38efbb9 sync_blocks: Increase debugging to hunt down mempool_reorg intermittent failure (furszy) dd7855c sync_blocks: check that peer is connected when calling sync_*. (furszy) bc7d542 functional tests, sync_blocks only cleanup. (furszy) 1ae04e7 Fix mempool package tracking edge case (Suhas Daftuar) f4052aa Add test showing bug in mempool packages (furszy) 691749f rpc: Accept scientific notation for monetary amounts in JSON (furszy) b0f9051 Fix removeForReorg to use MedianTimePast (Suhas Daftuar) 92583c6 Don't call removeForReorg if DisconnectTip fails (Suhas Daftuar) bb77808 Track coinbase spends in CTxMemPoolEntry (furszy) f607f18 Change GetPriority calculation. (furszy) ac3c0f1 Remove default arguments for CTxMemPoolEntry() (furszy) 07eae9f Modify variable names for entry height and priority (furszy) 4356b31 Fix bug in mempool_tests unit test (Alex Morcos) f35ebe3 removeForReorg calls once-per-disconnect-> once-per-reorg (furszy) 7f5737f Fix comment in removeForReorg (furszy) 8ad82ca Fix removal of time-locked transactions during reorg (furszy) de74ab3 Move ProcessBlockFound reserveKey to optional. (furszy) Pull request description: More back ports and adaptations over the RPC values parsing and mempool. We need to get closer in this area :) . * bitcoin#6379 * bitcoin#6715 * bitcoin#6915 * bitcoin#7007 * bitcoin#7008 * bitcoin#12643 * bitcoin#18474 * bitcoin#18704 ACKs for top commit: Fuzzbawls: ACK 830eadf random-zebra: ACK 830eadf and merging... Tree-SHA512: 014b31008aaf09ebf838e21da59379a45565df440a77d66a0cd53e824a6d69673d6975d08243a43fb5a7ebd1a35c07d1d07412a87216b42e9d6f17a1c0bc5708
fa1436c [qa] util: Remove unused sync_chain (MarcoFalke) Pull request description: The util function `sync_blocks` already checks for equal chains, so we can remove the unused `sync_chain`. Also cleaned up the errors that are printed in case of timeout: ``` AssertionError: Block sync timed out: '72a3a3e9dcfd0a09204c3447af0f481d19641eeadbe6a91b8e680ed614bc7712' '5032af4ae22ae7a21afdc9d9f516877309c4dd8ef2ecadb9354be7088439b4a6' '5032af4ae22ae7a21afdc9d9f516877309c4dd8ef2ecadb9354be7088439b4a6' ``` and ``` AssertionError: Mempool sync timed out: {'c2af943d9b321c36e0f5a153a9d3d8b11bdd46ceb28e38f5fd2c722e3edb3563'} set() set() ``` Tree-SHA512: cb4ad30e3e3773072f59afa2c81cfa27bd8f389a93f02acb919990298627fcfbaa53a3d3944d827cc8a5d009871e42a47ea09e9bb93e85c22e3af6a24a574e5d
fa1436c [qa] util: Remove unused sync_chain (MarcoFalke) Pull request description: The util function `sync_blocks` already checks for equal chains, so we can remove the unused `sync_chain`. Also cleaned up the errors that are printed in case of timeout: ``` AssertionError: Block sync timed out: '72a3a3e9dcfd0a09204c3447af0f481d19641eeadbe6a91b8e680ed614bc7712' '5032af4ae22ae7a21afdc9d9f516877309c4dd8ef2ecadb9354be7088439b4a6' '5032af4ae22ae7a21afdc9d9f516877309c4dd8ef2ecadb9354be7088439b4a6' ``` and ``` AssertionError: Mempool sync timed out: {'c2af943d9b321c36e0f5a153a9d3d8b11bdd46ceb28e38f5fd2c722e3edb3563'} set() set() ``` Tree-SHA512: cb4ad30e3e3773072f59afa2c81cfa27bd8f389a93f02acb919990298627fcfbaa53a3d3944d827cc8a5d009871e42a47ea09e9bb93e85c22e3af6a24a574e5d
Signed-off-by: pasta <[email protected]>
fa1436c [qa] util: Remove unused sync_chain (MarcoFalke) Pull request description: The util function `sync_blocks` already checks for equal chains, so we can remove the unused `sync_chain`. Also cleaned up the errors that are printed in case of timeout: ``` AssertionError: Block sync timed out: '72a3a3e9dcfd0a09204c3447af0f481d19641eeadbe6a91b8e680ed614bc7712' '5032af4ae22ae7a21afdc9d9f516877309c4dd8ef2ecadb9354be7088439b4a6' '5032af4ae22ae7a21afdc9d9f516877309c4dd8ef2ecadb9354be7088439b4a6' ``` and ``` AssertionError: Mempool sync timed out: {'c2af943d9b321c36e0f5a153a9d3d8b11bdd46ceb28e38f5fd2c722e3edb3563'} set() set() ``` Tree-SHA512: cb4ad30e3e3773072f59afa2c81cfa27bd8f389a93f02acb919990298627fcfbaa53a3d3944d827cc8a5d009871e42a47ea09e9bb93e85c22e3af6a24a574e5d
fa1436c [qa] util: Remove unused sync_chain (MarcoFalke) Pull request description: The util function `sync_blocks` already checks for equal chains, so we can remove the unused `sync_chain`. Also cleaned up the errors that are printed in case of timeout: ``` AssertionError: Block sync timed out: '72a3a3e9dcfd0a09204c3447af0f481d19641eeadbe6a91b8e680ed614bc7712' '5032af4ae22ae7a21afdc9d9f516877309c4dd8ef2ecadb9354be7088439b4a6' '5032af4ae22ae7a21afdc9d9f516877309c4dd8ef2ecadb9354be7088439b4a6' ``` and ``` AssertionError: Mempool sync timed out: {'c2af943d9b321c36e0f5a153a9d3d8b11bdd46ceb28e38f5fd2c722e3edb3563'} set() set() ``` Tree-SHA512: cb4ad30e3e3773072f59afa2c81cfa27bd8f389a93f02acb919990298627fcfbaa53a3d3944d827cc8a5d009871e42a47ea09e9bb93e85c22e3af6a24a574e5d
fa1436c [qa] util: Remove unused sync_chain (MarcoFalke) Pull request description: The util function `sync_blocks` already checks for equal chains, so we can remove the unused `sync_chain`. Also cleaned up the errors that are printed in case of timeout: ``` AssertionError: Block sync timed out: '72a3a3e9dcfd0a09204c3447af0f481d19641eeadbe6a91b8e680ed614bc7712' '5032af4ae22ae7a21afdc9d9f516877309c4dd8ef2ecadb9354be7088439b4a6' '5032af4ae22ae7a21afdc9d9f516877309c4dd8ef2ecadb9354be7088439b4a6' ``` and ``` AssertionError: Mempool sync timed out: {'c2af943d9b321c36e0f5a153a9d3d8b11bdd46ceb28e38f5fd2c722e3edb3563'} set() set() ``` Tree-SHA512: cb4ad30e3e3773072f59afa2c81cfa27bd8f389a93f02acb919990298627fcfbaa53a3d3944d827cc8a5d009871e42a47ea09e9bb93e85c22e3af6a24a574e5d
The util function
sync_blocks
already checks for equal chains, so we can remove the unusedsync_chain
.Also cleaned up the errors that are printed in case of timeout:
and