97e730cf51
This commit fixes a possible deadlock within the packetQueue that could be caused by the following circular waiting dependency: packetCoordinator woken up, grabs lock, queue isn’t empty, attempts to send packet to link (lock still held) -> channelLink has commitment overflow, attempts to add new item to packet queue, in AddPkt grabs Lock -> circular wait. We avoid this scenario by *not* holding the lock within the packetCoordinator when we attempt to send a new packet to the switch. Instead, we release the lock before the second select statement in the main processing loop. |
||
---|---|---|
.. | ||
circuit.go | ||
failure.go | ||
interfaces.go | ||
iterator.go | ||
link_test.go | ||
link.go | ||
log.go | ||
mock.go | ||
packet.go | ||
queue_test.go | ||
queue.go | ||
switch_test.go | ||
switch.go | ||
test_utils.go |