-
Notifications
You must be signed in to change notification settings - Fork 3.6k
fixing flakiness in voting and forked chain tests #10381
Conversation
} else { | ||
} | ||
else if ( msg.reason == benign_other ) { | ||
if ( retry ) fc_dlog( logger, "received benign_other reason, retrying to connect"); |
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.
Note retry here only means immediate retry. It would retry either way.
@@ -1221,7 +1221,10 @@ def getNextCleanProductionCycle(self, trans): | |||
# The voted schedule should be promoted now, then need to wait for that to become irreversible | |||
votingTallyWindow=120 #could be up to 120 blocks before the votes were tallied | |||
promotedBlockNum=self.getHeadBlockNum()+votingTallyWindow | |||
self.waitForIrreversibleBlock(promotedBlockNum, timeout=rounds/2) | |||
# There was waitForIrreversibleBlock but due to bug it was waiting for head and not lib. |
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.
Go ahead and fix waitForIrreversibleBlock
which should be as simple as changing the default argument. It is fine to leave this as you have it, but should probably update this comment.
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 had fixed it, which is why this is taking longer. He could have extended the test, but since it had never failed before, we presumed it was fine to replace this call with what it had been doing before (unintentionally)
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'v fine with it using waitForBlock
, but we should fix waitForIrreversibleBlock
which is still:
def waitForIrreversibleBlock(self, blockNum, timeout=WaitSpec.default(), blockType=BlockType.head):
return self.waitForBlock(blockNum, timeout=timeout, blockType=blockType)
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.
ahh, what I fixed was waitForBlock to actually honor blockType, I missed that waitForIrreversibleBlock looked like this. Which then makes me wonder why Dmytro's change had any effect.
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.
@heifner perhaps you are looking at wrong branch.
def waitForIrreversibleBlock(self, blockNum, timeout=WaitSpec.default()):
return self.waitForBlock(blockNum, timeout=timeout, blockType=BlockType.lib)
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.
Apparently so.
Change Description
Fixes:
Node.waitForIrreversibleBlock
where it was waiting for head instead of lib. After fix this increased execution time and lead to timeout fails.go_away_message
being sent with statusbenign_other
due to unknown block requested. Fix adding retry after closing connection.Change Type
Select ONE:
Testing Changes
Select ANY that apply:
Consensus Changes
API Changes
Documentation Additions