• Brian Tiger Chow's avatar
    fix(bitswap.decision.Engine) enqueue only the freshest messages · e82011a8
    Brian Tiger Chow authored
    Before, the engine worker would pop a task and block on send to the
    bitswap worker even if the bitswap worker wasn't to receive. Since the
    task could have been invalidated during this blocking send, a small
    number of stale (already acquired) blocks would be send to partners.
    
    Now, tasks are only popped off of the queue when bitswap is ready to
    send them over the wire. This is accomplished by removing the
    outboxChanBuffer and implementing a two-phase communication sequence.
    e82011a8
engine_test.go 5.36 KB