mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-11 07:37:54 +00:00
Add race-condition debugging tool to mininode
This commit is contained in:
parent
605c17844e
commit
82a0ce09b4
@ -1004,6 +1004,18 @@ class msg_reject(object):
|
|||||||
class NodeConnCB(object):
|
class NodeConnCB(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.verack_received = False
|
self.verack_received = False
|
||||||
|
# deliver_sleep_time is helpful for debugging race conditions in p2p
|
||||||
|
# tests; it causes message delivery to sleep for the specified time
|
||||||
|
# before acquiring the global lock and delivering the next message.
|
||||||
|
self.deliver_sleep_time = None
|
||||||
|
|
||||||
|
def set_deliver_sleep_time(self, value):
|
||||||
|
with mininode_lock:
|
||||||
|
self.deliver_sleep_time = value
|
||||||
|
|
||||||
|
def get_deliver_sleep_time(self):
|
||||||
|
with mininode_lock:
|
||||||
|
return self.deliver_sleep_time
|
||||||
|
|
||||||
# Spin until verack message is received from the node.
|
# Spin until verack message is received from the node.
|
||||||
# Tests may want to use this as a signal that the test can begin.
|
# Tests may want to use this as a signal that the test can begin.
|
||||||
@ -1017,6 +1029,9 @@ class NodeConnCB(object):
|
|||||||
time.sleep(0.05)
|
time.sleep(0.05)
|
||||||
|
|
||||||
def deliver(self, conn, message):
|
def deliver(self, conn, message):
|
||||||
|
deliver_sleep = self.get_deliver_sleep_time()
|
||||||
|
if deliver_sleep is not None:
|
||||||
|
time.sleep(deliver_sleep)
|
||||||
with mininode_lock:
|
with mininode_lock:
|
||||||
try:
|
try:
|
||||||
getattr(self, 'on_' + message.command)(conn, message)
|
getattr(self, 'on_' + message.command)(conn, message)
|
||||||
|
Loading…
Reference in New Issue
Block a user